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);