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")