This is an automated email from the ASF dual-hosted git repository. orpiske pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit 89674b561ea611d93eb7475d7e8f2a062a396e24 Author: Otavio Rodolfo Piske <angusyo...@gmail.com> AuthorDate: Mon Mar 18 14:37:37 2024 +0100 CAMEL-20477: rework the multiple consumer tests - ensure the tests wait for the connections to be established before trying to send data (which would fail) - split topic/queue tests - follow the current patterns for defining routes - add logs for easier debug in the future --- ...est.java => JmsMultipleConsumersQueueTest.java} | 69 +++++++++------------- ...est.java => JmsMultipleConsumersTopicTest.java} | 64 +++++++++----------- 2 files changed, 56 insertions(+), 77 deletions(-) diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMultipleConsumersTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMultipleConsumersQueueTest.java similarity index 63% copy from components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMultipleConsumersTest.java copy to components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMultipleConsumersQueueTest.java index 6aaf1441187..592aa312220 100644 --- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMultipleConsumersTest.java +++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMultipleConsumersQueueTest.java @@ -23,16 +23,15 @@ import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.infra.core.CamelContextExtension; import org.apache.camel.test.infra.core.TransientCamelContextExtension; +import org.awaitility.Awaitility; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.condition.DisabledIfSystemProperty; import org.junit.jupiter.api.extension.RegisterExtension; -@TestInstance(TestInstance.Lifecycle.PER_METHOD) @DisabledIfSystemProperty(named = "ci.env.name", matches = "github.com", disabledReason = "Flaky on Github CI") -public class JmsMultipleConsumersTest extends AbstractJMSTest { +public class JmsMultipleConsumersQueueTest extends AbstractJMSTest { @Order(2) @RegisterExtension @@ -42,44 +41,11 @@ public class JmsMultipleConsumersTest extends AbstractJMSTest { protected ConsumerTemplate consumer; @Test - public void testMultipleConsumersTopic() throws Exception { - context.addRoutes(new RouteBuilder() { - @Override - public void configure() { - from("jms:topic:JmsMultipleConsumersTest").to("mock:foo"); - - from("direct:JmsMultipleConsumersTest").to("mock:result"); - - from("jms:topic:JmsMultipleConsumersTest").to("mock:bar"); - } - }); - - getMockEndpoint("mock:foo").expectedMessageCount(1); - getMockEndpoint("mock:bar").expectedMessageCount(1); - getMockEndpoint("mock:result").expectedMessageCount(0); - - template.sendBody("jms:topic:JmsMultipleConsumersTest", "Hello World"); - - MockEndpoint.assertIsSatisfied(context); - } - - @Test - public void testMultipleConsumersQueue() throws Exception { - context.addRoutes(new RouteBuilder() { - @Override - public void configure() { - from("jms:queue:JmsMultipleConsumersTest").to("mock:result"); - - from("direct:JmsMultipleConsumersTest").to("mock:result"); - - from("jms:queue:JmsMultipleConsumersTest").to("mock:result"); - } - }); - + public void testMultipleConsumers() throws Exception { getMockEndpoint("mock:result").expectedMessageCount(2); - template.sendBody("jms:queue:JmsMultipleConsumersTest", "Hello World"); - template.sendBody("jms:queue:JmsMultipleConsumersTest", "Bye World"); + template.sendBody("jms:queue:JmsMultipleConsumersQueueTest", "Hello World"); + template.sendBody("jms:queue:JmsMultipleConsumersQueueTest", "Bye World"); MockEndpoint.assertIsSatisfied(context); } @@ -91,7 +57,22 @@ public class JmsMultipleConsumersTest extends AbstractJMSTest { @Override protected RouteBuilder createRouteBuilder() { - return null; + return new RouteBuilder() { + @Override + public void configure() { + from("jms:queue:JmsMultipleConsumersQueueTest") + .routeId("route-1") + .to("mock:result"); + + from("direct:JmsMultipleConsumersQueueTest") + .routeId("route-2") + .to("mock:result"); + + from("jms:queue:JmsMultipleConsumersQueueTest") + .routeId("route-3") + .to("mock:result"); + } + }; } @Override @@ -104,5 +85,13 @@ public class JmsMultipleConsumersTest extends AbstractJMSTest { context = camelContextExtension.getContext(); template = camelContextExtension.getProducerTemplate(); consumer = camelContextExtension.getConsumerTemplate(); + + waitForConnections(); + } + + private void waitForConnections() { + Awaitility.await().until(() -> context.getRoute("route-1").getUptimeMillis() > 100); + Awaitility.await().until(() -> context.getRoute("route-2").getUptimeMillis() > 100); + Awaitility.await().until(() -> context.getRoute("route-3").getUptimeMillis() > 100); } } diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMultipleConsumersTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMultipleConsumersTopicTest.java similarity index 68% rename from components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMultipleConsumersTest.java rename to components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMultipleConsumersTopicTest.java index 6aaf1441187..bb1c3271158 100644 --- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMultipleConsumersTest.java +++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsMultipleConsumersTopicTest.java @@ -23,16 +23,15 @@ import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.infra.core.CamelContextExtension; import org.apache.camel.test.infra.core.TransientCamelContextExtension; +import org.awaitility.Awaitility; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.condition.DisabledIfSystemProperty; import org.junit.jupiter.api.extension.RegisterExtension; -@TestInstance(TestInstance.Lifecycle.PER_METHOD) @DisabledIfSystemProperty(named = "ci.env.name", matches = "github.com", disabledReason = "Flaky on Github CI") -public class JmsMultipleConsumersTest extends AbstractJMSTest { +public class JmsMultipleConsumersTopicTest extends AbstractJMSTest { @Order(2) @RegisterExtension @@ -43,43 +42,11 @@ public class JmsMultipleConsumersTest extends AbstractJMSTest { @Test public void testMultipleConsumersTopic() throws Exception { - context.addRoutes(new RouteBuilder() { - @Override - public void configure() { - from("jms:topic:JmsMultipleConsumersTest").to("mock:foo"); - - from("direct:JmsMultipleConsumersTest").to("mock:result"); - - from("jms:topic:JmsMultipleConsumersTest").to("mock:bar"); - } - }); - getMockEndpoint("mock:foo").expectedMessageCount(1); getMockEndpoint("mock:bar").expectedMessageCount(1); getMockEndpoint("mock:result").expectedMessageCount(0); - template.sendBody("jms:topic:JmsMultipleConsumersTest", "Hello World"); - - MockEndpoint.assertIsSatisfied(context); - } - - @Test - public void testMultipleConsumersQueue() throws Exception { - context.addRoutes(new RouteBuilder() { - @Override - public void configure() { - from("jms:queue:JmsMultipleConsumersTest").to("mock:result"); - - from("direct:JmsMultipleConsumersTest").to("mock:result"); - - from("jms:queue:JmsMultipleConsumersTest").to("mock:result"); - } - }); - - getMockEndpoint("mock:result").expectedMessageCount(2); - - template.sendBody("jms:queue:JmsMultipleConsumersTest", "Hello World"); - template.sendBody("jms:queue:JmsMultipleConsumersTest", "Bye World"); + template.sendBody("jms:topic:testMultipleConsumersTopic", "Hello World"); MockEndpoint.assertIsSatisfied(context); } @@ -91,7 +58,22 @@ public class JmsMultipleConsumersTest extends AbstractJMSTest { @Override protected RouteBuilder createRouteBuilder() { - return null; + return new RouteBuilder() { + @Override + public void configure() { + from("jms:topic:testMultipleConsumersTopic") + .routeId("route-1") + .to("mock:foo"); + + from("direct:testMultipleConsumersTopic") + .routeId("route-2") + .to("mock:result"); + + from("jms:topic:testMultipleConsumersTopic") + .routeId("route-3") + .to("mock:bar"); + } + }; } @Override @@ -104,5 +86,13 @@ public class JmsMultipleConsumersTest extends AbstractJMSTest { context = camelContextExtension.getContext(); template = camelContextExtension.getProducerTemplate(); consumer = camelContextExtension.getConsumerTemplate(); + + waitForConnections(); + } + + private void waitForConnections() { + Awaitility.await().until(() -> context.getRoute("route-1").getUptimeMillis() > 100); + Awaitility.await().until(() -> context.getRoute("route-2").getUptimeMillis() > 100); + Awaitility.await().until(() -> context.getRoute("route-3").getUptimeMillis() > 100); } }