Skip to content

Commit 1dba35e

Browse files
authored
Proper Appender lifecycle to assert log messages (#1670)
1 parent 95d26d5 commit 1dba35e

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

activemq-broker/src/test/java/org/apache/activemq/util/DefaultTestAppender.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
import org.apache.logging.log4j.core.LogEvent;
2424

2525
public abstract class DefaultTestAppender implements Appender {
26-
26+
27+
private volatile boolean started = false;
2728
String name = this.getClass().getSimpleName();
2829

2930
@Override
@@ -68,21 +69,21 @@ public void initialize() {
6869

6970
@Override
7071
public void start() {
71-
72+
started = true;
7273
}
7374

7475
@Override
7576
public void stop() {
76-
77+
started = false;
7778
}
7879

7980
@Override
8081
public boolean isStarted() {
81-
return false;
82+
return started;
8283
}
8384

8485
@Override
8586
public boolean isStopped() {
86-
return false;
87+
return !started;
8788
}
8889
}

activemq-unit-tests/src/test/java/org/apache/activemq/ProducerFlowControlTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.apache.activemq.command.ActiveMQQueue;
3535
import org.apache.activemq.transport.tcp.TcpTransport;
3636
import org.apache.activemq.util.DefaultTestAppender;
37+
import org.apache.activemq.util.Wait;
3738
import org.apache.logging.log4j.Level;
3839
import org.apache.logging.log4j.LogManager;
3940
import org.apache.logging.log4j.core.Appender;
@@ -285,6 +286,9 @@ public void append(LogEvent event) {
285286
connection.start();
286287

287288
fillQueue(queueB);
289+
// Wait for the warning to be logged - there's a small delay between
290+
// the producer being blocked and the Log4j appender processing the event
291+
assertTrue("Warning should be logged", Wait.waitFor(() -> warnings.get() >= 1, TimeUnit.SECONDS.toMillis(5), 100));
288292
assertEquals(1, warnings.get());
289293

290294
broker.getDestinationPolicy().getDefaultEntry().setBlockedProducerWarningInterval(0);

0 commit comments

Comments
 (0)