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;
     }
 
     /**

Reply via email to