If you have more than one rule, you need to use a RuleChain to specify the order. A lot of the rolling appender unit tests use this. Just grep for RuleChain.outerRule
On 23 February 2016 at 12:20, Remko Popma <remko.po...@gmail.com> wrote: > I'm not sure how these Rules work and in which order they execute... > Perhaps there is a better way to address this than what I did. > > On Wed, Feb 24, 2016 at 3:14 AM, Gary Gregory <garydgreg...@gmail.com> > wrote: > >> Should we use a LoggerContextRule here? >> >> Gary >> ---------- Forwarded message ---------- >> From: <rpo...@apache.org> >> Date: Feb 23, 2016 9:48 AM >> Subject: [3/5] logging-log4j2 git commit: fix spuriously failing tests >> To: <comm...@logging.apache.org> >> Cc: >> >> fix spuriously failing tests >>> >>> >>> Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo >>> Commit: >>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/047565e8 >>> Tree: >>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/047565e8 >>> Diff: >>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/047565e8 >>> >>> Branch: refs/heads/master >>> Commit: 047565e8928b0c9893c25ee92ffdf48dbcd6965c >>> Parents: 5fea6c4 >>> Author: rpopma <rpo...@apache.org> >>> Authored: Wed Feb 24 02:46:04 2016 +0900 >>> Committer: rpopma <rpo...@apache.org> >>> Committed: Wed Feb 24 02:46:04 2016 +0900 >>> >>> ---------------------------------------------------------------------- >>> .../routing/PropertiesRoutingAppenderTest.java | 1 + >>> .../core/appender/routing/RoutingAppenderTest.java | 1 + >>> .../routing/RoutingAppenderWithPurgingTest.java | 13 +++++++------ >>> .../appender/routing/RoutingDefaultAppenderTest.java | 1 + >>> .../org/apache/logging/log4j/junit/CleanFiles.java | 15 >>> +++++++++++---- >>> 5 files changed, 21 insertions(+), 10 deletions(-) >>> ---------------------------------------------------------------------- >>> >>> >>> >>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/047565e8/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/PropertiesRoutingAppenderTest.java >>> ---------------------------------------------------------------------- >>> diff --git >>> a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/PropertiesRoutingAppenderTest.java >>> b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/PropertiesRoutingAppenderTest.java >>> index 81910fc..a02a9d1 100644 >>> --- >>> a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/PropertiesRoutingAppenderTest.java >>> +++ >>> b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/PropertiesRoutingAppenderTest.java >>> @@ -58,6 +58,7 @@ public class PropertiesRoutingAppenderTest { >>> @After >>> public void tearDown() throws Exception { >>> this.app.clear(); >>> + this.init.getContext().stop(); >>> } >>> >>> @Test >>> >>> >>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/047565e8/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderTest.java >>> ---------------------------------------------------------------------- >>> diff --git >>> a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderTest.java >>> b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderTest.java >>> index 6f1613a..85f704e 100644 >>> --- >>> a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderTest.java >>> +++ >>> b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderTest.java >>> @@ -57,6 +57,7 @@ public class RoutingAppenderTest { >>> @After >>> public void tearDown() throws Exception { >>> this.app.clear(); >>> + this.init.getContext().stop(); >>> } >>> >>> @Test >>> >>> >>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/047565e8/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithPurgingTest.java >>> ---------------------------------------------------------------------- >>> diff --git >>> a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithPurgingTest.java >>> b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithPurgingTest.java >>> index 49ffabe..9920690 100644 >>> --- >>> a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithPurgingTest.java >>> +++ >>> b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithPurgingTest.java >>> @@ -43,7 +43,7 @@ public class RoutingAppenderWithPurgingTest { >>> private static final String MANUAL_LOG_FILE1 = >>> "target/routing-purge-manual/routingtest-1.log"; >>> private static final String MANUAL_LOG_FILE2 = >>> "target/routing-purge-manual/routingtest-2.log"; >>> private static final String MANUAL_LOG_FILE3 = >>> "target/routing-purge-manual/routingtest-3.log"; >>> - >>> + >>> >>> private ListAppender app; >>> private RoutingAppender routingAppenderIdle; >>> @@ -54,9 +54,9 @@ public class RoutingAppenderWithPurgingTest { >>> public LoggerContextRule init = new LoggerContextRule(CONFIG); >>> >>> @Rule >>> - public CleanFiles files = new CleanFiles(IDLE_LOG_FILE1, >>> IDLE_LOG_FILE2, IDLE_LOG_FILE3, >>> + public CleanFiles files = new CleanFiles(IDLE_LOG_FILE1, >>> IDLE_LOG_FILE2, IDLE_LOG_FILE3, >>> MANUAL_LOG_FILE1, MANUAL_LOG_FILE2, MANUAL_LOG_FILE3); >>> - >>> + >>> >>> @Before >>> public void setUp() throws Exception { >>> @@ -70,6 +70,7 @@ public class RoutingAppenderWithPurgingTest { >>> @After >>> public void tearDown() throws Exception { >>> this.app.clear(); >>> + this.init.getContext().stop(); >>> } >>> >>> @Test(timeout = 5000) >>> @@ -85,7 +86,7 @@ public class RoutingAppenderWithPurgingTest { >>> EventLogger.logEvent(msg); >>> String[] files = {IDLE_LOG_FILE1, IDLE_LOG_FILE2, >>> IDLE_LOG_FILE3, MANUAL_LOG_FILE1, MANUAL_LOG_FILE2, MANUAL_LOG_FILE3}; >>> assertFileExistance(files); >>> - >>> + >>> assertEquals("Incorrect number of appenders with >>> IdlePurgePolicy.", 3, routingAppenderIdle.getAppenders().size()); >>> assertEquals("Incorrect number of appenders with >>> IdlePurgePolicy with HangingAppender.", >>> 3, >>> routingAppenderIdleWithHangingAppender.getAppenders().size()); >>> @@ -96,7 +97,7 @@ public class RoutingAppenderWithPurgingTest { >>> >>> assertEquals("Incorrect number of appenders with >>> IdlePurgePolicy.", 1, routingAppenderIdle.getAppenders().size()); >>> assertEquals("Incorrect number of appenders with manual >>> purge.", 3, routingAppenderManual.getAppenders().size()); >>> - >>> + >>> routingAppenderManual.deleteAppender("1"); >>> routingAppenderManual.deleteAppender("2"); >>> routingAppenderManual.deleteAppender("3"); >>> @@ -104,7 +105,7 @@ public class RoutingAppenderWithPurgingTest { >>> assertEquals("Incorrect number of appenders with >>> IdlePurgePolicy.", 1, routingAppenderIdle.getAppenders().size()); >>> assertEquals("Incorrect number of appenders with manual >>> purge.", 0, routingAppenderManual.getAppenders().size()); >>> } >>> - >>> + >>> private void assertFileExistance(String... files) { >>> for (String file : files) { >>> assertTrue("File should exist - " + file + " >>> file ", new File(file).exists()); >>> >>> >>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/047565e8/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingDefaultAppenderTest.java >>> ---------------------------------------------------------------------- >>> diff --git >>> a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingDefaultAppenderTest.java >>> b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingDefaultAppenderTest.java >>> index a84460c..44d52e0 100644 >>> --- >>> a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingDefaultAppenderTest.java >>> +++ >>> b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingDefaultAppenderTest.java >>> @@ -56,6 +56,7 @@ public class RoutingDefaultAppenderTest { >>> if (app != null) { >>> app.clear(); >>> } >>> + this.init.getContext().stop(); >>> } >>> >>> @Test >>> >>> >>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/047565e8/log4j-core/src/test/java/org/apache/logging/log4j/junit/CleanFiles.java >>> ---------------------------------------------------------------------- >>> diff --git >>> a/log4j-core/src/test/java/org/apache/logging/log4j/junit/CleanFiles.java >>> b/log4j-core/src/test/java/org/apache/logging/log4j/junit/CleanFiles.java >>> index 36386af..6713aea 100644 >>> --- >>> a/log4j-core/src/test/java/org/apache/logging/log4j/junit/CleanFiles.java >>> +++ >>> b/log4j-core/src/test/java/org/apache/logging/log4j/junit/CleanFiles.java >>> @@ -31,6 +31,7 @@ import static org.junit.Assert.*; >>> * A JUnit test rule to automatically delete certain files after a test >>> is run. >>> */ >>> public class CleanFiles extends ExternalResource { >>> + private static final int MAX_TRIES = 10; >>> private final List<File> files; >>> >>> public CleanFiles(final File... files) { >>> @@ -46,11 +47,17 @@ public class CleanFiles extends ExternalResource { >>> >>> private void clean() { >>> for (final File file : files) { >>> - if (file.exists()) { >>> + for (int i = 0; i < MAX_TRIES; i++) { >>> + if (file.exists()) { >>> + try { >>> + >>> FileSystems.getDefault().provider().delete(file.toPath()); >>> + } catch (IOException e) { >>> + fail(e.toString()); >>> + } >>> + } >>> try { >>> - >>> FileSystems.getDefault().provider().delete(file.toPath()); >>> - } catch (IOException e) { >>> - fail(e.toString()); >>> + Thread.sleep(200); >>> + } catch (InterruptedException e) { >>> } >>> } >>> } >>> >>> > -- Matt Sicker <boa...@gmail.com>