You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2024/03/18 19:25:59 UTC

(camel) 06/08: CAMEL-20477: rework the multiple consumer tests

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 <an...@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);
     }
 }