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 <federico.mariani.1...@gmail.com> 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; } /**