LOG4J2-1342 use more reliable CountDownLatch to ensure background thread is finished
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/b2e90dc4 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/b2e90dc4 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/b2e90dc4 Branch: refs/heads/LOG4j2-494 Commit: b2e90dc40cfa7789b960f76fc853c1ab79fe8422 Parents: 047202a Author: rpopma <[email protected]> Authored: Fri Apr 22 14:24:00 2016 +0900 Committer: Ralph Goers <[email protected]> Committed: Mon Apr 25 21:30:28 2016 -0700 ---------------------------------------------------------------------- .../logging/log4j/core/layout/CsvParameterLayoutTest.java | 9 +++++---- .../apache/logging/log4j/test/appender/ListAppender.java | 6 ++++++ 2 files changed, 11 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/b2e90dc4/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/CsvParameterLayoutTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/CsvParameterLayoutTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/CsvParameterLayoutTest.java index ce3abfc..a51db99 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/CsvParameterLayoutTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/CsvParameterLayoutTest.java @@ -21,6 +21,8 @@ import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; import org.apache.commons.csv.CSVFormat; import org.apache.logging.log4j.Level; @@ -97,6 +99,8 @@ public class CsvParameterLayoutTest { final ListAppender appender = new ListAppender("List", null, layout, true, false); appender.start(); + appender.countDownLatch = new CountDownLatch(4); + // set appender on root and set level to debug root.addAppender(appender); root.setLevel(Level.DEBUG); @@ -109,10 +113,7 @@ public class CsvParameterLayoutTest { } // wait until background thread finished processing - int maxTries = 50; - while (appender.getMessages().size() < 4 && maxTries-- > 0) { - Thread.sleep(1L); - } + appender.countDownLatch.await(10, TimeUnit.SECONDS); assertEquals("Background thread did not finish processing: msg count", 4, appender.getMessages().size()); // don't stop appender until background thread is done http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/b2e90dc4/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/ListAppender.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/ListAppender.java b/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/ListAppender.java index 19aeaee..acab7c1 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/ListAppender.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/test/appender/ListAppender.java @@ -20,6 +20,7 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.concurrent.CountDownLatch; import org.apache.logging.log4j.core.Filter; import org.apache.logging.log4j.core.Layout; @@ -60,6 +61,8 @@ public class ListAppender extends AbstractAppender { private static final String WINDOWS_LINE_SEP = "\r\n"; + public CountDownLatch countDownLatch = null; + public ListAppender(final String name) { super(name, null, null); newLine = false; @@ -99,6 +102,9 @@ public class ListAppender extends AbstractAppender { } else { write(layout.toByteArray(event)); } + if (countDownLatch != null) { + countDownLatch.countDown(); + } } void write(final byte[] bytes) {
