You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/07/25 08:40:43 UTC
[camel] branch main updated: Myq (#10815)
This is an automated email from the ASF dual-hosted git repository.
davsclaus 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 21959d398b1 Myq (#10815)
21959d398b1 is described below
commit 21959d398b149dec8a9e5d85424da19bc7bbd59d
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Jul 25 10:40:37 2023 +0200
Myq (#10815)
* camel-quartz: Use awailability instead of thread sleep in unit tests
* camel-quartz - Make test 20 sec faster
---
.../quartz/SimpleScheduledRoutePolicyTest.java | 115 +++++++++++++--------
1 file changed, 72 insertions(+), 43 deletions(-)
diff --git a/components/camel-quartz/src/test/java/org/apache/camel/routepolicy/quartz/SimpleScheduledRoutePolicyTest.java b/components/camel-quartz/src/test/java/org/apache/camel/routepolicy/quartz/SimpleScheduledRoutePolicyTest.java
index 603bf57b9d2..f4806aa62a2 100644
--- a/components/camel-quartz/src/test/java/org/apache/camel/routepolicy/quartz/SimpleScheduledRoutePolicyTest.java
+++ b/components/camel-quartz/src/test/java/org/apache/camel/routepolicy/quartz/SimpleScheduledRoutePolicyTest.java
@@ -20,13 +20,14 @@ import java.util.Date;
import java.util.concurrent.TimeUnit;
import org.apache.camel.CamelExecutionException;
+import org.apache.camel.Consumer;
import org.apache.camel.ServiceStatus;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.direct.DirectComponent;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.component.quartz.QuartzComponent;
import org.apache.camel.support.service.ServiceHelper;
-import org.junit.jupiter.api.Disabled;
+import org.awaitility.Awaitility;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
@@ -49,10 +50,10 @@ public class SimpleScheduledRoutePolicyTest {
context.addRoutes(new RouteBuilder() {
public void configure() {
SimpleScheduledRoutePolicy policy = new SimpleScheduledRoutePolicy();
- long startTime = System.currentTimeMillis() + 3000L;
+ long startTime = System.currentTimeMillis() + 500;
policy.setRouteStartDate(new Date(startTime));
policy.setRouteStartRepeatCount(1);
- policy.setRouteStartRepeatInterval(3000);
+ policy.setRouteStartRepeatInterval(1000);
from("direct:start")
.routeId("test")
@@ -61,10 +62,12 @@ public class SimpleScheduledRoutePolicyTest {
}
});
context.start();
- context.getRouteController().stopRoute("test", 1000, TimeUnit.MILLISECONDS);
+ context.getRouteController().stopRoute("test");
+
+ Awaitility.await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> {
+ assertSame(ServiceStatus.Started, context.getRouteController().getRouteStatus("test"));
+ });
- Thread.sleep(5000);
- assertSame(ServiceStatus.Started, context.getRouteController().getRouteStatus("test"));
template.sendBody("direct:start", "Ready or not, Here, I come");
context.getComponent("quartz", QuartzComponent.class).stop();
@@ -82,10 +85,10 @@ public class SimpleScheduledRoutePolicyTest {
context.addRoutes(new RouteBuilder() {
public void configure() {
SimpleScheduledRoutePolicy policy = new SimpleScheduledRoutePolicy();
- long startTime = System.currentTimeMillis() + 3000;
+ long startTime = System.currentTimeMillis() + 500;
policy.setRouteStopDate(new Date(startTime));
policy.setRouteStopRepeatCount(1);
- policy.setRouteStopRepeatInterval(3000);
+ policy.setRouteStopRepeatInterval(1000);
from("direct:start")
.routeId("test")
@@ -95,17 +98,13 @@ public class SimpleScheduledRoutePolicyTest {
});
context.start();
- Thread.sleep(4000);
+ // wait for route to stop
+ Awaitility.await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> {
+ assertTrue(ServiceHelper.isStopped(context.getRoute("test").getConsumer()));
+ });
- assertSame(ServiceStatus.Stopped, context.getRouteController().getRouteStatus("test"));
+ assertThrows(CamelExecutionException.class, () -> template.sendBody("direct:start", "Ready or not, Here, I come"));
- boolean consumerStopped = false;
- try {
- template.sendBody("direct:start", "Ready or not, Here, I come");
- } catch (CamelExecutionException e) {
- consumerStopped = true;
- }
- assertTrue(consumerStopped);
context.getComponent("quartz", QuartzComponent.class).stop();
}
}
@@ -120,10 +119,10 @@ public class SimpleScheduledRoutePolicyTest {
context.addRoutes(new RouteBuilder() {
public void configure() {
SimpleScheduledRoutePolicy policy = new SimpleScheduledRoutePolicy();
- long startTime = System.currentTimeMillis() + 3000L;
+ long startTime = System.currentTimeMillis() + 500;
policy.setRouteSuspendDate(new Date(startTime));
policy.setRouteSuspendRepeatCount(1);
- policy.setRouteSuspendRepeatInterval(3000);
+ policy.setRouteSuspendRepeatInterval(1000);
from("direct:start")
.routeId("test")
@@ -133,10 +132,13 @@ public class SimpleScheduledRoutePolicyTest {
});
context.start();
- Thread.sleep(4000);
+ // wait for route to suspend
+ Awaitility.await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> {
+ assertTrue(ServiceHelper.isSuspended(context.getRoute("test").getConsumer()));
+ });
- boolean consumerSuspended = false;
assertThrows(CamelExecutionException.class, () -> template.sendBody("direct:start", "Ready or not, Here, I come"));
+
context.getComponent("quartz", QuartzComponent.class).stop();
}
}
@@ -154,10 +156,10 @@ public class SimpleScheduledRoutePolicyTest {
context.addRoutes(new RouteBuilder() {
public void configure() {
SimpleScheduledRoutePolicy policy = new SimpleScheduledRoutePolicy();
- long startTime = System.currentTimeMillis() + 3000L;
+ long startTime = System.currentTimeMillis() + 1000;
policy.setRouteResumeDate(new Date(startTime));
policy.setRouteResumeRepeatCount(1);
- policy.setRouteResumeRepeatInterval(3000);
+ policy.setRouteResumeRepeatInterval(1000);
from("direct:start")
.routeId("test")
@@ -172,7 +174,11 @@ public class SimpleScheduledRoutePolicyTest {
assertThrows(CamelExecutionException.class, () -> template.sendBody("direct:start", "Ready or not, Here, I come"),
"Should have thrown an exception");
- Thread.sleep(4000);
+ // wait for route to resume/start
+ Awaitility.await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> {
+ assertTrue(ServiceHelper.isStarted(context.getRoute("test").getConsumer()));
+ });
+
template.sendBody("direct:start", "Ready or not, Here, I come");
context.getComponent("quartz", QuartzComponent.class).stop();
@@ -183,7 +189,6 @@ public class SimpleScheduledRoutePolicyTest {
@Nested
class SimpleTest5 extends NoBuilderTest {
- @Disabled("Currently this test is flaky")
@Test
public void testScheduledSuspendAndResumeRoutePolicy() throws Exception {
MockEndpoint success = context.getEndpoint("mock:success", MockEndpoint.class);
@@ -195,14 +200,14 @@ public class SimpleScheduledRoutePolicyTest {
context.addRoutes(new RouteBuilder() {
public void configure() {
SimpleScheduledRoutePolicy policy = new SimpleScheduledRoutePolicy();
- long suspendTime = System.currentTimeMillis() + 1000L;
+ long suspendTime = System.currentTimeMillis() + 500;
policy.setRouteSuspendDate(new Date(suspendTime));
policy.setRouteSuspendRepeatCount(0);
- policy.setRouteSuspendRepeatInterval(3000);
- long resumeTime = System.currentTimeMillis() + 4000L;
+ policy.setRouteSuspendRepeatInterval(1000);
+ long resumeTime = System.currentTimeMillis() + 2000;
policy.setRouteResumeDate(new Date(resumeTime));
policy.setRouteResumeRepeatCount(1);
- policy.setRouteResumeRepeatInterval(3000);
+ policy.setRouteResumeRepeatInterval(1000);
from("direct:start")
.routeId("test")
@@ -211,12 +216,20 @@ public class SimpleScheduledRoutePolicyTest {
}
});
context.start();
- Thread.sleep(1000);
+
+ // wait for route to suspend
+ Awaitility.await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> {
+ assertTrue(ServiceHelper.isSuspended(context.getRoute("test").getConsumer()));
+ });
assertThrows(CamelExecutionException.class, () -> template.sendBody("direct:start", "Ready or not, Here, I come"),
"Should have thrown an exception");
- Thread.sleep(4000);
+ // wait for route to resume/start
+ Awaitility.await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> {
+ assertTrue(ServiceHelper.isStarted(context.getRoute("test").getConsumer()));
+ });
+
template.sendBody("direct:start", "Ready or not, Here, I come");
context.getComponent("quartz", QuartzComponent.class).stop();
@@ -237,13 +250,13 @@ public class SimpleScheduledRoutePolicyTest {
context.addRoutes(new RouteBuilder() {
public void configure() {
SimpleScheduledRoutePolicy policy = new SimpleScheduledRoutePolicy();
- long suspendTime = System.currentTimeMillis() + 1000L;
+ long suspendTime = System.currentTimeMillis() + 500;
policy.setRouteSuspendDate(new Date(suspendTime));
policy.setRouteSuspendRepeatCount(0);
- long startTime = System.currentTimeMillis() + 4000L;
+ long startTime = System.currentTimeMillis() + 2000;
policy.setRouteStartDate(new Date(startTime));
policy.setRouteResumeRepeatCount(1);
- policy.setRouteResumeRepeatInterval(3000);
+ policy.setRouteResumeRepeatInterval(1000);
from("direct:start")
.routeId("test")
@@ -252,12 +265,22 @@ public class SimpleScheduledRoutePolicyTest {
}
});
context.start();
- Thread.sleep(1000);
+
+ Awaitility.await().atMost(5, TimeUnit.SECONDS).until(
+ () -> {
+ Consumer consumer = context.getRoute("test").getConsumer();
+ return ServiceHelper.isSuspended(consumer);
+ });
assertThrows(CamelExecutionException.class, () -> template.sendBody("direct:start", "Ready or not, Here, I come"),
"Should have thrown an exception");
- Thread.sleep(4000);
+ Awaitility.await().atMost(5, TimeUnit.SECONDS).until(
+ () -> {
+ Consumer consumer = context.getRoute("test").getConsumer();
+ return ServiceHelper.isStarted(consumer);
+ });
+
template.sendBody("direct:start", "Ready or not, Here, I come");
context.getComponent("quartz", QuartzComponent.class).stop();
@@ -277,10 +300,10 @@ public class SimpleScheduledRoutePolicyTest {
context.addRoutes(new RouteBuilder() {
public void configure() {
SimpleScheduledRoutePolicy policy = new SimpleScheduledRoutePolicy();
- long startTime = System.currentTimeMillis() + 3000L;
+ long startTime = System.currentTimeMillis() + 500;
policy.setRouteStartDate(new Date(startTime));
policy.setRouteStartRepeatCount(1);
- policy.setRouteStartRepeatInterval(3000);
+ policy.setRouteStartRepeatInterval(1000);
from("direct:start")
.routeId("test")
@@ -291,8 +314,11 @@ public class SimpleScheduledRoutePolicyTest {
});
context.start();
- Thread.sleep(5000);
- assertSame(ServiceStatus.Started, context.getRouteController().getRouteStatus("test"));
+ // wait for route to start
+ Awaitility.await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> {
+ assertTrue(ServiceHelper.isStarted(context.getRoute("test").getConsumer()));
+ });
+
template.sendBody("direct:start", "Ready or not, Here, I come");
context.getComponent("quartz", QuartzComponent.class).stop();
@@ -319,7 +345,7 @@ public class SimpleScheduledRoutePolicyTest {
@Override
public void configure() throws Exception {
SimpleScheduledRoutePolicy policy = new SimpleScheduledRoutePolicy();
- long startTime = System.currentTimeMillis() + 3000L;
+ long startTime = System.currentTimeMillis() + 500;
policy.setRouteStartDate(new Date(startTime));
from("direct:dynamic")
@@ -336,8 +362,11 @@ public class SimpleScheduledRoutePolicyTest {
template.sendBody("direct:start", "Hello World");
- Thread.sleep(5000);
- assertSame(ServiceStatus.Started, context.getRouteController().getRouteStatus("dynamic"));
+ // wait for route to start
+ Awaitility.await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> {
+ assertTrue(ServiceHelper.isStarted(context.getRoute("dynamic").getConsumer()));
+ });
+
template.sendBody("direct:dynamic", "Ready or not, Here, I come");
context.getComponent("quartz", QuartzComponent.class).stop();