From 784bf656cc9c069af4aa05bc9c21d89122e3945e Mon Sep 17 00:00:00 2001 From: Jean-Louis Monteiro Date: Wed, 11 Feb 2026 23:41:18 +0100 Subject: [PATCH] Proper Appender lifecycle to assert log messages --- .../org/apache/activemq/util/DefaultTestAppender.java | 11 ++++++----- .../org/apache/activemq/ProducerFlowControlTest.java | 4 ++++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/activemq-broker/src/test/java/org/apache/activemq/util/DefaultTestAppender.java b/activemq-broker/src/test/java/org/apache/activemq/util/DefaultTestAppender.java index b68c6b6bb4f..d7867a58265 100644 --- a/activemq-broker/src/test/java/org/apache/activemq/util/DefaultTestAppender.java +++ b/activemq-broker/src/test/java/org/apache/activemq/util/DefaultTestAppender.java @@ -23,7 +23,8 @@ import org.apache.logging.log4j.core.LogEvent; public abstract class DefaultTestAppender implements Appender { - + + private volatile boolean started = false; String name = this.getClass().getSimpleName(); @Override @@ -68,21 +69,21 @@ public void initialize() { @Override public void start() { - + started = true; } @Override public void stop() { - + started = false; } @Override public boolean isStarted() { - return false; + return started; } @Override public boolean isStopped() { - return false; + return !started; } } diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/ProducerFlowControlTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/ProducerFlowControlTest.java index 7dbb49cb963..299eac51f28 100644 --- a/activemq-unit-tests/src/test/java/org/apache/activemq/ProducerFlowControlTest.java +++ b/activemq-unit-tests/src/test/java/org/apache/activemq/ProducerFlowControlTest.java @@ -34,6 +34,7 @@ import org.apache.activemq.command.ActiveMQQueue; import org.apache.activemq.transport.tcp.TcpTransport; import org.apache.activemq.util.DefaultTestAppender; +import org.apache.activemq.util.Wait; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.core.Appender; @@ -285,6 +286,9 @@ public void append(LogEvent event) { connection.start(); fillQueue(queueB); + // Wait for the warning to be logged - there's a small delay between + // the producer being blocked and the Log4j appender processing the event + assertTrue("Warning should be logged", Wait.waitFor(() -> warnings.get() >= 1, TimeUnit.SECONDS.toMillis(5), 100)); assertEquals(1, warnings.get()); broker.getDestinationPolicy().getDefaultEntry().setBlockedProducerWarningInterval(0);