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 133e522f952e CAMEL-24029: Fix flaky camel-core tests using timed 
assertions (#24630)
133e522f952e is described below

commit 133e522f952e403e7cc9368b7662740fe9bd51c5
Author: Guillaume Nodet <[email protected]>
AuthorDate: Sun Jul 12 22:59:38 2026 +0200

    CAMEL-24029: Fix flaky camel-core tests using timed assertions (#24630)
    
    CAMEL-24029: Fix flaky camel-core tests using timed assertions
    
    Use explicit timed assertions (MockEndpoint.assertIsSatisfied with
    timeout) instead of untimed assertions that can fail on slow CI:
    
    - StopRouteAbortAfterTimeoutTest: use 30s timed assertion
    - LoopNoBreakOnShutdownTest: increase Awaitility timeout from 1s to 10s
    - DefaultCamelContextSuspendResumeRouteTest: use 30s timed assertion
      after resume to allow SEDA consumer to restart polling
    
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
---
 .../apache/camel/impl/DefaultCamelContextSuspendResumeRouteTest.java | 4 +++-
 .../java/org/apache/camel/impl/StopRouteAbortAfterTimeoutTest.java   | 3 ++-
 .../java/org/apache/camel/processor/LoopNoBreakOnShutdownTest.java   | 5 ++++-
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git 
a/core/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextSuspendResumeRouteTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextSuspendResumeRouteTest.java
index 4fd8ed6f3fef..9824e071707e 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextSuspendResumeRouteTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextSuspendResumeRouteTest.java
@@ -70,7 +70,9 @@ public class DefaultCamelContextSuspendResumeRouteTest 
extends ContextTestSuppor
         resetMocks();
         mock.expectedBodiesReceived("B");
         context.resume();
-        assertMockEndpointsSatisfied();
+        // after resume, the seda consumer may need a moment to restart polling
+        // and deliver the queued message "B" — use a timed assertion
+        MockEndpoint.assertIsSatisfied(context, 30, TimeUnit.SECONDS);
 
         assertFalse(context.isSuspended());
 
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/impl/StopRouteAbortAfterTimeoutTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/impl/StopRouteAbortAfterTimeoutTest.java
index c6f257746f85..5664f115593c 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/impl/StopRouteAbortAfterTimeoutTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/impl/StopRouteAbortAfterTimeoutTest.java
@@ -53,7 +53,8 @@ public class StopRouteAbortAfterTimeoutTest extends 
ContextTestSupport {
             template.sendBody("seda:start", "message-" + i);
         }
 
-        mockEP.assertIsSatisfied();
+        // use timed assertion to avoid flaky failures on slow CI
+        MockEndpoint.assertIsSatisfied(context, 30, TimeUnit.SECONDS);
     }
 
     @Test
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/processor/LoopNoBreakOnShutdownTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/processor/LoopNoBreakOnShutdownTest.java
index ac4659a29125..5d735cc1f6c4 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/processor/LoopNoBreakOnShutdownTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/processor/LoopNoBreakOnShutdownTest.java
@@ -37,10 +37,13 @@ class LoopNoBreakOnShutdownTest extends ContextTestSupport {
         mock.expectedMinimumMessageCount(LOOP_COUNT);
 
         CompletableFuture<Object> future = template.asyncSendBody("seda:foo", 
"foo");
-        await().atMost(1, SECONDS).until(future::isDone);
+        // asyncSendBody to seda completes almost instantly (just enqueues), 
but on
+        // slow CI the handoff can take longer — use a generous timeout
+        await().atMost(10, SECONDS).until(future::isDone);
 
         context.stop();
 
+        // after context.stop(), all shutdown-deferred processing has completed
         mock.assertIsSatisfied();
     }
 

Reply via email to