From 85ca90ebec90992d47b5f9a76c90c76e43cec98b Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Sat, 4 Jul 2026 17:16:51 +0000 Subject: [PATCH] CAMEL-23908: Fix flaky BacklogTracerAggregateTest Use Awaitility to poll for backlog tracer events instead of asserting immediately after assertMockEndpointsSatisfied. The aggregate EIP processes the completed exchange asynchronously, so tracer events may not all be recorded yet when dumpAllTracedMessages is called. Co-Authored-By: Claude Opus 4.6 --- .../management/BacklogTracerAggregateTest.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerAggregateTest.java b/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerAggregateTest.java index 2d08cfc9e058e..9cc02a78a4e13 100644 --- a/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerAggregateTest.java +++ b/core/camel-management/src/test/java/org/apache/camel/management/BacklogTracerAggregateTest.java @@ -17,6 +17,7 @@ package org.apache.camel.management; import java.util.List; +import java.util.concurrent.TimeUnit; import javax.management.MBeanServer; import javax.management.ObjectName; @@ -28,6 +29,7 @@ import org.junit.jupiter.api.condition.DisabledOnOs; import org.junit.jupiter.api.condition.OS; +import static org.awaitility.Awaitility.await; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -56,14 +58,18 @@ public void testBacklogTracerAggregate() throws Exception { assertMockEndpointsSatisfied(); - List events - = (List) mbeanServer.invoke(on, "dumpAllTracedMessages", null, null); + // the aggregate completion may still be processing traced events asynchronously, + // so use Awaitility to wait until all backlog tracer events are recorded + await().atMost(5, TimeUnit.SECONDS).untilAsserted(() -> { + List events + = (List) mbeanServer.invoke(on, "dumpAllTracedMessages", null, null); - assertNotNull(events); + assertNotNull(events); - // should be 4 first and 4 last - assertEquals(4, events.stream().filter(BacklogTracerEventMessage::isFirst).count()); - assertEquals(4, events.stream().filter(BacklogTracerEventMessage::isLast).count()); + // should be 4 first and 4 last + assertEquals(4, events.stream().filter(BacklogTracerEventMessage::isFirst).count()); + assertEquals(4, events.stream().filter(BacklogTracerEventMessage::isLast).count()); + }); } @Override