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 8898beef8dbe CAMEL-24049: Fix flaky JMS Spring tests - queue name
isolation and readiness (#24660)
8898beef8dbe is described below
commit 8898beef8dbe5cdbb761a87503058355809fa01a
Author: Guillaume Nodet <[email protected]>
AuthorDate: Tue Jul 14 23:04:09 2026 +0200
CAMEL-24049: Fix flaky JMS Spring tests - queue name isolation and
readiness (#24660)
CAMEL-24049: Fix flaky JMS Spring tests - queue name isolation and
readiness checks
Co-Authored-By: Claude Opus 4.6 <[email protected]>
---
.../java/org/apache/camel/component/jms/JmsRouteTest.java | 12 ++++++++----
.../spring/JmsSpringLoadBalanceFailOverJMSIT.java | 4 ++++
.../jms/integration/spring/tx/RouteIdTransactedIT.java | 13 ++++++++++---
.../integration/spring/JmsSpringLoadBalanceFailOverIT.xml | 14 +++++++-------
4 files changed, 29 insertions(+), 14 deletions(-)
diff --git
a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteTest.java
b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteTest.java
index b93be1ba8db7..b26631882af5 100644
---
a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteTest.java
+++
b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteTest.java
@@ -17,6 +17,7 @@
package org.apache.camel.component.jms;
import java.util.concurrent.ThreadLocalRandom;
+import java.util.concurrent.TimeUnit;
import org.apache.camel.CamelContext;
import org.apache.camel.ConsumerTemplate;
@@ -57,7 +58,7 @@ public abstract class JmsRouteTest extends AbstractJMSTest {
sendExchange("");
sendExchange(null);
- resultEndpoint.assertIsSatisfied();
+ MockEndpoint.assertIsSatisfied(context, 30, TimeUnit.SECONDS);
}
protected void assertSendAndReceiveBody(Object expectedBody) throws
InterruptedException {
@@ -66,7 +67,7 @@ public abstract class JmsRouteTest extends AbstractJMSTest {
sendExchange(expectedBody);
- resultEndpoint.assertIsSatisfied();
+ MockEndpoint.assertIsSatisfied(context, 30, TimeUnit.SECONDS);
}
protected void sendExchange(final Object expectedBody) {
@@ -85,8 +86,8 @@ public abstract class JmsRouteTest extends AbstractJMSTest {
return new RouteBuilder() {
public void configure() {
- from(startEndpointUri).to(endEndpointUri);
- from(endEndpointUri).to("mock:result");
+ from(startEndpointUri).routeId("jmsRoute1").to(endEndpointUri);
+ from(endEndpointUri).routeId("jmsRoute2").to("mock:result");
}
};
}
@@ -103,5 +104,8 @@ public abstract class JmsRouteTest extends AbstractJMSTest {
consumer = camelContextExtension.getConsumerTemplate();
resultEndpoint = context.getEndpoint("mock:result",
MockEndpoint.class);
+
+ // Wait for the JMS consumer routes to be fully subscribed to the
broker
+ JmsTestHelper.waitForJmsConsumerRoutes(context, "jmsRoute1",
"jmsRoute2");
}
}
diff --git
a/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/spring/JmsSpringLoadBalanceFailOverJMSIT.java
b/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/spring/JmsSpringLoadBalanceFailOverJMSIT.java
index cbdea830c033..798fc0bf70f0 100644
---
a/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/spring/JmsSpringLoadBalanceFailOverJMSIT.java
+++
b/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/spring/JmsSpringLoadBalanceFailOverJMSIT.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.jms.integration.spring;
import java.util.concurrent.TimeUnit;
+import org.apache.camel.component.jms.JmsTestHelper;
import org.apache.camel.component.mock.MockEndpoint;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Tags;
@@ -45,6 +46,9 @@ public class JmsSpringLoadBalanceFailOverJMSIT extends
AbstractSpringJMSITSuppor
@Test
public void testFailover() throws Exception {
+ // Wait for the JMS consumer routes to be fully subscribed to the
broker
+ JmsTestHelper.waitForJmsConsumerRoutes(context, "fooConsumerRoute",
"barConsumerRoute");
+
getMockEndpoint("mock:foo").expectedBodiesReceived("Hello World");
getMockEndpoint("mock:bar").expectedBodiesReceived("Hello World");
getMockEndpoint("mock:result").expectedBodiesReceived("Bye World");
diff --git
a/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/spring/tx/RouteIdTransactedIT.java
b/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/spring/tx/RouteIdTransactedIT.java
index 7297aca9b1ec..7cb94960ab5d 100644
---
a/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/spring/tx/RouteIdTransactedIT.java
+++
b/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/spring/tx/RouteIdTransactedIT.java
@@ -19,6 +19,7 @@ package org.apache.camel.component.jms.integration.spring.tx;
import java.util.concurrent.TimeUnit;
import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.jms.JmsTestHelper;
import
org.apache.camel.component.jms.integration.spring.AbstractSpringJMSITSupport;
import org.apache.camel.component.mock.MockEndpoint;
import org.junit.jupiter.api.MethodOrderer;
@@ -44,10 +45,13 @@ public class RouteIdTransactedIT extends
AbstractSpringJMSITSupport {
@Order(1)
@Test
public void testRouteId() throws Exception {
+ // Wait for the JMS consumer route to be fully subscribed to the broker
+ JmsTestHelper.waitForJmsConsumerRoutes(context, "myCoolRoute");
+
getMockEndpoint("mock:error").expectedMessageCount(0);
getMockEndpoint("mock:result").expectedMessageCount(1);
- template.sendBody("activemq:queue:RouteIdTransactedTest", "Hello
World");
+ template.sendBody("activemq:queue:RouteIdTransactedIT", "Hello World");
MockEndpoint.assertIsSatisfied(context, 30, TimeUnit.SECONDS);
@@ -58,10 +62,13 @@ public class RouteIdTransactedIT extends
AbstractSpringJMSITSupport {
@Order(2)
@Test
public void testRouteIdFailed() throws Exception {
+ // Wait for the JMS consumer route to be fully subscribed to the broker
+ JmsTestHelper.waitForJmsConsumerRoutes(context, "myCoolRoute");
+
getMockEndpoint("mock:error").expectedMessageCount(1);
getMockEndpoint("mock:result").expectedMessageCount(0);
- template.sendBody("activemq:queue:RouteIdTransactedTest", "Kaboom");
+ template.sendBody("activemq:queue:RouteIdTransactedIT", "Kaboom");
MockEndpoint.assertIsSatisfied(context, 30, TimeUnit.SECONDS);
@@ -74,7 +81,7 @@ public class RouteIdTransactedIT extends
AbstractSpringJMSITSupport {
return new RouteBuilder() {
@Override
public void configure() {
-
from("activemq:queue:RouteIdTransactedTest?transacted=true").id("myCoolRoute")
+
from("activemq:queue:RouteIdTransactedIT?transacted=true").id("myCoolRoute")
.onException(IllegalArgumentException.class).handled(true).to("log:bar").to("mock:error").end()
.transacted()
.choice()
diff --git
a/components/camel-jms/src/test/resources/org/apache/camel/component/jms/integration/spring/JmsSpringLoadBalanceFailOverIT.xml
b/components/camel-jms/src/test/resources/org/apache/camel/component/jms/integration/spring/JmsSpringLoadBalanceFailOverIT.xml
index 002943454c18..898b5d93903f 100644
---
a/components/camel-jms/src/test/resources/org/apache/camel/component/jms/integration/spring/JmsSpringLoadBalanceFailOverIT.xml
+++
b/components/camel-jms/src/test/resources/org/apache/camel/component/jms/integration/spring/JmsSpringLoadBalanceFailOverIT.xml
@@ -41,24 +41,24 @@
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<jmxAgent id="agent" disabled="true"/>
- <route>
+ <route id="loadBalanceRoute">
<from uri="direct:start"/>
<loadBalance>
<failoverLoadBalancer/>
- <to uri="jms:queue:foo?transferException=true"/>
- <to uri="jms:queue:bar?transferException=true"/>
+ <to
uri="jms:queue:JmsSpringLoadBalanceFailOver.foo?transferException=true"/>
+ <to
uri="jms:queue:JmsSpringLoadBalanceFailOver.bar?transferException=true"/>
</loadBalance>
<to uri="mock:result"/>
</route>
- <route>
- <from uri="jms:queue:foo?transferException=true"/>
+ <route id="fooConsumerRoute">
+ <from
uri="jms:queue:JmsSpringLoadBalanceFailOver.foo?transferException=true"/>
<to uri="mock:foo"/>
<throwException ref="damn"/>
</route>
- <route>
- <from uri="jms:queue:bar?transferException=true"/>
+ <route id="barConsumerRoute">
+ <from
uri="jms:queue:JmsSpringLoadBalanceFailOver.bar?transferException=true"/>
<to uri="mock:bar"/>
<transform><simple>Bye World</simple></transform>
</route>