This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch camel-3.18.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-3.18.x by this push:
new 7c977526368 CAMEL-18980: Fix snmp V1
7c977526368 is described below
commit 7c9775263684ff12e24c99b9ef1d4a2f2e4421b1
Author: Croway <[email protected]>
AuthorDate: Tue Jan 31 18:18:49 2023 +0100
CAMEL-18980: Fix snmp V1
---
.../camel/component/snmp/SnmpTrapProducer.java | 2 +-
.../snmp/{TrapTest.java => AbstractTrapTest.java} | 56 ++---------------
.../snmp/{TrapTest.java => Snmpv1TrapTest.java} | 70 ++++------------------
.../snmp/{TrapTest.java => Snmpv2TrapTest.java} | 54 ++---------------
4 files changed, 20 insertions(+), 162 deletions(-)
diff --git
a/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpTrapProducer.java
b/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpTrapProducer.java
index 98fb853b96e..034fec6e5ee 100644
---
a/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpTrapProducer.java
+++
b/components/camel-snmp/src/main/java/org/apache/camel/component/snmp/SnmpTrapProducer.java
@@ -111,11 +111,11 @@ public class SnmpTrapProducer extends DefaultProducer {
trap.setErrorIndex(0);
trap.setErrorStatus(0);
- trap.setMaxRepetitions(0);
if (this.endpoint.getSnmpVersion() == SnmpConstants.version1) {
trap.setType(PDU.V1TRAP);
} else {
trap.setType(PDU.TRAP);
+ trap.setMaxRepetitions(0);
}
LOG.debug("SnmpTrap: sending");
diff --git
a/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/TrapTest.java
b/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/AbstractTrapTest.java
similarity index 54%
copy from
components/camel-snmp/src/test/java/org/apache/camel/component/snmp/TrapTest.java
copy to
components/camel-snmp/src/test/java/org/apache/camel/component/snmp/AbstractTrapTest.java
index f6507bd25df..b955596d0b2 100644
---
a/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/TrapTest.java
+++
b/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/AbstractTrapTest.java
@@ -21,50 +21,25 @@ import java.util.Vector;
import org.apache.camel.Endpoint;
import org.apache.camel.Exchange;
-import org.apache.camel.LoggingLevel;
import org.apache.camel.Producer;
-import org.apache.camel.RoutesBuilder;
-import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit5.CamelTestSupport;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.snmp4j.PDU;
-import org.snmp4j.mp.SnmpConstants;
-import org.snmp4j.smi.OID;
-import org.snmp4j.smi.OctetString;
-import org.snmp4j.smi.TimeTicks;
-import org.snmp4j.smi.Variable;
import org.snmp4j.smi.VariableBinding;
import static org.junit.jupiter.api.Assertions.assertEquals;
-/**
- * This test covers both producing and consuming snmp traps
- */
-public class TrapTest extends CamelTestSupport {
- private static final Logger LOG = LoggerFactory.getLogger(TrapTest.class);
+public abstract class AbstractTrapTest extends CamelTestSupport {
+ private static final Logger LOG =
LoggerFactory.getLogger(AbstractTrapTest.class);
- @Test
- public void testStartRoute() {
- // do nothing here , just make sure the camel route can started.
- }
+ protected abstract PDU createTrap();
@Test
public void testSendReceiveTraps() throws Exception {
- // Create a trap PDU
- PDU trap = new PDU();
- trap.setType(PDU.TRAP);
-
- OID oid = new OID("1.2.3.4.5");
- trap.add(new VariableBinding(SnmpConstants.snmpTrapOID, oid));
- trap.add(new VariableBinding(SnmpConstants.sysUpTime, new
TimeTicks(5000))); // put your uptime here
- trap.add(new VariableBinding(SnmpConstants.sysDescr, new
OctetString("System Description")));
-
- //Add Payload
- Variable var = new OctetString("some string");
- trap.add(new VariableBinding(oid, var));
+ PDU trap = createTrap();
// Send it
LOG.info("Sending pdu " + trap);
@@ -95,27 +70,4 @@ public class TrapTest extends CamelTestSupport {
}
}
}
-
- /**
- * RouteBuilders for the SNMP TRAP producer and consumer
- */
- @Override
- protected RoutesBuilder[] createRouteBuilders() {
- return new RoutesBuilder[] {
- new RouteBuilder() {
- public void configure() {
- from("direct:snmptrap")
- .log(LoggingLevel.INFO, "Sending Trap pdu
${body}")
-
.to("snmp:127.0.0.1:1662?protocol=udp&type=TRAP&snmpVersion=" +
SnmpConstants.version2c);
- }
- },
- new RouteBuilder() {
- public void configure() {
-
from("snmp:0.0.0.0:1662?protocol=udp&type=TRAP&snmpVersion=" +
SnmpConstants.version2c)
- .id("SnmpTrapConsumer")
- .to("mock:result");
- }
- }
- };
- }
}
diff --git
a/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/TrapTest.java
b/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/Snmpv1TrapTest.java
similarity index 54%
copy from
components/camel-snmp/src/test/java/org/apache/camel/component/snmp/TrapTest.java
copy to
components/camel-snmp/src/test/java/org/apache/camel/component/snmp/Snmpv1TrapTest.java
index f6507bd25df..a740e9f27f9 100644
---
a/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/TrapTest.java
+++
b/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/Snmpv1TrapTest.java
@@ -16,21 +16,11 @@
*/
package org.apache.camel.component.snmp;
-import java.util.List;
-import java.util.Vector;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
import org.apache.camel.LoggingLevel;
-import org.apache.camel.Producer;
import org.apache.camel.RoutesBuilder;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.snmp4j.PDU;
+import org.snmp4j.PDUv1;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.OctetString;
@@ -38,62 +28,24 @@ import org.snmp4j.smi.TimeTicks;
import org.snmp4j.smi.Variable;
import org.snmp4j.smi.VariableBinding;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-/**
- * This test covers both producing and consuming snmp traps
- */
-public class TrapTest extends CamelTestSupport {
- private static final Logger LOG = LoggerFactory.getLogger(TrapTest.class);
-
- @Test
- public void testStartRoute() {
- // do nothing here , just make sure the camel route can started.
- }
+public class Snmpv1TrapTest extends AbstractTrapTest {
- @Test
- public void testSendReceiveTraps() throws Exception {
- // Create a trap PDU
- PDU trap = new PDU();
- trap.setType(PDU.TRAP);
+ @Override
+ public PDU createTrap() {
+ PDUv1 trap = new PDUv1();
+ trap.setGenericTrap(PDUv1.ENTERPRISE_SPECIFIC);
+ trap.setSpecificTrap(1);
OID oid = new OID("1.2.3.4.5");
trap.add(new VariableBinding(SnmpConstants.snmpTrapOID, oid));
trap.add(new VariableBinding(SnmpConstants.sysUpTime, new
TimeTicks(5000))); // put your uptime here
trap.add(new VariableBinding(SnmpConstants.sysDescr, new
OctetString("System Description")));
+ trap.setEnterprise(oid);
//Add Payload
Variable var = new OctetString("some string");
trap.add(new VariableBinding(oid, var));
-
- // Send it
- LOG.info("Sending pdu " + trap);
- Endpoint endpoint = context.getEndpoint("direct:snmptrap");
- Exchange exchange = endpoint.createExchange();
- exchange.getIn().setBody(trap);
- Producer producer = endpoint.createProducer();
- producer.process(exchange);
-
- synchronized (this) {
- Thread.sleep(1000);
- }
-
- // If all goes right it should come here
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMessageCount(1);
- mock.assertIsSatisfied();
-
- List<Exchange> exchanges = mock.getExchanges();
- SnmpMessage msg = (SnmpMessage) exchanges.get(0).getIn();
- PDU receivedTrap = msg.getSnmpMessage();
- assertEquals(trap, receivedTrap);
- if (LOG.isInfoEnabled()) {
- LOG.info("Received SNMP TRAP:");
- Vector<? extends VariableBinding> variableBindings =
receivedTrap.getVariableBindings();
- for (VariableBinding vb : variableBindings) {
- LOG.info(" " + vb.toString());
- }
- }
+ return trap;
}
/**
@@ -106,12 +58,12 @@ public class TrapTest extends CamelTestSupport {
public void configure() {
from("direct:snmptrap")
.log(LoggingLevel.INFO, "Sending Trap pdu
${body}")
-
.to("snmp:127.0.0.1:1662?protocol=udp&type=TRAP&snmpVersion=" +
SnmpConstants.version2c);
+
.to("snmp:127.0.0.1:1662?protocol=udp&type=TRAP&snmpVersion=0");
}
},
new RouteBuilder() {
public void configure() {
-
from("snmp:0.0.0.0:1662?protocol=udp&type=TRAP&snmpVersion=" +
SnmpConstants.version2c)
+
from("snmp:0.0.0.0:1662?protocol=udp&type=TRAP&snmpVersion=0")
.id("SnmpTrapConsumer")
.to("mock:result");
}
diff --git
a/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/TrapTest.java
b/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/Snmpv2TrapTest.java
similarity index 59%
rename from
components/camel-snmp/src/test/java/org/apache/camel/component/snmp/TrapTest.java
rename to
components/camel-snmp/src/test/java/org/apache/camel/component/snmp/Snmpv2TrapTest.java
index f6507bd25df..1f210b2e8e8 100644
---
a/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/TrapTest.java
+++
b/components/camel-snmp/src/test/java/org/apache/camel/component/snmp/Snmpv2TrapTest.java
@@ -16,20 +16,9 @@
*/
package org.apache.camel.component.snmp;
-import java.util.List;
-import java.util.Vector;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.Exchange;
import org.apache.camel.LoggingLevel;
-import org.apache.camel.Producer;
import org.apache.camel.RoutesBuilder;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.snmp4j.PDU;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.smi.OID;
@@ -38,21 +27,13 @@ import org.snmp4j.smi.TimeTicks;
import org.snmp4j.smi.Variable;
import org.snmp4j.smi.VariableBinding;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
/**
* This test covers both producing and consuming snmp traps
*/
-public class TrapTest extends CamelTestSupport {
- private static final Logger LOG = LoggerFactory.getLogger(TrapTest.class);
-
- @Test
- public void testStartRoute() {
- // do nothing here , just make sure the camel route can started.
- }
+public class Snmpv2TrapTest extends AbstractTrapTest {
- @Test
- public void testSendReceiveTraps() throws Exception {
+ @Override
+ protected PDU createTrap() {
// Create a trap PDU
PDU trap = new PDU();
trap.setType(PDU.TRAP);
@@ -66,34 +47,7 @@ public class TrapTest extends CamelTestSupport {
Variable var = new OctetString("some string");
trap.add(new VariableBinding(oid, var));
- // Send it
- LOG.info("Sending pdu " + trap);
- Endpoint endpoint = context.getEndpoint("direct:snmptrap");
- Exchange exchange = endpoint.createExchange();
- exchange.getIn().setBody(trap);
- Producer producer = endpoint.createProducer();
- producer.process(exchange);
-
- synchronized (this) {
- Thread.sleep(1000);
- }
-
- // If all goes right it should come here
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMessageCount(1);
- mock.assertIsSatisfied();
-
- List<Exchange> exchanges = mock.getExchanges();
- SnmpMessage msg = (SnmpMessage) exchanges.get(0).getIn();
- PDU receivedTrap = msg.getSnmpMessage();
- assertEquals(trap, receivedTrap);
- if (LOG.isInfoEnabled()) {
- LOG.info("Received SNMP TRAP:");
- Vector<? extends VariableBinding> variableBindings =
receivedTrap.getVariableBindings();
- for (VariableBinding vb : variableBindings) {
- LOG.info(" " + vb.toString());
- }
- }
+ return trap;
}
/**