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);
}
}