This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 43fe17e7173 CAMEL-21332: camel-smpp - Make test more roboust
43fe17e7173 is described below

commit 43fe17e7173038a7dc62c72bd438c8d0d3791577
Author: Claus Ibsen <[email protected]>
AuthorDate: Tue Oct 8 16:11:16 2024 +0200

    CAMEL-21332: camel-smpp - Make test more roboust
---
 .../smpp/MessageReceiverListenerImpl.java          | 24 ++++++++++++++++++++++
 .../smpp/integration/SmppTRXProducerIT.java        | 15 ++++++++++----
 2 files changed, 35 insertions(+), 4 deletions(-)

diff --git 
a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/MessageReceiverListenerImpl.java
 
b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/MessageReceiverListenerImpl.java
index 6aa2a12f34c..484a503f1c3 100644
--- 
a/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/MessageReceiverListenerImpl.java
+++ 
b/components/camel-smpp/src/main/java/org/apache/camel/component/smpp/MessageReceiverListenerImpl.java
@@ -16,6 +16,9 @@
  */
 package org.apache.camel.component.smpp;
 
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
 import org.apache.camel.Consumer;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
@@ -45,6 +48,7 @@ public class MessageReceiverListenerImpl implements 
MessageReceiverListener {
     private SmppEndpoint endpoint;
     private Processor processor;
     private ExceptionHandler exceptionHandler;
+    private final CountDownLatch initialized = new CountDownLatch(1);
 
     public MessageReceiverListenerImpl(SmppConsumer consumer, SmppEndpoint 
endpoint, Processor processor,
                                        ExceptionHandler exceptionHandler) {
@@ -52,6 +56,7 @@ public class MessageReceiverListenerImpl implements 
MessageReceiverListener {
         this.endpoint = endpoint;
         this.processor = processor;
         this.exceptionHandler = exceptionHandler;
+        this.initialized.countDown();
     }
 
     public MessageReceiverListenerImpl(SmppEndpoint endpoint, String 
messageReceiverRouteId) throws Exception {
@@ -65,11 +70,18 @@ public class MessageReceiverListenerImpl implements 
MessageReceiverListener {
             this.consumer = route.getConsumer();
             this.processor = this.consumer.getProcessor();
             this.exceptionHandler = new 
LoggingExceptionHandler(endpoint.getCamelContext(), this.getClass());
+            this.initialized.countDown();
         });
     }
 
     @Override
     public void onAcceptAlertNotification(AlertNotification alertNotification) 
{
+        try {
+            // wait for initialization in case consumer is active before 
startup listener above has been executed
+            initialized.await(10, TimeUnit.SECONDS);
+        } catch (InterruptedException e) {
+            // ignore
+        }
         LOG.debug("Received an alertNotification {}", alertNotification);
 
         Exchange exchange = 
createOnAcceptAlertNotificationExchange(alertNotification);
@@ -88,6 +100,12 @@ public class MessageReceiverListenerImpl implements 
MessageReceiverListener {
 
     @Override
     public void onAcceptDeliverSm(DeliverSm deliverSm) throws 
ProcessRequestException {
+        try {
+            // wait for initialization in case consumer is active before 
startup listener above has been executed
+            initialized.await(10, TimeUnit.SECONDS);
+        } catch (InterruptedException e) {
+            // ignore
+        }
         LOG.debug("Received a deliverSm {}", deliverSm);
 
         Exchange exchange;
@@ -115,6 +133,12 @@ public class MessageReceiverListenerImpl implements 
MessageReceiverListener {
 
     @Override
     public DataSmResult onAcceptDataSm(DataSm dataSm, Session session) throws 
ProcessRequestException {
+        try {
+            // wait for initialization in case consumer is active before 
startup listener above has been executed
+            initialized.await(10, TimeUnit.SECONDS);
+        } catch (InterruptedException e) {
+            // ignore
+        }
         LOG.debug("Received a dataSm {}", dataSm);
 
         MessageId newMessageId = messageIDGenerator.newMessageId();
diff --git 
a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/integration/SmppTRXProducerIT.java
 
b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/integration/SmppTRXProducerIT.java
index aea09761b47..eeee595c7ac 100644
--- 
a/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/integration/SmppTRXProducerIT.java
+++ 
b/components/camel-smpp/src/test/java/org/apache/camel/component/smpp/integration/SmppTRXProducerIT.java
@@ -26,6 +26,7 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.component.smpp.SmppConstants;
 import org.apache.camel.component.smpp.SmppMessageType;
+import org.apache.camel.test.AvailablePortFinder;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.jsmpp.examples.SMPPServerSimulator;
 import org.junit.jupiter.api.AfterAll;
@@ -38,7 +39,12 @@ import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.fail;
 
 class SmppTRXProducerIT extends CamelTestSupport {
-    private static final Thread SMPP_SERVER_SIMULATOR = new Thread(() -> 
SMPPServerSimulator.main(null));
+
+    private static int PORT = 8200; // use private port to avoid reusing from 
previous tests
+    private static final Thread SMPP_SERVER_SIMULATOR = new Thread(() -> {
+        System.setProperty("jsmpp.simulator.port", "" + PORT);
+        SMPPServerSimulator.main(null);
+    });
 
     @EndpointInject("mock:result")
     private MockEndpoint result;
@@ -54,6 +60,7 @@ class SmppTRXProducerIT extends CamelTestSupport {
 
     @BeforeAll
     public static void runSMPPServerSimulator() {
+        PORT = AvailablePortFinder.getNextAvailable(8200, 9999);
         SMPP_SERVER_SIMULATOR.start();
     }
 
@@ -93,7 +100,7 @@ class SmppTRXProducerIT extends CamelTestSupport {
                 @Override
                 public void configure() {
                     from("direct:start2")
-                            
.to("smpp://j@localhost:8056?password=jpwd&systemType=producer" +
+                            .to("smpp://j@localhost:" + PORT + 
"?password=jpwd&systemType=producer" +
                                 
"&messageReceiverRouteId=TYPO_IN_MessageReceiverRouteId");
                 }
             });
@@ -115,7 +122,7 @@ class SmppTRXProducerIT extends CamelTestSupport {
             @Override
             public void configure() {
                 from("direct:start2")
-                        
.to("smpp://j@localhost:8056?password=jpwd&systemType=producer" +
+                        .to("smpp://j@localhost:" + PORT + 
"?password=jpwd&systemType=producer" +
                             
"&messageReceiverRouteId=testMessageReceiverRouteId2");
             }
         });
@@ -134,7 +141,7 @@ class SmppTRXProducerIT extends CamelTestSupport {
             @Override
             public void configure() {
                 from("direct:start")
-                        
.to("smpp://j@localhost:8056?password=jpwd&systemType=producer" +
+                        .to("smpp://j@localhost:" + PORT + 
"?password=jpwd&systemType=producer" +
                             
"&messageReceiverRouteId=testMessageReceiverRouteId");
 
                 from("direct:messageReceiver").id("testMessageReceiverRouteId")

Reply via email to