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:57 UTC
(camel) 04/08: CAMEL-20477: rework overly fragile test
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 cdaeeee13fef47ef8a0e8d193fb27de4dbca057a
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Mon Mar 18 09:53:52 2024 +0100
CAMEL-20477: rework overly fragile test
- ensure the tests wait for the connections to be established before trying to send data (which would fail)
- use separate endpoints for each test
- add logs for easier debug in the future
---
.../camel/component/jms/JmsDeliveryDelayTest.java | 41 +++++++++++++++++-----
1 file changed, 33 insertions(+), 8 deletions(-)
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDeliveryDelayTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDeliveryDelayTest.java
index fb70af7ed23..a7d4214a6a1 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDeliveryDelayTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDeliveryDelayTest.java
@@ -22,10 +22,16 @@ import java.util.concurrent.TimeUnit;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.util.StopWatch;
+import org.awaitility.Awaitility;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Tags;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -39,18 +45,27 @@ import static org.junit.jupiter.api.Assertions.fail;
* bugs which is why we keep them here.
*/
@Tags({ @Tag("not-parallel") })
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class JmsDeliveryDelayTest extends AbstractPersistentJMSTest {
+ private static final Logger LOG = LoggerFactory.getLogger(JmsDeliveryDelayTest.class);
private CountDownLatch routeComplete;
private final StopWatch routeWatch = new StopWatch();
+ @BeforeEach
+ void waitForConnections() {
+ Awaitility.await().until(() -> context.getRoute("route-1").getUptimeMillis() > 100);
+ Awaitility.await().until(() -> context.getRoute("route-2").getUptimeMillis() > 100);
+ }
+
+ @Order(1)
@Test
void testInOnlyWithDelay() throws Exception {
MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedBodiesReceived("Hello World");
+ mock.expectedBodiesReceived("Hello World from testInOnlyWithDelay");
routeWatch.restart();
- template.sendBody("activemq:topic:JmsDeliveryDelayTest?deliveryDelay=1000", "Hello World");
+ template.sendBody("activemq:topic:JmsDeliveryDelayTest1?deliveryDelay=1000", "Hello World from testInOnlyWithDelay");
if (!routeComplete.await(5000, TimeUnit.MILLISECONDS)) {
fail("Message was not received from Artemis topic for too long");
}
@@ -60,16 +75,17 @@ public class JmsDeliveryDelayTest extends AbstractPersistentJMSTest {
assertTrue(routeWatch.taken() >= 900, "Should take at least 1000 millis");
}
+ @Order(2)
@Test
void testInOutWithDelay() throws Exception {
MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedBodiesReceived("Hello World");
+ mock.expectedBodiesReceived("Hello World 2");
routeWatch.restart();
- var response = template.requestBody("activemq:topic:JmsDeliveryDelayTest?deliveryDelay=1000", "Hello World");
+ var response = template.requestBody("activemq:topic:JmsDeliveryDelayTest2?deliveryDelay=1000", "Hello World 2");
MockEndpoint.assertIsSatisfied(context);
- assertEquals(response, "Hello World");
+ assertEquals(response, "Hello World 2");
// give some slack
assertTrue(routeWatch.taken() >= 900, "Should take at least 1000 millis");
}
@@ -84,9 +100,18 @@ public class JmsDeliveryDelayTest extends AbstractPersistentJMSTest {
return new RouteBuilder() {
@Override
public void configure() {
- from("activemq:topic:JmsDeliveryDelayTest")
- .to("mock:result")
- .process(exchange -> routeComplete.countDown());
+ from("activemq:topic:JmsDeliveryDelayTest1")
+ .routeId("route-1")
+ .process(exchange -> LOG.info("Received from JmsDeliveryDelayTest1: {}",
+ exchange.getMessage().getBody()))
+ .process(exchange -> routeComplete.countDown())
+ .to("mock:result");
+
+ from("activemq:topic:JmsDeliveryDelayTest2")
+ .routeId("route-2")
+ .process(exchange -> LOG.info("Received from JmsDeliveryDelayTest2: {}",
+ exchange.getMessage().getBody()))
+ .to("mock:result");
}
};
}