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

gnodet 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 60bd8b2d67bf CAMEL-19542: Fix flaky camel-sjms surefire tests
60bd8b2d67bf is described below

commit 60bd8b2d67bfe6dd02a02c55fce9117caca5a6b0
Author: Guillaume Nodet <[email protected]>
AuthorDate: Thu Jul 2 23:55:44 2026 +0200

    CAMEL-19542: Fix flaky camel-sjms surefire tests
    
    Replace Thread.sleep waits in test methods with explicit assertion timeouts 
to prevent intermittent CI failures under load.
    
    - Remove Thread.sleep(3000) from InOutConsumerTopicTest and 
InOnlyConsumerAsyncFalseTest test methods
    - Add explicit 20-second timeout to MockEndpoint.assertIsSatisfied() in 8 
consumer tests with deliberate processing delays
    - Replace immediate queue-count assertions with Awaitility await() in 
QueueProducerQoSTest for broker expiry race condition
---
 .../sjms/consumer/InOnlyConsumerAsyncFalseTest.java       |  6 +++---
 .../component/sjms/consumer/InOnlyConsumerTopicTest.java  |  4 +++-
 .../sjms/consumer/InOutConcurrentConsumerTest.java        |  3 ++-
 .../sjms/consumer/InOutConsumerQueueAsyncTest.java        |  4 +++-
 .../component/sjms/consumer/InOutConsumerQueueTest.java   |  4 +++-
 .../sjms/consumer/InOutConsumerTempQueueAsyncTest.java    |  4 +++-
 .../sjms/consumer/InOutConsumerTempQueueTest.java         |  4 +++-
 .../component/sjms/consumer/InOutConsumerTopicTest.java   |  5 +++--
 .../component/sjms/producer/QueueProducerQoSTest.java     | 15 +++++++++++----
 9 files changed, 34 insertions(+), 15 deletions(-)

diff --git 
a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOnlyConsumerAsyncFalseTest.java
 
b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOnlyConsumerAsyncFalseTest.java
index 8bd983666be0..76fc56e453b5 100644
--- 
a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOnlyConsumerAsyncFalseTest.java
+++ 
b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOnlyConsumerAsyncFalseTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.sjms.consumer;
 
+import java.util.concurrent.TimeUnit;
+
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
@@ -46,9 +48,7 @@ public class InOnlyConsumerAsyncFalseTest extends 
JmsTestSupport {
         // the reason is that the first message is processed asynchronously
         // and it takes 2 sec to complete, so in between we have time to
         // process the 2nd message on the queue
-        Thread.sleep(3000);
-
-        MockEndpoint.assertIsSatisfied(context);
+        MockEndpoint.assertIsSatisfied(context, 20, TimeUnit.SECONDS);
         assertEquals(beforeThreadName, afterThreadName);
     }
 
diff --git 
a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOnlyConsumerTopicTest.java
 
b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOnlyConsumerTopicTest.java
index 208668d05bf6..8b500acc25c8 100644
--- 
a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOnlyConsumerTopicTest.java
+++ 
b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOnlyConsumerTopicTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.sjms.consumer;
 
+import java.util.concurrent.TimeUnit;
+
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
@@ -35,7 +37,7 @@ public class InOnlyConsumerTopicTest extends JmsTestSupport {
         getMockEndpoint("mock:result").expectedBodiesReceived("Hello Camel", 
"Hello World");
         template.sendBody("sjms:topic:in.only.InOnlyConsumerTopicTest.topic", 
"Hello Camel");
         template.sendBody("sjms:topic:in.only.InOnlyConsumerTopicTest.topic", 
"Hello World");
-        MockEndpoint.assertIsSatisfied(context);
+        MockEndpoint.assertIsSatisfied(context, 20, TimeUnit.SECONDS);
     }
 
     @Override
diff --git 
a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConcurrentConsumerTest.java
 
b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConcurrentConsumerTest.java
index 69b4ec6c78d5..d485f9d4bec1 100644
--- 
a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConcurrentConsumerTest.java
+++ 
b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConcurrentConsumerTest.java
@@ -21,6 +21,7 @@ import java.util.List;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.EndpointInject;
@@ -58,7 +59,7 @@ public class InOutConcurrentConsumerTest extends 
JmsTestSupport {
             futures.add(out);
         }
 
