This is an automated email from the ASF dual-hosted git repository.
gnodet 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 92e18c6af7a4 CAMEL-24041: Fix flaky tests in camel-core (batch 9)
(#24649)
92e18c6af7a4 is described below
commit 92e18c6af7a4281f82a664524decea6b2e792280
Author: Guillaume Nodet <[email protected]>
AuthorDate: Mon Jul 13 10:56:43 2026 +0200
CAMEL-24041: Fix flaky tests in camel-core (batch 9) (#24649)
CAMEL-24041: Fix flaky tests in camel-core (batch 9)
Use timed MockEndpoint assertions and increase timeouts to reduce
flakiness under CI load for resequencer, seda, aggregator, redelivery
and error handler tests.
Co-Authored-By: Claude Opus 4.6 <[email protected]>
---
.../camel/component/seda/SedaPurgeWhenStoppingTest.java | 4 ++--
...iveryErrorHandlerAsyncDelayedTwoCamelContextIssueTest.java | 4 ++--
.../DefaultConsumerBridgeErrorHandlerContinuedTest.java | 4 +++-
.../RedeliveryErrorHandlerNoRedeliveryOnShutdownTest.java | 7 +++++--
.../processor/ResequenceStreamIgnoreInvalidExchangesTest.java | 11 +++++++----
.../ResequenceStreamNotIgnoreInvalidExchangesTest.java | 11 +++++++----
.../camel/processor/aggregator/AggregateTimeoutTest.java | 8 ++++----
7 files changed, 30 insertions(+), 19 deletions(-)
diff --git
a/core/camel-core/src/test/java/org/apache/camel/component/seda/SedaPurgeWhenStoppingTest.java
b/core/camel-core/src/test/java/org/apache/camel/component/seda/SedaPurgeWhenStoppingTest.java
index e82362dd86b7..80614994d770 100644
---
a/core/camel-core/src/test/java/org/apache/camel/component/seda/SedaPurgeWhenStoppingTest.java
+++
b/core/camel-core/src/test/java/org/apache/camel/component/seda/SedaPurgeWhenStoppingTest.java
@@ -41,7 +41,7 @@ public class SedaPurgeWhenStoppingTest extends
ContextTestSupport {
}
context.getRouteController().startRoute("myRoute");
- latch.await(2, TimeUnit.SECONDS);
+ latch.await(5, TimeUnit.SECONDS);
context.getRouteController().stopRoute("myRoute");
latch2.countDown();
@@ -58,7 +58,7 @@ public class SedaPurgeWhenStoppingTest extends
ContextTestSupport {
@Override
public void process(Exchange exchange) throws Exception {
latch.countDown();
- latch2.await(2, TimeUnit.SECONDS);
+ latch2.await(5, TimeUnit.SECONDS);
}
}).to("mock:result");
}
diff --git
a/core/camel-core/src/test/java/org/apache/camel/issues/RedeliveryErrorHandlerAsyncDelayedTwoCamelContextIssueTest.java
b/core/camel-core/src/test/java/org/apache/camel/issues/RedeliveryErrorHandlerAsyncDelayedTwoCamelContextIssueTest.java
index 4d419ae145f2..281fb2164e1c 100644
---
a/core/camel-core/src/test/java/org/apache/camel/issues/RedeliveryErrorHandlerAsyncDelayedTwoCamelContextIssueTest.java
+++
b/core/camel-core/src/test/java/org/apache/camel/issues/RedeliveryErrorHandlerAsyncDelayedTwoCamelContextIssueTest.java
@@ -35,7 +35,7 @@ public class
RedeliveryErrorHandlerAsyncDelayedTwoCamelContextIssueTest {
ConsumerTemplate consumer1 = context1.createConsumerTemplate();
context1.start();
producer1.sendBody("seda://input", "Hey1");
- Exchange ex1 = consumer1.receive("seda://output", 5000);
+ Exchange ex1 = consumer1.receive("seda://output", 10000);
DefaultCamelContext context2 = createContext();
ProducerTemplate producer2 = context2.createProducerTemplate();
@@ -48,7 +48,7 @@ public class
RedeliveryErrorHandlerAsyncDelayedTwoCamelContextIssueTest {
context1.stop();
producer2.sendBody("seda://input", "Hey2");
- Exchange ex2 = consumer2.receive("seda://output", 5000);
+ Exchange ex2 = consumer2.receive("seda://output", 10000);
assertNotNull(ex1);
assertEquals("Hey1", ex1.getIn().getBody());
diff --git
a/core/camel-core/src/test/java/org/apache/camel/processor/DefaultConsumerBridgeErrorHandlerContinuedTest.java
b/core/camel-core/src/test/java/org/apache/camel/processor/DefaultConsumerBridgeErrorHandlerContinuedTest.java
index 97ab97a271ff..2c2ec4a59741 100644
---
a/core/camel-core/src/test/java/org/apache/camel/processor/DefaultConsumerBridgeErrorHandlerContinuedTest.java
+++
b/core/camel-core/src/test/java/org/apache/camel/processor/DefaultConsumerBridgeErrorHandlerContinuedTest.java
@@ -17,6 +17,7 @@
package org.apache.camel.processor;
import java.util.Map;
+import java.util.concurrent.TimeUnit;
import org.apache.camel.Component;
import org.apache.camel.Consumer;
@@ -26,6 +27,7 @@ import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.Producer;
import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.support.DefaultComponent;
import org.apache.camel.support.ScheduledPollConsumer;
import org.apache.camel.support.ScheduledPollEndpoint;
@@ -52,7 +54,7 @@ public class DefaultConsumerBridgeErrorHandlerContinuedTest
extends ContextTestS
// so mock:result should receive messages.
getMockEndpoint("mock:result").expectedMinimumMessageCount(1);
- assertMockEndpointsSatisfied();
+ MockEndpoint.assertIsSatisfied(context, 30, TimeUnit.SECONDS);
// Verify the exception is present in the onException route
Exception cause =
getMockEndpoint("mock:onException").getReceivedExchanges().get(0)
diff --git
a/core/camel-core/src/test/java/org/apache/camel/processor/RedeliveryErrorHandlerNoRedeliveryOnShutdownTest.java
b/core/camel-core/src/test/java/org/apache/camel/processor/RedeliveryErrorHandlerNoRedeliveryOnShutdownTest.java
index 3866f9be9c22..6ac8afd993c4 100644
---
a/core/camel-core/src/test/java/org/apache/camel/processor/RedeliveryErrorHandlerNoRedeliveryOnShutdownTest.java
+++
b/core/camel-core/src/test/java/org/apache/camel/processor/RedeliveryErrorHandlerNoRedeliveryOnShutdownTest.java
@@ -16,9 +16,12 @@
*/
package org.apache.camel.processor;
+import java.util.concurrent.TimeUnit;
+
import org.apache.camel.ContextTestSupport;
import org.apache.camel.LoggingLevel;
import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.util.StopWatch;
import org.junit.jupiter.api.Test;
@@ -35,14 +38,14 @@ public class
RedeliveryErrorHandlerNoRedeliveryOnShutdownTest extends ContextTes
template.sendBody("seda:foo", "Hello World");
- assertMockEndpointsSatisfied();
+ MockEndpoint.assertIsSatisfied(context, 30, TimeUnit.SECONDS);
// should not take long to stop the route
StopWatch watch = new StopWatch();
context.getRouteController().stopRoute("foo");
watch.taken();
- assertTrue(watch.taken() < 4000, "Should stop route faster, was " +
watch.taken());
+ assertTrue(watch.taken() < 8000, "Should stop route faster, was " +
watch.taken());
}
@Override
diff --git
a/core/camel-core/src/test/java/org/apache/camel/processor/ResequenceStreamIgnoreInvalidExchangesTest.java
b/core/camel-core/src/test/java/org/apache/camel/processor/ResequenceStreamIgnoreInvalidExchangesTest.java
index 46fc4a39c385..7f364c51f38c 100644
---
a/core/camel-core/src/test/java/org/apache/camel/processor/ResequenceStreamIgnoreInvalidExchangesTest.java
+++
b/core/camel-core/src/test/java/org/apache/camel/processor/ResequenceStreamIgnoreInvalidExchangesTest.java
@@ -16,8 +16,11 @@
*/
package org.apache.camel.processor;
+import java.util.concurrent.TimeUnit;
+
import org.apache.camel.ContextTestSupport;
import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
import org.junit.jupiter.api.Test;
/**
@@ -35,7 +38,7 @@ public class ResequenceStreamIgnoreInvalidExchangesTest
extends ContextTestSuppo
template.sendBodyAndHeader("direct:start", "C", "seqno", 3);
template.sendBodyAndHeader("direct:start", "B", "seqno", 2);
- assertMockEndpointsSatisfied();
+ MockEndpoint.assertIsSatisfied(context, 30, TimeUnit.SECONDS);
}
@Test
@@ -48,7 +51,7 @@ public class ResequenceStreamIgnoreInvalidExchangesTest
extends ContextTestSuppo
template.sendBodyAndHeader("direct:start", "C", "seqno", 3);
template.sendBodyAndHeader("direct:start", "B", "seqno", 2);
- assertMockEndpointsSatisfied();
+ MockEndpoint.assertIsSatisfied(context, 30, TimeUnit.SECONDS);
}
@Test
@@ -61,7 +64,7 @@ public class ResequenceStreamIgnoreInvalidExchangesTest
extends ContextTestSuppo
template.sendBody("direct:start", "A");
template.sendBodyAndHeader("direct:start", "B", "seqno", 2);
- assertMockEndpointsSatisfied();
+ MockEndpoint.assertIsSatisfied(context, 30, TimeUnit.SECONDS);
}
@Test
@@ -74,7 +77,7 @@ public class ResequenceStreamIgnoreInvalidExchangesTest
extends ContextTestSuppo
template.sendBodyAndHeader("direct:start", "B", "seqno", 2);
template.sendBody("direct:start", "A");
- assertMockEndpointsSatisfied();
+ MockEndpoint.assertIsSatisfied(context, 30, TimeUnit.SECONDS);
}
@Override
diff --git
a/core/camel-core/src/test/java/org/apache/camel/processor/ResequenceStreamNotIgnoreInvalidExchangesTest.java
b/core/camel-core/src/test/java/org/apache/camel/processor/ResequenceStreamNotIgnoreInvalidExchangesTest.java
index a9389a97a4b8..501267f836d3 100644
---
a/core/camel-core/src/test/java/org/apache/camel/processor/ResequenceStreamNotIgnoreInvalidExchangesTest.java
+++
b/core/camel-core/src/test/java/org/apache/camel/processor/ResequenceStreamNotIgnoreInvalidExchangesTest.java
@@ -16,9 +16,12 @@
*/
package org.apache.camel.processor;
+import java.util.concurrent.TimeUnit;
+
import org.apache.camel.CamelExecutionException;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -39,7 +42,7 @@ public class ResequenceStreamNotIgnoreInvalidExchangesTest
extends ContextTestSu
template.sendBodyAndHeader("direct:start", "C", "seqno", 3);
template.sendBodyAndHeader("direct:start", "B", "seqno", 2);
- assertMockEndpointsSatisfied();
+ MockEndpoint.assertIsSatisfied(context, 30, TimeUnit.SECONDS);
}
@Test
@@ -53,7 +56,7 @@ public class ResequenceStreamNotIgnoreInvalidExchangesTest
extends ContextTestSu
template.sendBodyAndHeader("direct:start", "C", "seqno", 3);
template.sendBodyAndHeader("direct:start", "B", "seqno", 2);
- assertMockEndpointsSatisfied();
+ MockEndpoint.assertIsSatisfied(context, 30, TimeUnit.SECONDS);
}
@Test
@@ -68,7 +71,7 @@ public class ResequenceStreamNotIgnoreInvalidExchangesTest
extends ContextTestSu
template.sendBodyAndHeader("direct:start", "B", "seqno", 2);
- assertMockEndpointsSatisfied();
+ MockEndpoint.assertIsSatisfied(context, 30, TimeUnit.SECONDS);
}
@Test
@@ -82,7 +85,7 @@ public class ResequenceStreamNotIgnoreInvalidExchangesTest
extends ContextTestSu
assertThrows(CamelExecutionException.class, () ->
template.sendBody("direct:start", "A"),
"Should have thrown an exception");
- assertMockEndpointsSatisfied();
+ MockEndpoint.assertIsSatisfied(context, 30, TimeUnit.SECONDS);
}
@Override
diff --git
a/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregateTimeoutTest.java
b/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregateTimeoutTest.java
index 1d7cc23f435f..9e23f461fcd8 100644
---
a/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregateTimeoutTest.java
+++
b/core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregateTimeoutTest.java
@@ -48,10 +48,10 @@ public class AggregateTimeoutTest extends
ContextTestSupport {
// wait about 0.2 second so that the timeout kicks in, but it was
// discarded
- mock.assertIsSatisfied(200);
+ mock.assertIsSatisfied(500);
// should invoke the timeout method
- await().atMost(Duration.ofSeconds(2))
+ await().atMost(Duration.ofSeconds(5))
.untilAsserted(() -> assertEquals(1, invoked.get()));
assertNotNull(receivedExchange);
@@ -69,10 +69,10 @@ public class AggregateTimeoutTest extends
ContextTestSupport {
template.sendBodyAndHeader("direct:start", "C", "id", 123);
// should complete before timeout
- mock.assertIsSatisfied(150);
+ mock.assertIsSatisfied(500);
// should have not invoked the timeout method anymore
- await().atMost(Duration.ofSeconds(2))
+ await().atMost(Duration.ofSeconds(5))
.untilAsserted(() -> assertEquals(1, invoked.get()));
}