-        MockEndpoint.assertIsSatisfied(context);
+        MockEndpoint.assertIsSatisfied(context, 20, TimeUnit.SECONDS);
 
         for (int i = 0; i < futures.size(); i++) {
             Object out = futures.get(i).get();
diff --git 
a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerQueueAsyncTest.java
 
b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerQueueAsyncTest.java
index 5aeb3b9898fb..e70e042be868 100644
--- 
a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerQueueAsyncTest.java
+++ 
b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerQueueAsyncTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.sjms.consumer;
 
+import java.util.concurrent.TimeUnit;
+
 import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
@@ -40,7 +42,7 @@ public class InOutConsumerQueueAsyncTest extends 
JmsCommonTestSupport {
         template.sendBody("sjms:start.queue.InOutConsumerQueueAsyncTest", 
"Hello Camel");
         template.sendBody("sjms:start.queue.InOutConsumerQueueAsyncTest", 
"Hello World");
 
-        MockEndpoint.assertIsSatisfied(context);
+        MockEndpoint.assertIsSatisfied(context, 20, TimeUnit.SECONDS);
     }
 
     @Override
diff --git 
a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerQueueTest.java
 
b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerQueueTest.java
index afe0300e3e57..1f1fd15ce5e4 100644
--- 
a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerQueueTest.java
+++ 
b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerQueueTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.sjms.consumer;
 
+import java.util.concurrent.TimeUnit;
+
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
@@ -32,7 +34,7 @@ public class InOutConsumerQueueTest extends JmsTestSupport {
         template.sendBody("sjms:start.queue.InOutConsumerQueueTest", "Hello 
Camel");
         template.sendBody("sjms:start.queue.InOutConsumerQueueTest", "Hello 
World");
 
-        MockEndpoint.assertIsSatisfied(context);
+        MockEndpoint.assertIsSatisfied(context, 20, TimeUnit.SECONDS);
     }
 
     @Override
diff --git 
a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerTempQueueAsyncTest.java
 
b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerTempQueueAsyncTest.java
index e3b366196d6d..3c85950f8d8e 100644
--- 
a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerTempQueueAsyncTest.java
+++ 
b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerTempQueueAsyncTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.sjms.consumer;
 
+import java.util.concurrent.TimeUnit;
+
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.Processor;
@@ -33,7 +35,7 @@ public class InOutConsumerTempQueueAsyncTest extends 
JmsTestSupport {
         template.sendBody("sjms:start.queue.InOutConsumerTempQueueAsyncTest", 
"Hello Camel");
         template.sendBody("sjms:start.queue.InOutConsumerTempQueueAsyncTest", 
"Hello World");
 
-        MockEndpoint.assertIsSatisfied(context);
+        MockEndpoint.assertIsSatisfied(context, 20, TimeUnit.SECONDS);
     }
 
     @Override
diff --git 
a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerTempQueueTest.java
 
b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerTempQueueTest.java
index a380d0947787..f31528fd98cb 100644
--- 
a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerTempQueueTest.java
+++ 
b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerTempQueueTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.sjms.consumer;
 
+import java.util.concurrent.TimeUnit;
+
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
@@ -31,7 +33,7 @@ public class InOutConsumerTempQueueTest extends 
JmsTestSupport {
 
         template.sendBody("sjms:start.queue.InOutConsumerTempQueueTest", 
"Hello Camel");
         template.sendBody("sjms:start.queue.InOutConsumerTempQueueTest", 
"Hello World");
-        MockEndpoint.assertIsSatisfied(context);
+        MockEndpoint.assertIsSatisfied(context, 20, TimeUnit.SECONDS);
     }
 
     @Override
diff --git 
a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerTopicTest.java
 
b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerTopicTest.java
index d9ac19cb5a95..fa504ba517b5 100644
--- 
a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerTopicTest.java
+++ 
b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerTopicTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.sjms.consumer;
 
+import java.util.concurrent.TimeUnit;
+
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
@@ -35,8 +37,7 @@ public class InOutConsumerTopicTest extends JmsTestSupport {
         getMockEndpoint("mock:result").expectedBodiesReceived("Hello Camel", 
"Hello World");
         template.sendBody("sjms:topic:start.topic.InOutConsumerTopicTest", 
"Hello Camel");
         template.sendBody("sjms:topic:start.topic.InOutConsumerTopicTest", 
"Hello World");
-        Thread.sleep(3000);
-        MockEndpoint.assertIsSatisfied(context);
+        MockEndpoint.assertIsSatisfied(context, 20, TimeUnit.SECONDS);
     }
 
     @Override
diff --git 
a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/producer/QueueProducerQoSTest.java
 
b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/producer/QueueProducerQoSTest.java
index 300e3ba0f572..60cd121dfcb7 100644
--- 
a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/producer/QueueProducerQoSTest.java
+++ 
b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/producer/QueueProducerQoSTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.sjms.producer;
 
+import java.util.concurrent.TimeUnit;
+
 import jakarta.jms.Connection;
 import jakarta.jms.Session;
 
@@ -35,6 +37,7 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.parallel.Isolated;
 
+import static org.awaitility.Awaitility.await;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
@@ -93,8 +96,10 @@ public class QueueProducerQoSTest extends CamelTestSupport {
 
         mockExpiredAdvisory.assertIsSatisfied(10_000);
 
-        assertEquals(0, service.countMessages(TEST_INOUT_DESTINATION_NAME),
-                "There were unexpected messages left in the queue: " + 
TEST_INOUT_DESTINATION_NAME);
+        // The broker may need a moment to finish removing the expired message 
from the original queue
+        await().atMost(10, TimeUnit.SECONDS).untilAsserted(
+                () -> assertEquals(0, 
service.countMessages(TEST_INOUT_DESTINATION_NAME),
+                        "There were unexpected messages left in the queue: " + 
TEST_INOUT_DESTINATION_NAME));
     }
 
     @Test
@@ -106,8 +111,10 @@ public class QueueProducerQoSTest extends CamelTestSupport 
{
 
         mockExpiredAdvisory.assertIsSatisfied(10_000);
 
-        assertEquals(0, service.countMessages(TEST_INONLY_DESTINATION_NAME),
-                "There were unexpected messages left in the queue: " + 
TEST_INONLY_DESTINATION_NAME);
+        // The broker may need a moment to finish removing the expired message 
from the original queue
+        await().atMost(10, TimeUnit.SECONDS).untilAsserted(
+                () -> assertEquals(0, 
service.countMessages(TEST_INONLY_DESTINATION_NAME),
+                        "There were unexpected messages left in the queue: " + 
TEST_INONLY_DESTINATION_NAME));
     }
 
     private static Configuration configureArtemis(Configuration configuration) 
{

Reply via email to