You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2020/09/15 18:57:53 UTC

[logging-log4j2] branch release-2.x updated (dca3b38 -> d0afb92)

This is an automated email from the ASF dual-hosted git repository.

mattsicker pushed a change to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git.


    from dca3b38  Revert "Introduce annotation for JUnit 5 LCF tests"
     new 0f5b9eb  Migrate MemoryMappedFileAppender tests to JUnit 5
     new e0d78a4  Migrate more appender tests to JUnit 5
     new b62db7e  Migrate rewrite tests to JUnit 5
     new 5699d05  Introduce StatusLoggerLevel test annotation
     new 1655041  Support clean up annotations on methods
     new 6abea70  Migrate rolling action tests to JUnit 5
     new a125b79  Migrate some rolling tests to JUnit 5
     new 485f6c6  Use ResourceLock for locale-related tests
     new 78d1b55  [LOG4J2-2921] Enable parallel tests in log4j-api
     new d0afb92  Fix line location

The 10 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 log4j-api/pom.xml                                  |  16 ++
 .../apache/logging/log4j/AbstractLoggerTest.java   |  18 +-
 .../logging/log4j/CloseableThreadContextTest.java  |  14 +-
 .../org/apache/logging/log4j/EventLoggerTest.java  |   2 +
 .../org/apache/logging/log4j/LogManagerTest.java   |   3 +
 .../apache/logging/log4j/LoggerSupplierTest.java   |  12 +-
 .../java/org/apache/logging/log4j/LoggerTest.java  |  16 +-
 .../java/org/apache/logging/log4j/MarkerTest.java  |   2 +
 .../logging/log4j/NoopThreadContextTest.java       |   3 +
 .../log4j/ThreadContextInheritanceTest.java        |   3 +
 .../logging/log4j/junit/CleanUpDirectories.java    |   2 +-
 .../apache/logging/log4j/junit/CleanUpFiles.java   |   2 +-
 .../logging/log4j/junit/DirectoryCleaner.java      |  21 +-
 .../apache/logging/log4j/junit/FileCleaner.java    |  21 +-
 ...nyThreadContext.java => StatusLoggerLevel.java} |   9 +-
 .../log4j/junit/StatusLoggerLevelExtension.java    |  20 +-
 .../logging/log4j/junit/StatusLoggerRule.java      |   2 +-
 .../logging/log4j/junit/UsingAnyThreadContext.java |   4 +
 .../logging/log4j/junit/UsingThreadContextMap.java |   4 +
 .../log4j/junit/UsingThreadContextStack.java       |   4 +
 .../log4j/message/FormattedMessageTest.java        |   7 +-
 .../log4j/message/LocalizedMessageTest.java        |   4 +
 .../MessageFormatMessageSerializationTest.java     |   4 +
 .../log4j/message/MessageFormatMessageTest.java    |   7 +-
 .../log4j/message/MessageFormatsPerfTest.java      |   4 +
 .../log4j/message/StringFormattedMessageTest.java  |   7 +-
 .../log4j/message/ThreadDumpMessageTest.java       |  13 +-
 .../logging/log4j/simple/SimpleLoggerTest.java     |   2 +
 .../log4j/spi/DefaultThreadContextMapTest.java     |   6 +
 .../log4j/spi/DefaultThreadContextStackTest.java   |   4 +-
 ...EnvironmentPropertySourceSecurityManagerIT.java |   4 +-
 .../logging/log4j/util/PropertiesUtilTest.java     |   7 +
 ...ropertyFilePropertySourceSecurityManagerIT.java |  71 ++++---
 ...mPropertiesPropertySourceSecurityManagerIT.java |   8 +-
 .../util/SystemPropertiesPropertySourceTest.java   |   3 +
 .../org/apache/logging/log4j/util/Unbox1Test.java  |   3 +
 .../logging/log4j/util/Unbox2ConfigurableTest.java |   3 +
 .../logging/log4j/core/CollectionLoggingTest.java  |   5 +
 .../appender/ConsoleAppenderJAnsiMessageMain.java  |   3 +
 .../log4j/core/appender/InMemoryAppenderTest.java  |  15 +-
 .../MemoryMappedFileAppenderLocationTest.java      |  95 ---------
 .../MemoryMappedFileAppenderRemapTest.java         |  95 ---------
 .../MemoryMappedFileAppenderSimpleTest.java        |  86 --------
 .../appender/MemoryMappedFileAppenderTest.java     | 120 +++++++++++
 .../core/appender/MemoryMappedFileManagerTest.java |  28 ++-
 .../core/appender/OutputStreamManagerTest.java     |  18 +-
 .../core/appender/RandomAccessFileManagerTest.java |  37 ++--
 .../core/appender/ReconfigureAppenderTest.java     |   6 +-
 .../core/appender/ScriptAppenderSelectorTest.java  |  87 +++-----
 .../core/appender/SocketAppenderBuilderTest.java   |   9 +-
 .../log4j/core/appender/TlsSyslogFrameTest.java    |  16 +-
 .../log4j/core/appender/WriterAppenderTest.java    | 224 +++++++++++----------
 .../rewrite/LoggerNameLevelRewritePolicyTest.java  |  13 +-
 .../appender/rewrite/MapRewritePolicyTest.java     |  61 +++---
 .../core/appender/rewrite/RewriteAppenderTest.java |  80 +++-----
 .../appender/rolling/CronTriggeringPolicyTest.java |  11 +-
 .../core/appender/rolling/EligibleFilesTest.java   |  10 +-
 .../log4j/core/appender/rolling/FileSizeTest.java  |  11 +-
 .../rolling/OnStartupTriggeringPolicyTest.java     |  73 +++----
 .../appender/rolling/PatternProcessorTest.java     |  45 +++--
 .../rolling/action/AbstractActionTest.java         |  33 ++-
 .../rolling/action/Bzip2CompressActionTest.java    |  39 ++--
 .../appender/rolling/action/DeleteActionTest.java  |  15 +-
 .../rolling/action/DeletingVisitorTest.java        |  10 +-
 .../core/appender/rolling/action/DurationTest.java |  21 +-
 .../rolling/action/FileRenameActionTest.java       |  87 ++------
 .../core/appender/rolling/action/FileSizeTest.java |  14 +-
 .../rolling/action/IfAccumulatedFileCountTest.java |   6 +-
 .../rolling/action/IfAccumulatedFileSizeTest.java  |   4 +-
 .../core/appender/rolling/action/IfAllTest.java    |  10 +-
 .../core/appender/rolling/action/IfAnyTest.java    |   8 +-
 .../appender/rolling/action/IfFileNameTest.java    |  22 +-
 .../rolling/action/IfLastModifiedTest.java         |   4 +-
 .../core/appender/rolling/action/IfNotTest.java    |  10 +-
 .../action/PathSortByModificationTimeTest.java     |  52 ++---
 .../rolling/action/ScriptConditionTest.java        |  31 +--
 .../rolling/action/SortingVisitorTest.java         |  57 ++----
 .../log4j/core/config/TestConfiguratorError.java   |   2 +
 .../validators/ValidHostValidatorTest.java         |   8 +-
 .../MemoryMappedFileAppenderLocationTest.xml       |   4 +-
 .../MemoryMappedFileAppenderRemapTest.xml          |   4 +-
 .../resources/MemoryMappedFileAppenderTest.xml     |   4 +-
 pom.xml                                            |   4 -
 83 files changed, 900 insertions(+), 1032 deletions(-)
 copy log4j-api/src/test/java/org/apache/logging/log4j/junit/{UsingAnyThreadContext.java => StatusLoggerLevel.java} (81%)
 delete mode 100644 log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderLocationTest.java
 delete mode 100644 log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderRemapTest.java
 delete mode 100644 log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderSimpleTest.java
 create mode 100644 log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderTest.java


[logging-log4j2] 03/10: Migrate rewrite tests to JUnit 5

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mattsicker pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit b62db7ea3c91f701b5eee841bfb8800485b61525
Author: Matt Sicker <bo...@gmail.com>
AuthorDate: Sun Sep 13 16:30:59 2020 -0500

    Migrate rewrite tests to JUnit 5
    
    Backported from 3.x.
    
    Signed-off-by: Matt Sicker <bo...@gmail.com>
---
 .../rewrite/LoggerNameLevelRewritePolicyTest.java  | 13 ++--
 .../appender/rewrite/MapRewritePolicyTest.java     | 61 ++++++++---------
 .../core/appender/rewrite/RewriteAppenderTest.java | 80 +++++++++-------------
 3 files changed, 68 insertions(+), 86 deletions(-)

diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/LoggerNameLevelRewritePolicyTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/LoggerNameLevelRewritePolicyTest.java
index 101f8fa..b03d64b 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/LoggerNameLevelRewritePolicyTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/LoggerNameLevelRewritePolicyTest.java
@@ -21,8 +21,9 @@ import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
 import org.apache.logging.log4j.core.util.KeyValuePair;
 import org.apache.logging.log4j.message.SimpleMessage;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 /**
  * Tests {@link LoggerNameLevelRewritePolicy}.
@@ -44,26 +45,26 @@ public class LoggerNameLevelRewritePolicyTest {
         final LoggerNameLevelRewritePolicy updatePolicy = LoggerNameLevelRewritePolicy.createPolicy(loggerNameRewrite,
                 rewrite);
         LogEvent rewritten = updatePolicy.rewrite(logEvent);
-        Assert.assertEquals(Level.DEBUG, rewritten.getLevel());
+        assertEquals(Level.DEBUG, rewritten.getLevel());
         logEvent = Log4jLogEvent.newBuilder().setLoggerName(loggerNameRewrite)
                 .setLoggerFqcn("LoggerNameLevelRewritePolicyTest.testUpdate()").setLevel(Level.WARN)
                 .setMessage(new SimpleMessage("Test")).setThrown(new RuntimeException("test")).setThreadName("none")
                 .setTimeMillis(1).build();
         rewritten = updatePolicy.rewrite(logEvent);
-        Assert.assertEquals(Level.INFO, rewritten.getLevel());
+        assertEquals(Level.INFO, rewritten.getLevel());
         final String loggerNameReadOnly = "com.nochange";
         logEvent = Log4jLogEvent.newBuilder().setLoggerName(loggerNameReadOnly)
                 .setLoggerFqcn("LoggerNameLevelRewritePolicyTest.testUpdate()").setLevel(Level.INFO)
                 .setMessage(new SimpleMessage("Test")).setThrown(new RuntimeException("test")).setThreadName("none")
                 .setTimeMillis(1).build();
         rewritten = updatePolicy.rewrite(logEvent);
-        Assert.assertEquals(Level.INFO, rewritten.getLevel());
+        assertEquals(Level.INFO, rewritten.getLevel());
         logEvent = Log4jLogEvent.newBuilder().setLoggerName(loggerNameReadOnly)
                 .setLoggerFqcn("LoggerNameLevelRewritePolicyTest.testUpdate()").setLevel(Level.WARN)
                 .setMessage(new SimpleMessage("Test")).setThrown(new RuntimeException("test")).setThreadName("none")
                 .setTimeMillis(1).build();
         rewritten = updatePolicy.rewrite(logEvent);
-        Assert.assertEquals(Level.WARN, rewritten.getLevel());
+        assertEquals(Level.WARN, rewritten.getLevel());
     }
 
 }
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/MapRewritePolicyTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/MapRewritePolicyTest.java
index e360f83..c9f0c51 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/MapRewritePolicyTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/MapRewritePolicyTest.java
@@ -16,16 +16,6 @@
 */
 package org.apache.logging.log4j.core.appender.rewrite;
 
-import static org.apache.logging.log4j.hamcrest.MapMatchers.hasSize;
-import static org.hamcrest.Matchers.hasEntry;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.MarkerManager;
 import org.apache.logging.log4j.core.LogEvent;
@@ -38,8 +28,18 @@ import org.apache.logging.log4j.message.StructuredDataMessage;
 import org.apache.logging.log4j.spi.MutableThreadContextStack;
 import org.apache.logging.log4j.spi.ThreadContextStack;
 import org.apache.logging.log4j.util.StringMap;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.apache.logging.log4j.hamcrest.MapMatchers.hasSize;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.hasEntry;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 
 public class MapRewritePolicyTest {
@@ -48,11 +48,11 @@ public class MapRewritePolicyTest {
     private static KeyValuePair[] rewrite;
     private static LogEvent logEvent0, logEvent1, logEvent2, logEvent3;
 
-    @BeforeClass
+    @BeforeAll
     public static void setupClass() {
         stringMap.putValue("test1", "one");
         stringMap.putValue("test2", "two");
-        map = stringMap.toMap();
+        map = stringMap.toMap(); 
         logEvent0 = Log4jLogEvent.newBuilder() //
                 .setLoggerName("test") //
                 .setContextData(stringMap) //
@@ -93,7 +93,7 @@ public class MapRewritePolicyTest {
         final MapRewritePolicy addPolicy = MapRewritePolicy.createPolicy("Add", rewrite);
         LogEvent rewritten = addPolicy.rewrite(logEvent0);
         compareLogEvents(logEvent0, rewritten);
-        assertEquals("Simple log message changed", logEvent0.getMessage(), rewritten.getMessage());
+        assertEquals(logEvent0.getMessage(), rewritten.getMessage(), "Simple log message changed");
 
         rewritten = addPolicy.rewrite(logEvent1);
         compareLogEvents(logEvent1, rewritten);
@@ -113,7 +113,7 @@ public class MapRewritePolicyTest {
         final MapRewritePolicy updatePolicy = MapRewritePolicy.createPolicy("Update", rewrite);
         LogEvent rewritten = updatePolicy.rewrite(logEvent0);
         compareLogEvents(logEvent0, rewritten);
-        assertEquals("Simple log message changed", logEvent0.getMessage(), rewritten.getMessage());
+        assertEquals(logEvent0.getMessage(), rewritten.getMessage(), "Simple log message changed");
 
         rewritten = updatePolicy.rewrite(logEvent1);
         compareLogEvents(logEvent1, rewritten);
@@ -133,7 +133,7 @@ public class MapRewritePolicyTest {
         final MapRewritePolicy addPolicy = MapRewritePolicy.createPolicy(null, rewrite);
         LogEvent rewritten = addPolicy.rewrite(logEvent0);
         compareLogEvents(logEvent0, rewritten);
-        assertEquals("Simple log message changed", logEvent0.getMessage(), rewritten.getMessage());
+        assertEquals(logEvent0.getMessage(), rewritten.getMessage(), "Simple log message changed");
 
         rewritten = addPolicy.rewrite(logEvent1);
         compareLogEvents(logEvent1, rewritten);
@@ -164,19 +164,18 @@ public class MapRewritePolicyTest {
     @SuppressWarnings("deprecation")
     private void compareLogEvents(final LogEvent orig, final LogEvent changed) {
         // Ensure that everything but the Mapped Data is still the same
-        assertEquals("LoggerName changed", orig.getLoggerName(), changed.getLoggerName());
-        assertEquals("Marker changed", orig.getMarker(), changed.getMarker());
-        assertEquals("FQCN changed", orig.getLoggerFqcn(), changed.getLoggerFqcn());
-        assertEquals("Level changed", orig.getLevel(), changed.getLevel());
-        assertArrayEquals("Throwable changed",
-            orig.getThrown() == null ? null : orig.getThrownProxy().getExtendedStackTrace(),
-            changed.getThrown() == null ? null : changed.getThrownProxy().getExtendedStackTrace()
-        );
-        assertEquals("ContextMap changed", orig.getContextMap(), changed.getContextMap());
-        assertEquals("ContextData changed", orig.getContextData(), changed.getContextData());
-        assertEquals("ContextStack changed", orig.getContextStack(), changed.getContextStack());
-        assertEquals("ThreadName changed", orig.getThreadName(), changed.getThreadName());
-        assertEquals("Source changed", orig.getSource(), changed.getSource());
-        assertEquals("Millis changed", orig.getTimeMillis(), changed.getTimeMillis());
+        assertEquals(orig.getLoggerName(), changed.getLoggerName(), "LoggerName changed");
+        assertEquals(orig.getMarker(), changed.getMarker(), "Marker changed");
+        assertEquals(orig.getLoggerFqcn(), changed.getLoggerFqcn(), "FQCN changed");
+        assertEquals(orig.getLevel(), changed.getLevel(), "Level changed");
+        assertArrayEquals(
+                orig.getThrown() == null ? null : orig.getThrownProxy().getExtendedStackTrace(),
+            changed.getThrown() == null ? null : changed.getThrownProxy().getExtendedStackTrace(),
+                "Throwable changed");
+        assertEquals(orig.getContextData(), changed.getContextData(), "ContextData changed");
+        assertEquals(orig.getContextStack(), changed.getContextStack(), "ContextStack changed");
+        assertEquals(orig.getThreadName(), changed.getThreadName(), "ThreadName changed");
+        assertEquals(orig.getSource(), changed.getSource(), "Source changed");
+        assertEquals(orig.getTimeMillis(), changed.getTimeMillis(), "Millis changed");
     }
 }
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/RewriteAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/RewriteAppenderTest.java
index 73082e9..9a94289 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/RewriteAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/RewriteAppenderTest.java
@@ -16,51 +16,33 @@
  */
 package org.apache.logging.log4j.core.appender.rewrite;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.List;
-import java.util.Map;
-
 import org.apache.logging.log4j.EventLogger;
-import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.hamcrest.MapMatchers;
+import org.apache.logging.log4j.junit.LoggerContextSource;
+import org.apache.logging.log4j.junit.Named;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.StructuredDataMessage;
 import org.apache.logging.log4j.test.appender.ListAppender;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-/**
- *
- */
-public class RewriteAppenderTest {
-    private ListAppender app;
-    private ListAppender app2;
+import java.util.List;
+import java.util.Map;
 
-    @ClassRule
-    public static LoggerContextRule init = new LoggerContextRule("log4j-rewrite.xml");
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.*;
+import static org.junit.jupiter.api.Assertions.*;
 
-    @Before
-    public void setUp() throws Exception {
-        app = init.getListAppender("List");
-        app2 = init.getListAppender("List2");
-    }
+@LoggerContextSource("log4j-rewrite.xml")
+public class RewriteAppenderTest {
+    private final ListAppender app;
+    private final ListAppender app2;
 
-    @After
-    public void tearDown() throws Exception {
-        if (app != null) {
-            app.clear();
-        }
-        if (app2 != null) {
-            app2.clear();
-        }
+    public RewriteAppenderTest(@Named("List") final ListAppender app, @Named("List2") final ListAppender app2) {
+        this.app = app.clear();
+        this.app2 = app2.clear();
     }
 
     @Test
@@ -70,44 +52,44 @@ public class RewriteAppenderTest {
         msg.put("Key2", "Value2");
         EventLogger.logEvent(msg);
         final List<LogEvent> list = app.getEvents();
-        assertNotNull("No events generated", list);
-        assertTrue("Incorrect number of events. Expected 1, got " + list.size(), list.size() == 1);
+        assertThat(list, hasSize(1));
         final LogEvent event = list.get(0);
         final Message m = event.getMessage();
-        assertTrue("Message is not a StringMapMessage: " + m.getClass(), m instanceof StructuredDataMessage);
+        assertThat(m, instanceOf(StructuredDataMessage.class));
         final StructuredDataMessage message = (StructuredDataMessage) m;
         final Map<String, String> map = message.getData();
-        assertNotNull("No Map", map);
-        assertTrue("Incorrect number of map entries, expected 3 got " + map.size(), map.size() == 3);
+        assertNotNull(map, "No Map");
+        assertThat(map, MapMatchers.hasSize(3));
         final String value = map.get("Key1");
         assertEquals("Apache", value);
     }
 
 
     @Test
-    public void testProperties() {
-        final Logger logger = LogManager.getLogger(RewriteAppenderTest.class);
+    public void testProperties(final LoggerContext context) {
+        final Logger logger = context.getLogger(RewriteAppenderTest.class);
         logger.debug("Test properties rewrite");
         final List<String> list = app2.getMessages();
-        assertNotNull("No events generated", list);
-        assertTrue("Incorrect number of events. Expected 1, got " + list.size(), list.size() == 1);
-        assertFalse("Did not resolve user name", list.get(0).contains("{user.dir}"));
+        assertThat(list, hasSize(1));
+        assertThat(list.get(0), not(containsString("{user.dir}")));
+        assertNotNull(list, "No events generated");
+        assertEquals(list.size(), 1, "Incorrect number of events. Expected 1, got " + list.size());
+        assertFalse(list.get(0).contains("{user."), "Did not resolve user name");
     }
 
 
     @Test
-    public void testFilter() {
+    public void testFilter(final LoggerContext context) {
         StructuredDataMessage msg = new StructuredDataMessage("Test", "This is a test", "Service");
         msg.put("Key1", "Value2");
         msg.put("Key2", "Value1");
-        final Logger logger = LogManager.getLogger("org.apache.logging.log4j.core.Logging");
+        final Logger logger = context.getLogger("org.apache.logging.log4j.core.Logging");
         logger.debug(msg);
         msg = new StructuredDataMessage("Test", "This is a test", "Service");
         msg.put("Key1", "Value1");
         msg.put("Key2", "Value2");
         logger.trace(msg);
 
-        final List<LogEvent> list = app.getEvents();
-        assertTrue("Events were generated", list == null || list.isEmpty());
+        assertThat(app.getEvents(), empty());
     }
 }


[logging-log4j2] 07/10: Migrate some rolling tests to JUnit 5

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mattsicker pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit a125b79d31a8fc4a6d86a0c706cb092a111081e7
Author: Matt Sicker <bo...@gmail.com>
AuthorDate: Sun Sep 13 20:12:11 2020 -0500

    Migrate some rolling tests to JUnit 5
    
    Backported from 3.x.
    
    Signed-off-by: Matt Sicker <bo...@gmail.com>
---
 .../appender/rolling/CronTriggeringPolicyTest.java | 11 ++--
 .../core/appender/rolling/EligibleFilesTest.java   | 10 +--
 .../log4j/core/appender/rolling/FileSizeTest.java  | 11 ++--
 .../rolling/OnStartupTriggeringPolicyTest.java     | 73 ++++++++++------------
 .../appender/rolling/PatternProcessorTest.java     | 32 +++++-----
 5 files changed, 68 insertions(+), 69 deletions(-)

diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicyTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicyTest.java
index 9fce567..efcadd9 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicyTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicyTest.java
@@ -22,9 +22,10 @@ import org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender;
 import org.apache.logging.log4j.core.config.Configurator;
 import org.apache.logging.log4j.core.config.NullConfiguration;
 import org.apache.logging.log4j.core.layout.PatternLayout;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 public class CronTriggeringPolicyTest {
 
@@ -36,7 +37,7 @@ public class CronTriggeringPolicyTest {
      //@Rule
      //public CleanFiles cleanFiles = new CleanFiles("testcmd1.log", "testcmd2.log", "testcmd3.log");
 
-    @Before
+    @BeforeEach
     public void before() {
         configuration = new NullConfiguration();
     }
@@ -59,7 +60,7 @@ public class CronTriggeringPolicyTest {
             .setConfiguration(configuration)
             .build();
         // @formatter:on
-        Assert.assertNotNull(raf);
+        assertNotNull(raf);
     }
 
     /**
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/EligibleFilesTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/EligibleFilesTest.java
index 51fae36..4b99248 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/EligibleFilesTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/EligibleFilesTest.java
@@ -20,9 +20,9 @@ import java.nio.file.Path;
 import java.util.Map;
 
 import org.apache.logging.log4j.core.pattern.NotANumber;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Test getEligibleFiles method.
@@ -34,11 +34,11 @@ public class EligibleFilesTest {
         final String path = "target/test-classes/rolloverPath/log4j.txt.20170112_09-" + NotANumber.VALUE + ".gz";
         final TestRolloverStrategy strategy = new TestRolloverStrategy();
         final Map<Integer, Path> files = strategy.findFilesInPath(path);
-        assertTrue("No files found", files.size() > 0);
-        assertTrue("Incorrect number of files found. Should be 30, was " + files.size(), files.size() == 30);
+        assertTrue(files.size() > 0, "No files found");
+        assertEquals(30, files.size(), "Incorrect number of files found. Should be 30, was " + files.size());
     }
 
-    private class TestRolloverStrategy extends AbstractRolloverStrategy {
+    private static class TestRolloverStrategy extends AbstractRolloverStrategy {
 
         public TestRolloverStrategy() {
             super(null);
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/FileSizeTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/FileSizeTest.java
index 9b9bf45..35e2199 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/FileSizeTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/FileSizeTest.java
@@ -16,8 +16,9 @@
  */
 package org.apache.logging.log4j.core.appender.rolling;
 
-import org.junit.Test;
-import static org.junit.Assert.*;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests {@link FileSize}.
@@ -27,10 +28,10 @@ public class FileSizeTest {
     private final static long EXPECTED = 10 * 1024;
 
     @Test
-    public void testFileSize() throws Exception {
+    public void testFileSize() {
         long value = FileSize.parse("10KB", 0);
-        assertTrue("unexpected value " + value, value == EXPECTED);
+        assertEquals(EXPECTED, value, "unexpected value " + value);
         value = FileSize.parse("10 KB", 0);
-        assertTrue("unexpected value " + value, value == EXPECTED);
+        assertEquals(EXPECTED, value, "unexpected value " + value);
     }
 }
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java
index 1ea3aa2..ef31ba2 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/OnStartupTriggeringPolicyTest.java
@@ -16,60 +16,50 @@
  */
 package org.apache.logging.log4j.core.appender.rolling;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.config.DefaultConfiguration;
+import org.apache.logging.log4j.core.layout.PatternLayout;
+import org.apache.logging.log4j.core.util.datetime.FastDateFormat;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
 
 import java.io.ByteArrayInputStream;
-import java.io.File;
 import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.nio.file.StandardCopyOption;
 import java.nio.file.attribute.BasicFileAttributeView;
 import java.nio.file.attribute.FileTime;
-import java.util.Arrays;
+import java.time.Duration;
+import java.time.Instant;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
-import org.apache.logging.log4j.core.config.Configuration;
-import org.apache.logging.log4j.core.config.DefaultConfiguration;
-import org.apache.logging.log4j.core.layout.PatternLayout;
-import org.apache.logging.log4j.core.util.datetime.FastDateFormat;
-import org.apache.logging.log4j.junit.CleanFolders;
-import org.junit.Assert;
-import org.junit.Rule;
-import org.junit.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /**
  * Tests {@link OnStartupTriggeringPolicy}.
  */
-//@Ignore
 public class OnStartupTriggeringPolicyTest {
 
-    private static final String TARGET_FOLDER = "target/rollOnStartup";
-    private static final String TARGET_FILE = TARGET_FOLDER + "/testfile";
-    private static final String TARGET_PATTERN = TARGET_FOLDER + "/test1-%d{MM-dd-yyyy}-%i.log";
-    private static final String ROLLED_FILE_PREFIX = TARGET_FOLDER + "/test1-";
-    private static final String ROLLED_FILE_SUFFIX = "-1.log";
+    private static final String TARGET_PATTERN = "/test1-%d{MM-dd-yyyy}-%i.log";
     private static final String TEST_DATA = "Hello world!";
     private static final FastDateFormat formatter = FastDateFormat.getInstance("MM-dd-yyyy");
 
-    @Rule
-    public CleanFolders rule = new CleanFolders(TARGET_FOLDER);
+    @TempDir
+    Path tempDir;
 
     @Test
     public void testPolicy() throws Exception {
-        //System.setProperty("log4j2.debug", "true");
-        //System.setProperty("log4j2.StatusLogger.level", "trace");
         final Configuration configuration = new DefaultConfiguration();
-        final Path target = Paths.get(TARGET_FILE);
-        Assert.assertFalse(Files.exists(target));
-        target.toFile().getParentFile().mkdirs();
-        final long timeStamp = System.currentTimeMillis() - (1000 * 60 * 60 * 24);
+        final Path target = tempDir.resolve("testfile");
+        final long timeStamp = Instant.now().minus(Duration.ofDays(1)).toEpochMilli();
         final String expectedDate = formatter.format(timeStamp);
-        final String rolledFileName = ROLLED_FILE_PREFIX + expectedDate + ROLLED_FILE_SUFFIX;
-        final Path rolled = Paths.get(rolledFileName);
+        final Path rolled = tempDir.resolve("test1-" + expectedDate + "-1.log");
         final long copied;
-        try (final InputStream is = new ByteArrayInputStream(TEST_DATA.getBytes("UTF-8"))) {
+        try (final InputStream is = new ByteArrayInputStream(TEST_DATA.getBytes(StandardCharsets.UTF_8))) {
             copied = Files.copy(is, target, StandardCopyOption.REPLACE_EXISTING);
         }
         final long size = Files.size(target);
@@ -79,20 +69,23 @@ public class OnStartupTriggeringPolicyTest {
         final FileTime fileTime = FileTime.fromMillis(timeStamp);
         final BasicFileAttributeView attrs = Files.getFileAttributeView(target, BasicFileAttributeView.class);
         attrs.setTimes(fileTime, fileTime, fileTime);
-
         final PatternLayout layout = PatternLayout.newBuilder().withPattern("%msg").withConfiguration(configuration)
                 .build();
-        final RolloverStrategy strategy = DefaultRolloverStrategy.createStrategy(null, null, null, "0", null, true,
-                configuration);
+        final RolloverStrategy strategy = DefaultRolloverStrategy.newBuilder().withCompressionLevelStr("0")
+                .withStopCustomActionsOnError(true).withConfig(configuration).build();
         final OnStartupTriggeringPolicy policy = OnStartupTriggeringPolicy.createPolicy(1);
-        try (final RollingFileManager manager = RollingFileManager.getFileManager(TARGET_FILE, TARGET_PATTERN, true, false,
-                policy, strategy, null, layout, 8192, true, false, null, null, null, configuration)) {
+
+        try (final RollingFileManager manager = RollingFileManager.getFileManager(target.toString(), tempDir.toString() + TARGET_PATTERN, true,
+                false, policy, strategy, null, layout, 8192, true, false, null, null, null, configuration)) {
             manager.initialize();
-            final String files = Arrays.toString(new File(TARGET_FOLDER).listFiles());
-            assertTrue(target.toString() + ", files = " + files, Files.exists(target));
-            assertEquals(target.toString(), 0, Files.size(target));
-            assertTrue("Missing: " + rolled.toString() + ", files on disk = " + files, Files.exists(rolled));
-            assertEquals(rolled.toString(), size, Files.size(rolled));
+            final String files;
+            try (Stream<Path> contents = Files.list(tempDir)) {
+                files = contents.map(Path::toString).collect(Collectors.joining(", ", "[", "]"));
+            }
+            assertTrue(Files.exists(target), target.toString() + ", files = " + files);
+            assertEquals(0, Files.size(target), target.toString());
+            assertTrue(Files.exists(rolled), "Missing: " + rolled.toString() + ", files on disk = " + files);
+            assertEquals(size, Files.size(rolled), rolled.toString());
         }
     }
 
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessorTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessorTest.java
index 556268d..427d845 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessorTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessorTest.java
@@ -22,9 +22,10 @@ import java.util.Calendar;
 import java.util.Date;
 import java.util.Locale;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the PatternProcessor class.
@@ -40,7 +41,7 @@ public class PatternProcessorTest {
         final PatternProcessor pp = new PatternProcessor("c:\\test\\new/app-%d{HH-mm-ss}.log");
         final Calendar cal = Calendar.getInstance();
         cal.set(Calendar.HOUR_OF_DAY, 16);
-        cal.set(Calendar.MINUTE, 02);
+        cal.set(Calendar.MINUTE, 2);
         cal.set(Calendar.SECOND, 15);
 
         final StringBuilder buf = new StringBuilder();
@@ -57,7 +58,7 @@ public class PatternProcessorTest {
 
         // expect Wed, March 4, 2014, 11:00
         final Calendar expected = Calendar.getInstance();
-        expected.set(2014, Calendar.MARCH, 4, 11, 00, 00);
+        expected.set(2014, Calendar.MARCH, 4, 11, 0, 0);
         expected.set(Calendar.MILLISECOND, 0);
         assertEquals(format(expected.getTimeInMillis()), format(actual));
     }
@@ -71,7 +72,7 @@ public class PatternProcessorTest {
 
         // expect Wed, March 5, 2014, 00:00
         final Calendar expected = Calendar.getInstance();
-        expected.set(2014, Calendar.MARCH, 5, 00, 00, 00);
+        expected.set(2014, Calendar.MARCH, 5, 0, 0, 0);
         expected.set(Calendar.MILLISECOND, 0);
         assertEquals(format(expected.getTimeInMillis()), format(actual));
     }
@@ -116,7 +117,7 @@ public class PatternProcessorTest {
 
         // expect Tue, March 4, 2014, 10:32
         final Calendar expected = Calendar.getInstance();
-        expected.set(2014, Calendar.MARCH, 4, 10, 32, 00);
+        expected.set(2014, Calendar.MARCH, 4, 10, 32, 0);
         expected.set(Calendar.MILLISECOND, 0);
         assertEquals(format(expected.getTimeInMillis()), format(actual));
     }
@@ -130,7 +131,7 @@ public class PatternProcessorTest {
 
         // We expect 1st day of next month
         final Calendar expected = Calendar.getInstance();
-        expected.set(2014, Calendar.NOVEMBER, 1, 00, 00, 00);
+        expected.set(2014, Calendar.NOVEMBER, 1, 0, 0, 0);
         expected.set(Calendar.MILLISECOND, 0);
         assertEquals(format(expected.getTimeInMillis()), format(actual));
     }
@@ -144,7 +145,7 @@ public class PatternProcessorTest {
 
         // Expect 1st of next month: 2014 Feb 1st
         final Calendar expected = Calendar.getInstance();
-        expected.set(2014, Calendar.FEBRUARY, 1, 00, 00, 00);
+        expected.set(2014, Calendar.FEBRUARY, 1, 0, 0, 0);
         expected.set(Calendar.MILLISECOND, 0);
         assertEquals(format(expected.getTimeInMillis()), format(actual));
     }
@@ -158,7 +159,7 @@ public class PatternProcessorTest {
 
         // Expect 1st of next month: 2015 Jan 1st
         final Calendar expected = Calendar.getInstance();
-        expected.set(2015, Calendar.JANUARY, 1, 00, 00, 00);
+        expected.set(2015, Calendar.JANUARY, 1, 0, 0, 0);
         expected.set(Calendar.MILLISECOND, 0);
         assertEquals(format(expected.getTimeInMillis()), format(actual));
     }
@@ -172,7 +173,7 @@ public class PatternProcessorTest {
 
         // We expect 1st day of next month
         final Calendar expected = Calendar.getInstance();
-        expected.set(2016, Calendar.JANUARY, 1, 00, 00, 00);
+        expected.set(2016, Calendar.JANUARY, 1, 0, 0, 0);
         expected.set(Calendar.MILLISECOND, 0);
         assertEquals(format(expected.getTimeInMillis()), format(actual));
     }
@@ -194,6 +195,7 @@ public class PatternProcessorTest {
     }
 
     @Test
+    @Tag("locale")
     public void testGetNextTimeWeeklyReturnsFirstDayOfNextWeek_FRANCE() {
         final Locale old = Locale.getDefault();
         Locale.setDefault(Locale.FRANCE); // force 1st day of the week to be Monday
@@ -206,7 +208,7 @@ public class PatternProcessorTest {
 
             // expect Monday, March 10, 2014
             final Calendar expected = Calendar.getInstance();
-            expected.set(2014, Calendar.MARCH, 10, 00, 00, 00);
+            expected.set(2014, Calendar.MARCH, 10, 0, 0, 0);
             expected.set(Calendar.MILLISECOND, 0);
             assertEquals(format(expected.getTimeInMillis()), format(actual));
         } finally {
@@ -215,6 +217,7 @@ public class PatternProcessorTest {
     }
 
     @Test
+    @Tag("locale")
     public void testGetNextTimeWeeklyReturnsFirstDayOfNextWeek_US() {
         final Locale old = Locale.getDefault();
         Locale.setDefault(Locale.US); // force 1st day of the week to be Sunday
@@ -227,7 +230,7 @@ public class PatternProcessorTest {
 
             // expect Sunday, March 9, 2014
             final Calendar expected = Calendar.getInstance();
-            expected.set(2014, Calendar.MARCH, 9, 00, 00, 00);
+            expected.set(2014, Calendar.MARCH, 9, 0, 0, 0);
             expected.set(Calendar.MILLISECOND, 0);
             assertEquals(format(expected.getTimeInMillis()), format(actual));
         } finally {
@@ -239,18 +242,19 @@ public class PatternProcessorTest {
      * Tests https://issues.apache.org/jira/browse/LOG4J2-1232
      */
     @Test
+    @Tag("locale")
     public void testGetNextTimeWeeklyReturnsFirstWeekInYear_US() {
         final Locale old = Locale.getDefault();
         Locale.setDefault(Locale.US); // force 1st day of the week to be Sunday
         try {
             final PatternProcessor pp = new PatternProcessor("logs/market_data_msg.log-%d{yyyy-MM-'W'W}");
             final Calendar initial = Calendar.getInstance();
-            initial.set(2015, Calendar.DECEMBER, 28, 00, 00, 00); // Monday, December 28, 2015
+            initial.set(2015, Calendar.DECEMBER, 28, 0, 0, 0); // Monday, December 28, 2015
             final long actual = pp.getNextTime(initial.getTimeInMillis(), 1, false);
 
             // expect Sunday January 3, 2016
             final Calendar expected = Calendar.getInstance();
-            expected.set(2016, Calendar.JANUARY, 3, 00, 00, 00);
+            expected.set(2016, Calendar.JANUARY, 3, 0, 0, 0);
             expected.set(Calendar.MILLISECOND, 0);
             assertEquals(format(expected.getTimeInMillis()), format(actual));
         } finally {


[logging-log4j2] 05/10: Support clean up annotations on methods

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mattsicker pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 1655041df222c80956c5ed304b975d57a5553fbb
Author: Matt Sicker <bo...@gmail.com>
AuthorDate: Sun Sep 13 20:09:36 2020 -0500

    Support clean up annotations on methods
    
    Signed-off-by: Matt Sicker <bo...@gmail.com>
---
 .../logging/log4j/junit/CleanUpDirectories.java     |  2 +-
 .../apache/logging/log4j/junit/CleanUpFiles.java    |  2 +-
 .../logging/log4j/junit/DirectoryCleaner.java       | 21 +++++++++++++++------
 .../org/apache/logging/log4j/junit/FileCleaner.java | 21 +++++++++++++++------
 4 files changed, 32 insertions(+), 14 deletions(-)

diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/junit/CleanUpDirectories.java b/log4j-api/src/test/java/org/apache/logging/log4j/junit/CleanUpDirectories.java
index 3cdceda..6c398e6 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/junit/CleanUpDirectories.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/junit/CleanUpDirectories.java
@@ -35,7 +35,7 @@ import java.lang.annotation.Target;
  * @since 2.14.0
  */
 @Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.TYPE)
+@Target({ElementType.TYPE, ElementType.METHOD})
 @Documented
 @Inherited
 @ExtendWith(DirectoryCleaner.class)
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/junit/CleanUpFiles.java b/log4j-api/src/test/java/org/apache/logging/log4j/junit/CleanUpFiles.java
index b58d8f8..a3b9ca6 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/junit/CleanUpFiles.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/junit/CleanUpFiles.java
@@ -35,7 +35,7 @@ import java.lang.annotation.Target;
  * @since 2.14.0
  */
 @Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.TYPE)
+@Target({ElementType.TYPE, ElementType.METHOD})
 @Documented
 @Inherited
 @ExtendWith(FileCleaner.class)
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/junit/DirectoryCleaner.java b/log4j-api/src/test/java/org/apache/logging/log4j/junit/DirectoryCleaner.java
index efa971b..26f5518 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/junit/DirectoryCleaner.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/junit/DirectoryCleaner.java
@@ -26,17 +26,26 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.nio.file.SimpleFileVisitor;
 import java.nio.file.attribute.BasicFileAttributes;
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
-import java.util.stream.Collectors;
+import java.util.HashSet;
 
 class DirectoryCleaner extends AbstractFileCleaner {
     @Override
     Collection<Path> getPathsForTest(final ExtensionContext context) {
-        final CleanUpDirectories cleanUpDirectories = context.getRequiredTestClass().getAnnotation(CleanUpDirectories.class);
-        return cleanUpDirectories == null ? Collections.emptySet() :
-                Arrays.stream(cleanUpDirectories.value()).map(Paths::get).collect(Collectors.toSet());
+        final Collection<Path> paths = new HashSet<>();
+        final CleanUpDirectories testClassAnnotation = context.getRequiredTestClass().getAnnotation(CleanUpDirectories.class);
+        if (testClassAnnotation != null) {
+            for (final String path : testClassAnnotation.value()) {
+                paths.add(Paths.get(path));
+            }
+        }
+        final CleanUpDirectories testMethodAnnotation = context.getRequiredTestMethod().getAnnotation(CleanUpDirectories.class);
+        if (testMethodAnnotation != null) {
+            for (final String path : testMethodAnnotation.value()) {
+                paths.add(Paths.get(path));
+            }
+        }
+        return paths;
     }
 
     @Override
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/junit/FileCleaner.java b/log4j-api/src/test/java/org/apache/logging/log4j/junit/FileCleaner.java
index 64ae0df..1858666 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/junit/FileCleaner.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/junit/FileCleaner.java
@@ -23,17 +23,26 @@ import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
-import java.util.stream.Collectors;
+import java.util.HashSet;
 
 class FileCleaner extends AbstractFileCleaner {
     @Override
     Collection<Path> getPathsForTest(final ExtensionContext context) {
-        final CleanUpFiles cleanUpFiles = context.getRequiredTestClass().getAnnotation(CleanUpFiles.class);
-        return cleanUpFiles == null ? Collections.emptySet() :
-                Arrays.stream(cleanUpFiles.value()).map(Paths::get).collect(Collectors.toSet());
+        final Collection<Path> paths = new HashSet<>();
+        final CleanUpFiles testClassAnnotation = context.getRequiredTestClass().getAnnotation(CleanUpFiles.class);
+        if (testClassAnnotation != null) {
+            for (final String path : testClassAnnotation.value()) {
+                paths.add(Paths.get(path));
+            }
+        }
+        final CleanUpFiles testMethodAnnotation = context.getRequiredTestMethod().getAnnotation(CleanUpFiles.class);
+        if (testMethodAnnotation != null) {
+            for (final String path : testMethodAnnotation.value()) {
+                paths.add(Paths.get(path));
+            }
+        }
+        return paths;
     }
 
     @Override


[logging-log4j2] 01/10: Migrate MemoryMappedFileAppender tests to JUnit 5

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mattsicker pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 0f5b9ebf3b40d2bc8b1cb82c0037e7e3b4a4add2
Author: Matt Sicker <bo...@gmail.com>
AuthorDate: Sun Sep 13 16:29:19 2020 -0500

    Migrate MemoryMappedFileAppender tests to JUnit 5
    
    Backported from 3.x.
    
    Signed-off-by: Matt Sicker <bo...@gmail.com>
---
 .../MemoryMappedFileAppenderLocationTest.java      |  95 ----------------
 .../MemoryMappedFileAppenderRemapTest.java         |  95 ----------------
 .../MemoryMappedFileAppenderSimpleTest.java        |  86 ---------------
 .../appender/MemoryMappedFileAppenderTest.java     | 120 +++++++++++++++++++++
 .../MemoryMappedFileAppenderLocationTest.xml       |   4 +-
 .../MemoryMappedFileAppenderRemapTest.xml          |   4 +-
 .../resources/MemoryMappedFileAppenderTest.xml     |   4 +-
 7 files changed, 126 insertions(+), 282 deletions(-)

diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderLocationTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderLocationTest.java
deleted file mode 100644
index 8f2c4b7..0000000
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderLocationTest.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-package org.apache.logging.log4j.core.appender;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.CoreLoggerContexts;
-import org.apache.logging.log4j.core.config.ConfigurationFactory;
-import org.apache.logging.log4j.core.util.Integers;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.*;
-
-import static org.junit.Assert.*;
-
-/**
- * Tests that logged strings and their location appear in the file,
- * that the file size is the next power of two of the specified mapped region length
- * and that the file is shrunk to its actual usage when done.
- *
- * @since 2.1
- */
-public class MemoryMappedFileAppenderLocationTest {
-
-    final String LOGFILE = "target/MemoryMappedFileAppenderLocationTest.log";
-
-    @Before
-    public void before() {
-        System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY,
-                "MemoryMappedFileAppenderLocationTest.xml");
-    }
-
-    @Test
-    public void testMemMapLocation() throws Exception {
-        final File f = new File(LOGFILE);
-        if (f.exists()) {
-            assertTrue("deleted ok", f.delete());
-        }
-        assertTrue(!f.exists());
-
-        final int expectedFileLength = Integers.ceilingNextPowerOfTwo(32000);
-        assertEquals(32768, expectedFileLength);
-
-        final Logger log = LogManager.getLogger();
-        try {
-            log.warn("Test log1");
-            assertTrue(f.exists());
-            assertEquals("initial length", expectedFileLength, f.length());
-
-            log.warn("Test log2");
-            assertEquals("not grown", expectedFileLength, f.length());
-        } finally {
-            CoreLoggerContexts.stopLoggerContext(false);
-        }
-        final int LINESEP = System.lineSeparator().length();
-        assertEquals("Shrunk to actual used size", 474 + 2 * LINESEP, f.length());
-
-        String line1, line2, line3;
-        try (final BufferedReader reader = new BufferedReader(new FileReader(LOGFILE))) {
-            line1 = reader.readLine();
-            line2 = reader.readLine();
-            line3 = reader.readLine();
-        }
-        assertNotNull(line1);
-        assertThat(line1, containsString("Test log1"));
-        final String location1 = "org.apache.logging.log4j.core.appender.MemoryMappedFileAppenderLocationTest.testMemMapLocation(MemoryMappedFileAppenderLocationTest.java:65)";
-        assertThat(line1, containsString(location1));
-
-        assertNotNull(line2);
-        assertThat(line2, containsString("Test log2"));
-        final String location2 = "org.apache.logging.log4j.core.appender.MemoryMappedFileAppenderLocationTest.testMemMapLocation(MemoryMappedFileAppenderLocationTest.java:69)";
-        assertThat(line2, containsString(location2));
-
-        assertNull("only two lines were logged", line3);
-    }
-}
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderRemapTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderRemapTest.java
deleted file mode 100644
index c4d647b..0000000
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderRemapTest.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-package org.apache.logging.log4j.core.appender;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.util.Arrays;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.CoreLoggerContexts;
-import org.apache.logging.log4j.core.config.ConfigurationFactory;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.*;
-
-import static org.junit.Assert.*;
-
-/**
- * Tests that logged strings appear in the file, that the initial file size is the specified specified region length,
- * that the file is extended by region length when necessary, and that the file is shrunk to its actual usage when done.
- *
- * @since 2.1
- */
-public class MemoryMappedFileAppenderRemapTest {
-
-    final String LOGFILE = "target/MemoryMappedFileAppenderRemapTest.log";
-
-    @Before
-    public void before() {
-        System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY, "MemoryMappedFileAppenderRemapTest.xml");
-    }
-
-    @Test
-    public void testMemMapExtendsIfNeeded() throws Exception {
-        final File f = new File(LOGFILE);
-        if (f.exists()) {
-            assertTrue(f.delete());
-        }
-        assertTrue(!f.exists());
-
-        final Logger log = LogManager.getLogger();
-        final char[] text = new char[200];
-        Arrays.fill(text, 'A');
-        try {
-            log.warn("Test log1");
-            assertTrue(f.exists());
-            assertEquals("initial length", 256, f.length());
-
-            log.warn(new String(text));
-            assertEquals("grown", 256 * 2, f.length());
-
-            log.warn(new String(text));
-            assertEquals("grown again", 256 * 3, f.length());
-        } finally {
-            CoreLoggerContexts.stopLoggerContext(false);
-        }
-        final int LINESEP = System.lineSeparator().length();
-        assertEquals("Shrunk to actual used size", 658 + 3 * LINESEP, f.length());
-
-        String line1, line2, line3, line4;
-        try (final BufferedReader reader = new BufferedReader(new FileReader(LOGFILE))) {
-            line1 = reader.readLine();
-            line2 = reader.readLine();
-            line3 = reader.readLine();
-            line4 = reader.readLine();
-        }
-        assertNotNull(line1);
-        assertThat(line1, containsString("Test log1"));
-
-        assertNotNull(line2);
-        assertThat(line2, containsString(new String(text)));
-
-        assertNotNull(line3);
-        assertThat(line3, containsString(new String(text)));
-
-        assertNull("only three lines were logged", line4);
-    }
-}
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderSimpleTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderSimpleTest.java
deleted file mode 100644
index ebab4cd..0000000
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderSimpleTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-package org.apache.logging.log4j.core.appender;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.CoreLoggerContexts;
-import org.apache.logging.log4j.core.config.ConfigurationFactory;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.*;
-
-import static org.junit.Assert.*;
-
-/**
- * Tests that logged strings appear in the file,
- * that the default file size is used if not specified
- * and that the file is shrunk to its actual usage when done.
- *
- * @since 2.1
- */
-public class MemoryMappedFileAppenderSimpleTest {
-
-    final String LOGFILE = "target/MemoryMappedFileAppenderTest.log";
-
-    @Before
-    public void before() {
-        System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY, "MemoryMappedFileAppenderTest.xml");
-    }
-
-    @Test
-    public void testMemMapBasics() throws Exception {
-        final File f = new File(LOGFILE);
-        if (f.exists()) {
-            assertTrue(f.delete());
-        }
-        assertTrue(!f.exists());
-
-        final Logger log = LogManager.getLogger();
-        try {
-            log.warn("Test log1");
-            assertTrue(f.exists());
-            assertEquals("initial length", MemoryMappedFileManager.DEFAULT_REGION_LENGTH, f.length());
-
-            log.warn("Test log2");
-            assertEquals("not grown", MemoryMappedFileManager.DEFAULT_REGION_LENGTH, f.length());
-        } finally {
-            CoreLoggerContexts.stopLoggerContext(false);
-        }
-        final int LINESEP = System.lineSeparator().length();
-        assertEquals("Shrunk to actual used size", 186 + 2 * LINESEP, f.length());
-
-        String line1, line2, line3;
-        try (final BufferedReader reader = new BufferedReader(new FileReader(LOGFILE))) {
-            line1 = reader.readLine();
-            line2 = reader.readLine();
-            line3 = reader.readLine();
-        }
-        assertNotNull(line1);
-        assertThat(line1, containsString("Test log1"));
-
-        assertNotNull(line2);
-        assertThat(line2, containsString("Test log2"));
-
-        assertNull("only two lines were logged", line3);
-    }
-}
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderTest.java
new file mode 100644
index 0000000..9dcf88e
--- /dev/null
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderTest.java
@@ -0,0 +1,120 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.core.appender;
+
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.util.Integers;
+import org.apache.logging.log4j.junit.CleanUpFiles;
+import org.apache.logging.log4j.junit.LoggerContextSource;
+import org.junit.jupiter.api.Test;
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.List;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * Tests that logged strings appear in the file, that the initial file size is the specified specified region length,
+ * that the file is extended by region length when necessary, and that the file is shrunk to its actual usage when done.
+ *
+ * @since 2.1
+ */
+@CleanUpFiles({
+        "target/MemoryMappedFileAppenderTest.log",
+        "target/MemoryMappedFileAppenderRemapTest.log",
+        "target/MemoryMappedFileAppenderLocationTest.log"
+})
+public class MemoryMappedFileAppenderTest {
+
+    @Test
+    @LoggerContextSource("MemoryMappedFileAppenderTest.xml")
+    public void testMemMapBasics(final LoggerContext context) throws Exception {
+        final Logger log = context.getLogger(getClass());
+        final Path logFile = Paths.get("target", "MemoryMappedFileAppenderTest.log");
+        try {
+            log.warn("Test log1");
+            assertTrue(Files.exists(logFile));
+            assertEquals(MemoryMappedFileManager.DEFAULT_REGION_LENGTH, Files.size(logFile));
+            log.warn("Test log2");
+            assertEquals(MemoryMappedFileManager.DEFAULT_REGION_LENGTH, Files.size(logFile));
+        } finally {
+            context.stop();
+        }
+        final int LINESEP = System.lineSeparator().length();
+        assertEquals(18 + 2 * LINESEP, Files.size(logFile));
+
+        final List<String> lines = Files.readAllLines(logFile);
+        assertThat(lines, both(hasSize(2)).and(contains("Test log1", "Test log2")));
+    }
+
+    @Test
+    @LoggerContextSource("MemoryMappedFileAppenderRemapTest.xml")
+    public void testMemMapExtendsIfNeeded(final LoggerContext context) throws Exception {
+        final Logger log = context.getLogger(getClass());
+        final Path logFile = Paths.get("target", "MemoryMappedFileAppenderRemapTest.log");
+        final char[] text = new char[256];
+        Arrays.fill(text, 'A');
+        final String str = new String(text);
+        try {
+            log.warn("Test log1");
+            assertTrue(Files.exists(logFile));
+            assertEquals(256, Files.size(logFile));
+            log.warn(str);
+            assertEquals(2 * 256, Files.size(logFile));
+            log.warn(str);
+            assertEquals(3 * 256, Files.size(logFile));
+        } finally {
+            context.stop();
+        }
+        assertEquals(521 + 3 * System.lineSeparator().length(), Files.size(logFile), "Expected file size to shrink");
+
+        final List<String> lines = Files.readAllLines(logFile);
+        assertThat(lines, both(hasSize(3)).and(contains("Test log1", str, str)));
+    }
+
+    @Test
+    @LoggerContextSource("MemoryMappedFileAppenderLocationTest.xml")
+    void testMemMapLocation(final LoggerContext context) throws Exception {
+        final Logger log = context.getLogger(getClass());
+        final Path logFile = Paths.get("target", "MemoryMappedFileAppenderLocationTest.log");
+        final int expectedFileLength = Integers.ceilingNextPowerOfTwo(32000);
+        assertEquals(32768, expectedFileLength);
+        try {
+            log.warn("Test log1");
+            assertTrue(Files.exists(logFile));
+            assertEquals(expectedFileLength, Files.size(logFile));
+            log.warn("Test log2");
+            assertEquals(expectedFileLength, Files.size(logFile));
+        } finally {
+            context.stop();
+        }
+        assertEquals(272 + 2 * System.lineSeparator().length(), Files.size(logFile), "Expected file size to shrink");
+
+        final List<String> lines = Files.readAllLines(logFile);
+        assertThat(lines, both(hasSize(2)).and(contains(
+                "org.apache.logging.log4j.core.appender.MemoryMappedFileAppenderTest.testMemMapLocation(MemoryMappedFileAppenderTest.java:104): Test log1",
+                "org.apache.logging.log4j.core.appender.MemoryMappedFileAppenderTest.testMemMapLocation(MemoryMappedFileAppenderTest.java:107): Test log2"
+        )));
+    }
+}
diff --git a/log4j-core/src/test/resources/MemoryMappedFileAppenderLocationTest.xml b/log4j-core/src/test/resources/MemoryMappedFileAppenderLocationTest.xml
index 14b6b25..b192995 100644
--- a/log4j-core/src/test/resources/MemoryMappedFileAppenderLocationTest.xml
+++ b/log4j-core/src/test/resources/MemoryMappedFileAppenderLocationTest.xml
@@ -5,7 +5,7 @@
         fileName="target/MemoryMappedFileAppenderLocationTest.log" 
         regionLength="32000" immediateFlush="true" append="false">
       <PatternLayout>
-        <Pattern>%d %p %c{1.} [%t] %X{aKey} %m %location %ex%n</Pattern>
+        <Pattern>%location: %m%n</Pattern>
       </PatternLayout>
     </MemoryMappedFile>
   </Appenders>
@@ -15,4 +15,4 @@
       <AppenderRef ref="MemoryMappedFile"/>
     </Root>
   </Loggers>
-</Configuration>
\ No newline at end of file
+</Configuration>
diff --git a/log4j-core/src/test/resources/MemoryMappedFileAppenderRemapTest.xml b/log4j-core/src/test/resources/MemoryMappedFileAppenderRemapTest.xml
index 02799a5..d46b902 100644
--- a/log4j-core/src/test/resources/MemoryMappedFileAppenderRemapTest.xml
+++ b/log4j-core/src/test/resources/MemoryMappedFileAppenderRemapTest.xml
@@ -5,7 +5,7 @@
         fileName="target/MemoryMappedFileAppenderRemapTest.log" 
         regionLength="256" immediateFlush="true" append="false">
       <PatternLayout>
-        <Pattern>%d %p %c{1.} [%t] %X{aKey} %m%ex%n</Pattern>
+        <Pattern>%m%n</Pattern>
       </PatternLayout>
     </MemoryMappedFile>
   </Appenders>
@@ -15,4 +15,4 @@
       <AppenderRef ref="MemoryMappedFile"/>
     </Root>
   </Loggers>
-</Configuration>
\ No newline at end of file
+</Configuration>
diff --git a/log4j-core/src/test/resources/MemoryMappedFileAppenderTest.xml b/log4j-core/src/test/resources/MemoryMappedFileAppenderTest.xml
index 430c8b1..209459d 100644
--- a/log4j-core/src/test/resources/MemoryMappedFileAppenderTest.xml
+++ b/log4j-core/src/test/resources/MemoryMappedFileAppenderTest.xml
@@ -5,7 +5,7 @@
          fileName="target/MemoryMappedFileAppenderTest.log" 
          immediateFlush="false" append="false">
       <PatternLayout>
-        <Pattern>%d %p %c{1.} [%t] %X{aKey} %m%ex%n</Pattern>
+        <Pattern>%m%n</Pattern>
       </PatternLayout>
     </MemoryMappedFile>
   </Appenders>
@@ -15,4 +15,4 @@
       <AppenderRef ref="MemoryMappedFile"/>
     </Root>
   </Loggers>
-</Configuration>
\ No newline at end of file
+</Configuration>


[logging-log4j2] 09/10: [LOG4J2-2921] Enable parallel tests in log4j-api

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mattsicker pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 78d1b554ea16e2c1f6422f48e07c55e4935ea9eb
Author: Matt Sicker <bo...@gmail.com>
AuthorDate: Tue Sep 15 13:29:40 2020 -0500

    [LOG4J2-2921] Enable parallel tests in log4j-api
    
    Backported from 3.x.
    
    Signed-off-by: Matt Sicker <bo...@gmail.com>
---
 log4j-api/pom.xml                                  | 16 +++++
 .../apache/logging/log4j/AbstractLoggerTest.java   |  3 +
 .../logging/log4j/CloseableThreadContextTest.java  | 14 ++++-
 .../org/apache/logging/log4j/EventLoggerTest.java  |  2 +
 .../org/apache/logging/log4j/LogManagerTest.java   |  3 +
 .../apache/logging/log4j/LoggerSupplierTest.java   | 12 +++-
 .../java/org/apache/logging/log4j/LoggerTest.java  | 16 +++--
 .../java/org/apache/logging/log4j/MarkerTest.java  |  2 +
 .../logging/log4j/NoopThreadContextTest.java       |  3 +
 .../log4j/ThreadContextInheritanceTest.java        |  3 +
 .../logging/log4j/junit/UsingAnyThreadContext.java |  4 ++
 .../logging/log4j/junit/UsingThreadContextMap.java |  4 ++
 .../log4j/junit/UsingThreadContextStack.java       |  4 ++
 .../log4j/message/FormattedMessageTest.java        |  7 ++-
 .../log4j/message/LocalizedMessageTest.java        |  4 ++
 .../MessageFormatMessageSerializationTest.java     |  4 ++
 .../log4j/message/MessageFormatMessageTest.java    |  7 ++-
 .../log4j/message/MessageFormatsPerfTest.java      |  4 ++
 .../log4j/message/StringFormattedMessageTest.java  |  7 ++-
 .../log4j/message/ThreadDumpMessageTest.java       | 13 ++--
 .../logging/log4j/simple/SimpleLoggerTest.java     |  2 +
 .../log4j/spi/DefaultThreadContextMapTest.java     |  6 ++
 .../log4j/spi/DefaultThreadContextStackTest.java   |  4 +-
 ...EnvironmentPropertySourceSecurityManagerIT.java |  4 +-
 .../logging/log4j/util/PropertiesUtilTest.java     |  7 +++
 ...ropertyFilePropertySourceSecurityManagerIT.java | 71 ++++++++++++----------
 ...mPropertiesPropertySourceSecurityManagerIT.java |  8 ++-
 .../util/SystemPropertiesPropertySourceTest.java   |  3 +
 .../org/apache/logging/log4j/util/Unbox1Test.java  |  3 +
 .../logging/log4j/util/Unbox2ConfigurableTest.java |  3 +
 .../logging/log4j/core/CollectionLoggingTest.java  |  5 ++
 .../appender/ConsoleAppenderJAnsiMessageMain.java  |  3 +
 .../log4j/core/config/TestConfiguratorError.java   |  2 +
 pom.xml                                            |  4 --
 34 files changed, 191 insertions(+), 66 deletions(-)

diff --git a/log4j-api/pom.xml b/log4j-api/pom.xml
index 4c6d990..ec76cea 100644
--- a/log4j-api/pom.xml
+++ b/log4j-api/pom.xml
@@ -165,6 +165,22 @@
       </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <properties>
+            <configurationParameters>
+              <!-- LOG4J2-2921: use parallel test execution by default -->
+              junit.jupiter.execution.parallel.enabled = true
+              junit.jupiter.execution.parallel.mode.default = concurrent
+            </configurationParameters>
+          </properties>
+          <reuseForks>true</reuseForks>
+          <redirectTestOutputToFile>true</redirectTestOutputToFile>
+          <excludedGroups>performance,smoke</excludedGroups>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
         <executions>
           <execution>
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/AbstractLoggerTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/AbstractLoggerTest.java
index 1e18453..038a602 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/AbstractLoggerTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/AbstractLoggerTest.java
@@ -29,6 +29,7 @@ import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.util.MessageSupplier;
 import org.apache.logging.log4j.util.Supplier;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.ResourceLock;
 
 import java.util.List;
 
@@ -37,6 +38,8 @@ import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.jupiter.api.Assertions.*;
 
 @StatusLoggerLevel("WARN")
+@ResourceLock("log4j2.MarkerManager")
+@ResourceLock("log4j2.StatusLogger")
 public class AbstractLoggerTest {
 
     private static final StringBuilder CHAR_SEQ = new StringBuilder("CharSeq");
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/CloseableThreadContextTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/CloseableThreadContextTest.java
index 54ea122..9acafad 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/CloseableThreadContextTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/CloseableThreadContextTest.java
@@ -16,8 +16,12 @@
  */
 package org.apache.logging.log4j;
 
-import org.apache.logging.log4j.junit.UsingAnyThreadContext;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.ResourceAccessMode;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 
 import java.util.HashMap;
 import java.util.List;
@@ -30,12 +34,18 @@ import static org.junit.jupiter.api.Assertions.*;
  *
  * @since 2.6
  */
-@UsingAnyThreadContext
+@ResourceLock(value = Resources.SYSTEM_PROPERTIES, mode = ResourceAccessMode.READ)
 public class CloseableThreadContextTest {
 
     private final String key = "key";
     private final String value = "value";
 
+    @BeforeEach
+    @AfterEach
+    void clearThreadContext() {
+        ThreadContext.clearAll();
+    }
+
     @Test
     public void shouldAddAnEntryToTheMap() {
         try (final CloseableThreadContext.Instance ignored = CloseableThreadContext.put(key, value)) {
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/EventLoggerTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/EventLoggerTest.java
index a778a45..fe66f2e 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/EventLoggerTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/EventLoggerTest.java
@@ -19,12 +19,14 @@ package org.apache.logging.log4j;
 import org.apache.logging.log4j.message.StructuredDataMessage;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.ResourceLock;
 
 import java.util.List;
 import java.util.Locale;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+@ResourceLock("log4j2.TestLogger")
 public class EventLoggerTest {
 
     TestLogger logger = (TestLogger) LogManager.getLogger("EventLogger");
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/LogManagerTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/LogManagerTest.java
index 8aa150d..0b10b5b 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/LogManagerTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/LogManagerTest.java
@@ -19,6 +19,8 @@ package org.apache.logging.log4j;
 import org.apache.logging.log4j.message.ParameterizedMessageFactory;
 import org.apache.logging.log4j.spi.LoggerContext;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.ResourceAccessMode;
+import org.junit.jupiter.api.parallel.ResourceLock;
 
 import java.io.Closeable;
 import java.io.IOException;
@@ -26,6 +28,7 @@ import java.io.IOException;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
+@ResourceLock(value = "log4j2.LoggerContextFactory", mode = ResourceAccessMode.READ)
 public class LogManagerTest {
 
     @SuppressWarnings("InnerClassMayBeStatic")
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/LoggerSupplierTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/LoggerSupplierTest.java
index e8c7b39..5ca79ab 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/LoggerSupplierTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/LoggerSupplierTest.java
@@ -30,15 +30,21 @@ import org.apache.logging.log4j.util.Supplier;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.ResourceAccessMode;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 
 import java.util.List;
 import java.util.Locale;
+import java.util.Properties;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
 /**
  * Tests Logger APIs with {@link Supplier}.
  */
+@ResourceLock(Resources.LOCALE)
+@ResourceLock("log4j2.TestLogger")
 public class LoggerSupplierTest {
 
     private final TestLogger logger = (TestLogger) LogManager.getLogger("LoggerTest");
@@ -59,11 +65,13 @@ public class LoggerSupplierTest {
 
     @Test
     public void flowTracing_SupplierOfJsonMessage() {
-        logger.traceEntry(() -> new JsonMessage(System.getProperties()));
+        Properties props = new Properties();
+        props.setProperty("foo", "bar");
+        logger.traceEntry(() -> new JsonMessage(props));
         assertThat(results).hasSize(1);
         String entry = results.get(0);
         assertThat(entry).startsWith("ENTER[ FLOW ] TRACE Enter")
-                .contains("\"java.runtime.name\":")
+                .contains("\"foo\":\"bar\"")
                 .doesNotContain("JsonMessage");
     }
 
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/LoggerTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/LoggerTest.java
index 803c8d7..bffbcde 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/LoggerTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/LoggerTest.java
@@ -31,15 +31,21 @@ import org.apache.logging.log4j.util.Strings;
 import org.apache.logging.log4j.util.Supplier;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.ResourceAccessMode;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 
 import java.util.Date;
 import java.util.List;
 import java.util.Locale;
+import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.*;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.jupiter.api.Assertions.*;
 
+@ResourceLock("log4j2.MarkerManager")
+@ResourceLock("log4j2.TestLogger")
 public class LoggerTest {
 
     private static class TestParameterizedMessageFactory {
@@ -61,12 +67,12 @@ public class LoggerTest {
         logger.atWarn().withThrowable(new Throwable("This is a test")).log((Message) new SimpleMessage("Log4j rocks!"));
         assertEquals(3, results.size());
         assertThat("Incorrect message 1", results.get(0),
-                equalTo(" DEBUG org.apache.logging.log4j.LoggerTest.builder(LoggerTest.java:59) Hello"));
+                equalTo(" DEBUG org.apache.logging.log4j.LoggerTest.builder(LoggerTest.java:64) Hello"));
         assertThat("Incorrect message 2", results.get(1), equalTo("test ERROR Hello John"));
         assertThat("Incorrect message 3", results.get(2),
                 startsWith(" WARN Log4j rocks! java.lang.Throwable: This is a test"));
         assertThat("Throwable incorrect in message 3", results.get(2),
-                containsString("at org.apache.logging.log4j.LoggerTest.builder(LoggerTest.java:61)"));
+                containsString("at org.apache.logging.log4j.LoggerTest.builder(LoggerTest.java:66)"));
     }
 
     @Test
@@ -81,12 +87,14 @@ public class LoggerTest {
 
     @Test
     public void flowTracingMessage() {
-        logger.traceEntry(new JsonMessage(System.getProperties()));
+        Properties props = new Properties();
+        props.setProperty("foo", "bar");
+        logger.traceEntry(new JsonMessage(props));
         final Response response = new Response(-1, "Generic error");
         logger.traceExit(new JsonMessage(response),  response);
         assertEquals(2, results.size());
         assertThat("Incorrect Entry", results.get(0), startsWith("ENTER[ FLOW ] TRACE Enter"));
-        assertThat("Missing entry data", results.get(0), containsString("\"java.runtime.name\":"));
+        assertThat("Missing entry data", results.get(0), containsString("\"foo\":\"bar\""));
         assertThat("incorrect Exit", results.get(1), startsWith("EXIT[ FLOW ] TRACE Exit"));
         assertThat("Missing exit data", results.get(1), containsString("\"message\":\"Generic error\""));
     }
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/MarkerTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/MarkerTest.java
index 1b6f251..1b72d1a 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/MarkerTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/MarkerTest.java
@@ -18,9 +18,11 @@ package org.apache.logging.log4j;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.ResourceLock;
 
 import static org.junit.jupiter.api.Assertions.*;
 
+@ResourceLock("log4j2.MarkerManager")
 public class MarkerTest {
 
     @BeforeEach
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/NoopThreadContextTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/NoopThreadContextTest.java
index 992b13c..5c79106 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/NoopThreadContextTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/NoopThreadContextTest.java
@@ -19,12 +19,15 @@ package org.apache.logging.log4j;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 
 import static org.junit.jupiter.api.Assertions.assertNull;
 
 /**
  * Tests {@link ThreadContext}.
  */
+@ResourceLock(Resources.SYSTEM_PROPERTIES)
 public class NoopThreadContextTest {
 
     private static final String TRUE = "true";
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/ThreadContextInheritanceTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/ThreadContextInheritanceTest.java
index f1cc91e..76f8ccd 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/ThreadContextInheritanceTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/ThreadContextInheritanceTest.java
@@ -22,6 +22,8 @@ import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 
 import static org.junit.jupiter.api.Assertions.*;
 
@@ -29,6 +31,7 @@ import static org.junit.jupiter.api.Assertions.*;
  * Tests {@link ThreadContext}.
  */
 @UsingAnyThreadContext
+@ResourceLock(Resources.SYSTEM_PROPERTIES)
 public class ThreadContextInheritanceTest {
 
     @BeforeAll
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/junit/UsingAnyThreadContext.java b/log4j-api/src/test/java/org/apache/logging/log4j/junit/UsingAnyThreadContext.java
index 935df61..cd45243 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/junit/UsingAnyThreadContext.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/junit/UsingAnyThreadContext.java
@@ -18,6 +18,9 @@
 package org.apache.logging.log4j.junit;
 
 import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.api.parallel.ResourceAccessMode;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
@@ -37,5 +40,6 @@ import java.lang.annotation.Target;
 @Documented
 @Inherited
 @ExtendWith(ThreadContextExtension.class)
+@ResourceLock(value = Resources.SYSTEM_PROPERTIES, mode = ResourceAccessMode.READ)
 public @interface UsingAnyThreadContext {
 }
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/junit/UsingThreadContextMap.java b/log4j-api/src/test/java/org/apache/logging/log4j/junit/UsingThreadContextMap.java
index df608f8..19cd705 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/junit/UsingThreadContextMap.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/junit/UsingThreadContextMap.java
@@ -18,6 +18,9 @@
 package org.apache.logging.log4j.junit;
 
 import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.api.parallel.ResourceAccessMode;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
@@ -37,5 +40,6 @@ import java.lang.annotation.Target;
 @Documented
 @Inherited
 @ExtendWith(ThreadContextExtension.class)
+@ResourceLock(value = Resources.SYSTEM_PROPERTIES, mode = ResourceAccessMode.READ)
 public @interface UsingThreadContextMap {
 }
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/junit/UsingThreadContextStack.java b/log4j-api/src/test/java/org/apache/logging/log4j/junit/UsingThreadContextStack.java
index 7d47e49..5e4fdac 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/junit/UsingThreadContextStack.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/junit/UsingThreadContextStack.java
@@ -18,6 +18,9 @@
 package org.apache.logging.log4j.junit;
 
 import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.api.parallel.ResourceAccessMode;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 
 import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
@@ -37,5 +40,6 @@ import java.lang.annotation.Target;
 @Documented
 @Inherited
 @ExtendWith(ThreadContextExtension.class)
+@ResourceLock(value = Resources.SYSTEM_PROPERTIES, mode = ResourceAccessMode.READ)
 public @interface UsingThreadContextStack {
 }
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/message/FormattedMessageTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/message/FormattedMessageTest.java
index 588a81d..ff5913c 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/message/FormattedMessageTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/message/FormattedMessageTest.java
@@ -26,13 +26,14 @@ import java.util.Locale;
 import org.apache.logging.log4j.junit.Mutable;
 import org.apache.logging.log4j.util.Constants;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.ResourceAccessMode;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 
 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
-/**
- *
- */
+@ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
 public class FormattedMessageTest {
 
     private static final String SPACE = Constants.JAVA_MAJOR_VERSION < 9 ? " " : "\u00a0";
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/message/LocalizedMessageTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/message/LocalizedMessageTest.java
index 4689a17..019bd69 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/message/LocalizedMessageTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/message/LocalizedMessageTest.java
@@ -22,12 +22,16 @@ import java.util.Locale;
 import org.apache.commons.lang3.SerializationUtils;
 import org.apache.logging.log4j.junit.Mutable;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.ResourceAccessMode;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 
 import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests LocalizedMessage.
  */
+@ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
 public class LocalizedMessageTest {
 
     private <T extends Serializable> T roundtrip(final T msg) {
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/message/MessageFormatMessageSerializationTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/message/MessageFormatMessageSerializationTest.java
index d158cd2..82480b0 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/message/MessageFormatMessageSerializationTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/message/MessageFormatMessageSerializationTest.java
@@ -21,8 +21,12 @@ import java.util.Arrays;
 import java.util.Collection;
 
 import org.apache.logging.log4j.AbstractSerializationTest;
+import org.junit.jupiter.api.parallel.ResourceAccessMode;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 import org.junit.runners.Parameterized;
 
+@ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
 public class MessageFormatMessageSerializationTest extends AbstractSerializationTest {
 
     @Parameterized.Parameters
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/message/MessageFormatMessageTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/message/MessageFormatMessageTest.java
index 42c54a2..2969467 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/message/MessageFormatMessageTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/message/MessageFormatMessageTest.java
@@ -20,14 +20,15 @@ package org.apache.logging.log4j.message;
 import org.apache.logging.log4j.junit.Mutable;
 import org.apache.logging.log4j.util.Constants;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.ResourceAccessMode;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 
 import java.util.Locale;
 
 import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
+@ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
 public class MessageFormatMessageTest {
 
     private static final String SPACE = Constants.JAVA_MAJOR_VERSION < 9 ? " " : "\u00a0";
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/message/MessageFormatsPerfTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/message/MessageFormatsPerfTest.java
index 6254b62..b5ff045 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/message/MessageFormatsPerfTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/message/MessageFormatsPerfTest.java
@@ -20,11 +20,15 @@ import org.apache.logging.log4j.util.Timer;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.ResourceAccessMode;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 
 /**
  *
  */
 @Tag("performance")
+@ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
 public class MessageFormatsPerfTest {
 
     private static final int LOOP_CNT = 500;
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/message/StringFormattedMessageTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/message/StringFormattedMessageTest.java
index 5d85d96..0dd8041 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/message/StringFormattedMessageTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/message/StringFormattedMessageTest.java
@@ -25,12 +25,13 @@ import java.util.Locale;
 
 import org.apache.logging.log4j.junit.Mutable;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.ResourceAccessMode;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 
 import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
+@ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
 public class StringFormattedMessageTest {
 
     private static final int LOOP_CNT = 500;
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/message/ThreadDumpMessageTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/message/ThreadDumpMessageTest.java
index 61817c0..8b408e5 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/message/ThreadDumpMessageTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/message/ThreadDumpMessageTest.java
@@ -19,13 +19,10 @@ package org.apache.logging.log4j.message;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.locks.ReentrantLock;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
 public class ThreadDumpMessageTest {
 
     @Test
@@ -90,7 +87,7 @@ public class ThreadDumpMessageTest {
         other.start();
         other.join();
 
-        assertTrue(!actual[0].contains("OtherThread"), "No mention of other thread in msg");
+        assertFalse(actual[0].contains("OtherThread"), "No mention of other thread in msg");
     }
 
     @Test
@@ -114,7 +111,7 @@ public class ThreadDumpMessageTest {
         keepAlive.countDown(); // allow thread to die
     }
 
-    private class Thread1 extends Thread {
+    private static class Thread1 extends Thread {
         private final ReentrantLock lock;
 
         public Thread1(final ReentrantLock lock) {
@@ -128,7 +125,7 @@ public class ThreadDumpMessageTest {
         }
     }
 
-    private class Thread2 extends Thread {
+    private static class Thread2 extends Thread {
         private final Object obj;
 
         public Thread2(final Object obj) {
@@ -142,7 +139,7 @@ public class ThreadDumpMessageTest {
         }
     }
 
-    private class ThreadWithCountDownLatch extends Thread {
+    private static class ThreadWithCountDownLatch extends Thread {
         private final CountDownLatch started;
         private final CountDownLatch keepAlive;
         volatile boolean finished;
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/simple/SimpleLoggerTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/simple/SimpleLoggerTest.java
index ac42497..9cd4043 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/simple/SimpleLoggerTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/simple/SimpleLoggerTest.java
@@ -22,8 +22,10 @@ import org.apache.logging.log4j.junit.LoggerContextFactoryExtension;
 import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
+import org.junit.jupiter.api.parallel.ResourceLock;
 
 @Tag("smoke")
+@ResourceLock("log4j2.LoggerContextFactory")
 public class SimpleLoggerTest {
 
     @RegisterExtension
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/spi/DefaultThreadContextMapTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/spi/DefaultThreadContextMapTest.java
index a894293..70c54f9 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/spi/DefaultThreadContextMapTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/spi/DefaultThreadContextMapTest.java
@@ -16,7 +16,10 @@
  */
 package org.apache.logging.log4j.spi;
 
+import org.apache.logging.log4j.junit.UsingThreadContextMap;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -26,6 +29,7 @@ import static org.junit.jupiter.api.Assertions.*;
 /**
  * Tests the {@code DefaultThreadContextMap} class.
  */
+@UsingThreadContextMap
 public class DefaultThreadContextMapTest {
 
     @Test
@@ -211,6 +215,7 @@ public class DefaultThreadContextMapTest {
     }
 
     @Test
+    @ResourceLock(Resources.SYSTEM_PROPERTIES)
     public void testThreadLocalNotInheritableByDefault() {
         System.clearProperty(DefaultThreadContextMap.INHERITABLE_MAP);
         final ThreadLocal<Map<String, String>> threadLocal = DefaultThreadContextMap.createThreadLocalMap(true);
@@ -218,6 +223,7 @@ public class DefaultThreadContextMapTest {
     }
     
     @Test
+    @ResourceLock(Resources.SYSTEM_PROPERTIES)
     public void testThreadLocalInheritableIfConfigured() {
         System.setProperty(DefaultThreadContextMap.INHERITABLE_MAP, "true");
         ThreadContextMapFactory.init();
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/spi/DefaultThreadContextStackTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/spi/DefaultThreadContextStackTest.java
index be6ebe3..68936a2 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/spi/DefaultThreadContextStackTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/spi/DefaultThreadContextStackTest.java
@@ -21,11 +21,13 @@ import java.util.Collections;
 import java.util.Iterator;
 
 import org.apache.logging.log4j.ThreadContext.ContextStack;
+import org.apache.logging.log4j.junit.UsingAnyThreadContext;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.*;
 
+@UsingAnyThreadContext
 public class DefaultThreadContextStackTest {
 
     @BeforeEach
@@ -85,7 +87,7 @@ public class DefaultThreadContextStackTest {
         assertEquals(stack, actual);
     }
 
-    @Test //(expected = UnsupportedOperationException.class)
+    @Test
     public void testModifyingImmutableOrNullThrowsException() {
         final DefaultThreadContextStack stack = createStack();
         final int originalSize = stack.size();
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/util/EnvironmentPropertySourceSecurityManagerIT.java b/log4j-api/src/test/java/org/apache/logging/log4j/util/EnvironmentPropertySourceSecurityManagerIT.java
index 0020c05..1d3dac4 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/util/EnvironmentPropertySourceSecurityManagerIT.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/util/EnvironmentPropertySourceSecurityManagerIT.java
@@ -22,6 +22,7 @@ import java.security.Permission;
 import org.apache.logging.log4j.junit.SecurityManagerTestRule;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.jupiter.api.parallel.ResourceLock;
 
 /**
  * Tests https://issues.apache.org/jira/browse/LOG4J2-2274.
@@ -35,6 +36,7 @@ import org.junit.Test;
  * @see SecurityManager
  * @see System#setSecurityManager(SecurityManager)
  */
+@ResourceLock("java.lang.SecurityManager")
 public class EnvironmentPropertySourceSecurityManagerIT {
 
 	@Rule
@@ -44,7 +46,7 @@ public class EnvironmentPropertySourceSecurityManagerIT {
 	 * Always throws a SecurityException for any environment variables permission
 	 * check.
 	 */
-	private class TestSecurityManager extends SecurityManager {
+	private static class TestSecurityManager extends SecurityManager {
 		@Override
 		public void checkPermission(final Permission permission) {
 			if ("getenv.*".equals(permission.getName())) {
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/util/PropertiesUtilTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/util/PropertiesUtilTest.java
index 617487e..da9d18b 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/util/PropertiesUtilTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/util/PropertiesUtilTest.java
@@ -19,6 +19,9 @@ package org.apache.logging.log4j.util;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.ResourceAccessMode;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 
 import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
@@ -76,6 +79,7 @@ public class PropertiesUtilTest {
     }
     
     @Test
+    @ResourceLock(value = Resources.SYSTEM_PROPERTIES, mode = ResourceAccessMode.READ)
     public void testGetMappedProperty_sun_stdout_encoding() {
         final PropertiesUtil pu = new PropertiesUtil(System.getProperties());
         Charset expected = System.console() == null ? Charset.defaultCharset() : StandardCharsets.UTF_8;
@@ -83,6 +87,7 @@ public class PropertiesUtilTest {
     }
 
     @Test
+    @ResourceLock(value = Resources.SYSTEM_PROPERTIES, mode = ResourceAccessMode.READ)
     public void testGetMappedProperty_sun_stderr_encoding() {
         final PropertiesUtil pu = new PropertiesUtil(System.getProperties());
         Charset expected = System.console() == null ? Charset.defaultCharset() : StandardCharsets.UTF_8;
@@ -90,6 +95,7 @@ public class PropertiesUtilTest {
     }
 
     @Test
+    @ResourceLock(Resources.SYSTEM_PROPERTIES)
     public void testNonStringSystemProperties() {
         Object key1 = "1";
         Object key2 = new Object();
@@ -105,6 +111,7 @@ public class PropertiesUtilTest {
     }
 
     @Test
+    @ResourceLock(value = Resources.SYSTEM_PROPERTIES, mode = ResourceAccessMode.READ)
     public void testPublish() {
         final Properties props = new Properties();
         final PropertiesUtil util = new PropertiesUtil(props);
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/util/PropertyFilePropertySourceSecurityManagerIT.java b/log4j-api/src/test/java/org/apache/logging/log4j/util/PropertyFilePropertySourceSecurityManagerIT.java
index e59e77e..76d363e 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/util/PropertyFilePropertySourceSecurityManagerIT.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/util/PropertyFilePropertySourceSecurityManagerIT.java
@@ -28,6 +28,10 @@ import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.jupiter.api.parallel.ResourceLock;
+
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 
 /**
  * Test related to https://issues.apache.org/jira/browse/LOG4J2-2274.
@@ -42,43 +46,44 @@ import org.junit.Test;
  * @see System#setSecurityManager(SecurityManager)
  * @see PropertyPermission
  */
+@ResourceLock("java.lang.SecurityManager")
 public class PropertyFilePropertySourceSecurityManagerIT {
 
-	@BeforeClass
-	public static void beforeClass() {
-		Assert.assertTrue(TEST_FIXTURE_PATH, Files.exists(Paths.get(TEST_FIXTURE_PATH)));
-	}
-	
-	@Rule
-	public final SecurityManagerTestRule rule = new SecurityManagerTestRule(new TestSecurityManager());
+    @BeforeClass
+    public static void beforeClass() {
+        assertTrue(TEST_FIXTURE_PATH, Files.exists(Paths.get(TEST_FIXTURE_PATH)));
+    }
+    
+    @Rule
+    public final SecurityManagerTestRule rule = new SecurityManagerTestRule(new TestSecurityManager());
 
-	private static final String TEST_FIXTURE_PATH = "src/test/resources/PropertiesUtilTest.properties";
+    private static final String TEST_FIXTURE_PATH = "src/test/resources/PropertiesUtilTest.properties";
 
-	/**
-	 * Always throws a SecurityException for any environment variables permission
-	 * check.
-	 */
-	private class TestSecurityManager extends SecurityManager {
+    /**
+     * Always throws a SecurityException for any environment variables permission
+     * check.
+     */
+    private static class TestSecurityManager extends SecurityManager {
 
-		@Override
-		public void checkPermission(final Permission permission) {
-			if (permission instanceof FilePermission && permission.getName().endsWith(TEST_FIXTURE_PATH)) {
-				throw new SecurityException();
-			}
-		}
-	}
+        @Override
+        public void checkPermission(final Permission permission) {
+            if (permission instanceof FilePermission && permission.getName().endsWith(TEST_FIXTURE_PATH)) {
+                throw new SecurityException();
+            }
+        }
+    }
 
-	/**
-	 * Makes sure we do not blow up with exception below due to a security manager
-	 * rejecting environment variable access in
-	 * {@link SystemPropertiesPropertySource}.
-	 * 
-	 * <pre>
-	 * </pre>
-	 */
-	@Test
-	public void test() {
-		final PropertiesUtil propertiesUtil = new PropertiesUtil(TEST_FIXTURE_PATH);
-		Assert.assertEquals(null, propertiesUtil.getStringProperty("a.1"));
-	}
+    /**
+     * Makes sure we do not blow up with exception below due to a security manager
+     * rejecting environment variable access in
+     * {@link SystemPropertiesPropertySource}.
+     * 
+     * <pre>
+     * </pre>
+     */
+    @Test
+    public void test() {
+        final PropertiesUtil propertiesUtil = new PropertiesUtil(TEST_FIXTURE_PATH);
+        assertNull(propertiesUtil.getStringProperty("a.1"));
+    }
 }
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/util/SystemPropertiesPropertySourceSecurityManagerIT.java b/log4j-api/src/test/java/org/apache/logging/log4j/util/SystemPropertiesPropertySourceSecurityManagerIT.java
index ebab710..811222e 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/util/SystemPropertiesPropertySourceSecurityManagerIT.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/util/SystemPropertiesPropertySourceSecurityManagerIT.java
@@ -24,6 +24,9 @@ import org.apache.logging.log4j.junit.SecurityManagerTestRule;
 import org.junit.Assert;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.jupiter.api.parallel.ResourceLock;
+
+import static org.junit.Assert.assertNull;
 
 /**
  * Test related to https://issues.apache.org/jira/browse/LOG4J2-2274.
@@ -38,6 +41,7 @@ import org.junit.Test;
  * @see System#setSecurityManager(SecurityManager)
  * @see PropertyPermission
  */
+@ResourceLock("java.lang.SecurityManager")
 public class SystemPropertiesPropertySourceSecurityManagerIT {
 
 	@Rule
@@ -47,7 +51,7 @@ public class SystemPropertiesPropertySourceSecurityManagerIT {
 	 * Always throws a SecurityException for any environment variables permission
 	 * check.
 	 */
-	private class TestSecurityManager extends SecurityManager {
+	private static class TestSecurityManager extends SecurityManager {
 		@Override
 		public void checkPermission(final Permission permission) {
 			if (permission instanceof PropertyPermission) {
@@ -81,6 +85,6 @@ public class SystemPropertiesPropertySourceSecurityManagerIT {
 	@Test
 	public void test() {
 		final PropertiesUtil propertiesUtil = new PropertiesUtil("src/test/resources/PropertiesUtilTest.properties");
-		Assert.assertEquals(null, propertiesUtil.getStringProperty("a.1"));
+		assertNull(propertiesUtil.getStringProperty("a.1"));
 	}
 }
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/util/SystemPropertiesPropertySourceTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/util/SystemPropertiesPropertySourceTest.java
index 2a3ede0..fb5d383 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/util/SystemPropertiesPropertySourceTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/util/SystemPropertiesPropertySourceTest.java
@@ -19,6 +19,8 @@ package org.apache.logging.log4j.util;
 
 import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 
 import java.util.Properties;
 import java.util.concurrent.ExecutionException;
@@ -30,6 +32,7 @@ import java.util.concurrent.Future;
  * Tests https://issues.apache.org/jira/browse/LOG4J2-2276.
  */
 @Tag("concurrency")
+@ResourceLock(Resources.SYSTEM_PROPERTIES)
 public class SystemPropertiesPropertySourceTest {
 
     private static final int ITERATIONS = 10000;
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/util/Unbox1Test.java b/log4j-api/src/test/java/org/apache/logging/log4j/util/Unbox1Test.java
index de785f0..e65ecea 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/util/Unbox1Test.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/util/Unbox1Test.java
@@ -19,12 +19,15 @@ package org.apache.logging.log4j.util;
 
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 
 import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the Unbox class.
  */
+@ResourceLock(Resources.SYSTEM_PROPERTIES)
 public class Unbox1Test {
     @BeforeAll
     public static void beforeClass() {
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/util/Unbox2ConfigurableTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/util/Unbox2ConfigurableTest.java
index 6438e34..1e62b09 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/util/Unbox2ConfigurableTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/util/Unbox2ConfigurableTest.java
@@ -20,6 +20,8 @@ import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
@@ -33,6 +35,7 @@ import static org.junit.jupiter.api.Assertions.*;
  * enable the test, too.
  */
 @EnabledIfSystemProperty(named = "test", matches = ".*Unbox2ConfigurableTest.*")
+@ResourceLock(Resources.SYSTEM_PROPERTIES)
 public class Unbox2ConfigurableTest {
     @BeforeAll
     public static void beforeClass() {
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/CollectionLoggingTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/CollectionLoggingTest.java
index 791a370..80ab899 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/CollectionLoggingTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/CollectionLoggingTest.java
@@ -23,6 +23,9 @@ import org.apache.logging.log4j.message.StringMapMessage;
 import org.apache.logging.log4j.test.appender.ListAppender;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.ResourceAccessMode;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 
 import java.net.NetworkInterface;
 import java.net.SocketException;
@@ -41,6 +44,7 @@ public class CollectionLoggingTest {
     }
 
     @Test
+    @ResourceLock(value = Resources.SYSTEM_PROPERTIES, mode = ResourceAccessMode.READ)
     public void testSystemProperties(final LoggerContext context) {
         final Logger logger = context.getLogger(CollectionLoggingTest.class.getName());
         logger.error(System.getProperties());
@@ -49,6 +53,7 @@ public class CollectionLoggingTest {
     }
 
     @Test
+    @ResourceLock(value = Resources.SYSTEM_PROPERTIES, mode = ResourceAccessMode.READ)
     public void testSimpleMap(final LoggerContext context) {
         final Logger logger = context.getLogger(CollectionLoggingTest.class.getName());
         logger.error(System.getProperties());
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderJAnsiMessageMain.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderJAnsiMessageMain.java
index f800806..3a150a0 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderJAnsiMessageMain.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderJAnsiMessageMain.java
@@ -29,6 +29,8 @@ import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.config.Configurator;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 
 /**
  * Shows how to use ANSI escape codes to color messages. Each message is printed to the console in color, but the rest
@@ -59,6 +61,7 @@ public class ConsoleAppenderJAnsiMessageMain {
      * This is a @Test method to make it easy to run from a command line with {@code mvn -Dtest=FQCN test}
      */
     @Test
+    @ResourceLock(Resources.SYSTEM_PROPERTIES)
     public void test() {
         test(null);
     }
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/TestConfiguratorError.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/TestConfiguratorError.java
index 4c5021c..8649984 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/TestConfiguratorError.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/TestConfiguratorError.java
@@ -21,9 +21,11 @@ import org.apache.logging.log4j.junit.LoggerContextFactoryExtension;
 import org.apache.logging.log4j.simple.SimpleLoggerContextFactory;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
+import org.junit.jupiter.api.parallel.ResourceLock;
 
 import static org.junit.jupiter.api.Assertions.assertNull;
 
+@ResourceLock("log4j2.LoggerContextFactory")
 public class TestConfiguratorError {
 
     @RegisterExtension
diff --git a/pom.xml b/pom.xml
index a4fb263..049f98e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1143,10 +1143,6 @@
           </systemPropertyVariables>
           <forkCount>1</forkCount>
           <reuseForks>false</reuseForks>
-          <excludes>
-            <exclude>${log4j.skip.test1}</exclude>
-            <exclude>${log4j.skip.test2}</exclude>
-          </excludes>
         </configuration>
       </plugin>
       <plugin>


[logging-log4j2] 08/10: Use ResourceLock for locale-related tests

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mattsicker pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 485f6c6fe274911d3efac8ab0ea007db5f15c89d
Author: Matt Sicker <bo...@gmail.com>
AuthorDate: Mon Sep 14 13:07:52 2020 -0500

    Use ResourceLock for locale-related tests
    
    Relates to LOG4J2-2921.
    
    Signed-off-by: Matt Sicker <bo...@gmail.com>
---
 .../core/appender/rolling/PatternProcessorTest.java | 21 +++++++++++++++++----
 .../core/appender/rolling/action/FileSizeTest.java  |  5 +++--
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessorTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessorTest.java
index 427d845..4ba1bc1 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessorTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessorTest.java
@@ -22,8 +22,10 @@ import java.util.Calendar;
 import java.util.Date;
 import java.util.Locale;
 
-import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.ResourceAccessMode;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 
 import static org.junit.jupiter.api.Assertions.*;
 
@@ -37,6 +39,7 @@ public class PatternProcessorTest {
     }
 
     @Test
+    @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testDontInterpretBackslashAsEscape() {
         final PatternProcessor pp = new PatternProcessor("c:\\test\\new/app-%d{HH-mm-ss}.log");
         final Calendar cal = Calendar.getInstance();
@@ -50,6 +53,7 @@ public class PatternProcessorTest {
     }
 
     @Test
+    @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeHourlyReturnsFirstMinuteOfNextHour() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd-HH}.log.gz");
         final Calendar initial = Calendar.getInstance();
@@ -64,6 +68,7 @@ public class PatternProcessorTest {
     }
 
     @Test
+    @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeHourlyReturnsFirstMinuteOfNextHour2() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd-HH}.log.gz");
         final Calendar initial = Calendar.getInstance();
@@ -78,6 +83,7 @@ public class PatternProcessorTest {
     }
 
     @Test
+    @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeHourlyReturnsFirstMinuteOfNextYear() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd-HH}.log.gz");
         final Calendar initial = Calendar.getInstance();
@@ -91,6 +97,7 @@ public class PatternProcessorTest {
     }
 
     @Test
+    @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeMillisecondlyReturnsNextMillisec() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd-HH-mm-ss.SSS}.log.gz");
         final Calendar initial = Calendar.getInstance();
@@ -107,6 +114,7 @@ public class PatternProcessorTest {
     }
 
     @Test
+    @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeMinutelyReturnsFirstSecondOfNextMinute() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd-HH-mm}.log.gz");
         final Calendar initial = Calendar.getInstance();
@@ -123,6 +131,7 @@ public class PatternProcessorTest {
     }
 
     @Test
+    @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeMonthlyReturnsFirstDayOfNextMonth() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM}.log.gz");
         final Calendar initial = Calendar.getInstance();
@@ -137,6 +146,7 @@ public class PatternProcessorTest {
     }
 
     @Test
+    @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeMonthlyReturnsFirstDayOfNextMonth2() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM}.log.gz");
         final Calendar initial = Calendar.getInstance();
@@ -151,6 +161,7 @@ public class PatternProcessorTest {
     }
 
     @Test
+    @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeMonthlyReturnsFirstDayOfNextMonth3() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM}.log.gz");
         final Calendar initial = Calendar.getInstance();
@@ -165,6 +176,7 @@ public class PatternProcessorTest {
     }
 
     @Test
+    @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeMonthlyReturnsFirstDayOfNextYear() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM}.log.gz");
         final Calendar initial = Calendar.getInstance();
@@ -179,6 +191,7 @@ public class PatternProcessorTest {
     }
 
     @Test
+    @ResourceLock(value = Resources.LOCALE, mode = ResourceAccessMode.READ)
     public void testGetNextTimeSecondlyReturnsFirstMillisecOfNextSecond() {
         final PatternProcessor pp = new PatternProcessor("logs/app-%d{yyyy-MM-dd-HH-mm-ss}.log.gz");
         final Calendar initial = Calendar.getInstance();
@@ -195,7 +208,7 @@ public class PatternProcessorTest {
     }
 
     @Test
-    @Tag("locale")
+    @ResourceLock(Resources.LOCALE)
     public void testGetNextTimeWeeklyReturnsFirstDayOfNextWeek_FRANCE() {
         final Locale old = Locale.getDefault();
         Locale.setDefault(Locale.FRANCE); // force 1st day of the week to be Monday
@@ -217,7 +230,7 @@ public class PatternProcessorTest {
     }
 
     @Test
-    @Tag("locale")
+    @ResourceLock(Resources.LOCALE)
     public void testGetNextTimeWeeklyReturnsFirstDayOfNextWeek_US() {
         final Locale old = Locale.getDefault();
         Locale.setDefault(Locale.US); // force 1st day of the week to be Sunday
@@ -242,7 +255,7 @@ public class PatternProcessorTest {
      * Tests https://issues.apache.org/jira/browse/LOG4J2-1232
      */
     @Test
-    @Tag("locale")
+    @ResourceLock(Resources.LOCALE)
     public void testGetNextTimeWeeklyReturnsFirstWeekInYear_US() {
         final Locale old = Locale.getDefault();
         Locale.setDefault(Locale.US); // force 1st day of the week to be Sunday
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/FileSizeTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/FileSizeTest.java
index 5e3d402..6c1dc37 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/FileSizeTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/FileSizeTest.java
@@ -17,8 +17,9 @@
 package org.apache.logging.log4j.core.appender.rolling.action;
 
 import org.apache.logging.log4j.core.appender.rolling.FileSize;
-import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.ResourceLock;
+import org.junit.jupiter.api.parallel.Resources;
 
 import java.util.Locale;
 
@@ -32,7 +33,7 @@ public class FileSizeTest {
     }
 
     @Test
-    @Tag("locale")
+    @ResourceLock(Resources.LOCALE)
     public void testParseInEurope() {
         // Caveat: Breaks the ability for this test to run in parallel with other tests :(
         Locale previousDefault = Locale.getDefault();


[logging-log4j2] 06/10: Migrate rolling action tests to JUnit 5

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mattsicker pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 6abea70e808beff9fe6dd7d9669de1e4e6e5867f
Author: Matt Sicker <bo...@gmail.com>
AuthorDate: Sun Sep 13 20:10:51 2020 -0500

    Migrate rolling action tests to JUnit 5
    
    Backported from 3.x.
    
    Signed-off-by: Matt Sicker <bo...@gmail.com>
---
 .../rolling/action/AbstractActionTest.java         | 33 ++++----
 .../rolling/action/Bzip2CompressActionTest.java    | 39 +++++-----
 .../appender/rolling/action/DeleteActionTest.java  | 15 ++--
 .../rolling/action/DeletingVisitorTest.java        | 10 +--
 .../core/appender/rolling/action/DurationTest.java | 21 +++---
 .../rolling/action/FileRenameActionTest.java       | 87 +++++-----------------
 .../core/appender/rolling/action/FileSizeTest.java | 13 ++--
 .../rolling/action/IfAccumulatedFileCountTest.java |  6 +-
 .../rolling/action/IfAccumulatedFileSizeTest.java  |  4 +-
 .../core/appender/rolling/action/IfAllTest.java    | 10 +--
 .../core/appender/rolling/action/IfAnyTest.java    |  8 +-
 .../appender/rolling/action/IfFileNameTest.java    | 22 +++---
 .../rolling/action/IfLastModifiedTest.java         |  4 +-
 .../core/appender/rolling/action/IfNotTest.java    | 10 +--
 .../action/PathSortByModificationTimeTest.java     | 52 ++++++-------
 .../rolling/action/ScriptConditionTest.java        | 31 ++++----
 .../rolling/action/SortingVisitorTest.java         | 57 ++++++--------
 17 files changed, 178 insertions(+), 244 deletions(-)

diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/AbstractActionTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/AbstractActionTest.java
index a1c3d21..fc2b7f1 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/AbstractActionTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/AbstractActionTest.java
@@ -16,24 +16,23 @@
  */
 package org.apache.logging.log4j.core.appender.rolling.action;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.junit.StatusLoggerLevel;
+import org.apache.logging.log4j.status.StatusData;
+import org.apache.logging.log4j.status.StatusLogger;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.util.List;
 
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.junit.StatusLoggerRule;
-import org.apache.logging.log4j.status.StatusData;
-import org.apache.logging.log4j.status.StatusLogger;
-import org.junit.Rule;
-import org.junit.Test;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.containsString;
+import static org.hamcrest.Matchers.hasSize;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
+@StatusLoggerLevel("WARN")
 public class AbstractActionTest {
 
-    @Rule
-    public StatusLoggerRule statusLogger = new StatusLoggerRule(Level.WARN);
-
     // Test for LOG4J2-2658
     @Test
     public void testExceptionsAreLoggedToStatusLogger() {
@@ -41,11 +40,11 @@ public class AbstractActionTest {
         statusLogger.clear();
         new TestAction().run();
         List<StatusData> statusDataList = statusLogger.getStatusData();
-        assertEquals(1, statusDataList.size());
+        assertThat(statusDataList, hasSize(1));
         StatusData statusData = statusDataList.get(0);
         assertEquals(Level.WARN, statusData.getLevel());
         String formattedMessage = statusData.getFormattedStatus();
-        assertTrue(formattedMessage, formattedMessage.contains("Exception reported by action 'class org.apache."
+        assertThat(formattedMessage, containsString("Exception reported by action 'class org.apache."
                 + "logging.log4j.core.appender.rolling.action.AbstractActionTest$TestAction' java.io.IOException: "
                 + "failed" + System.lineSeparator()
                 + "\tat org.apache.logging.log4j.core.appender.rolling.action.AbstractActionTest"
@@ -63,11 +62,11 @@ public class AbstractActionTest {
             }
         }.run();
         List<StatusData> statusDataList = statusLogger.getStatusData();
-        assertEquals(1, statusDataList.size());
+        assertThat(statusDataList, hasSize(1));
         StatusData statusData = statusDataList.get(0);
         assertEquals(Level.WARN, statusData.getLevel());
         String formattedMessage = statusData.getFormattedStatus();
-        assertTrue(formattedMessage.contains("Exception reported by action"));
+        assertThat(formattedMessage, containsString("Exception reported by action"));
     }
 
     @Test
@@ -81,11 +80,11 @@ public class AbstractActionTest {
             }
         }.run();
         List<StatusData> statusDataList = statusLogger.getStatusData();
-        assertEquals(1, statusDataList.size());
+        assertThat(statusDataList, hasSize(1));
         StatusData statusData = statusDataList.get(0);
         assertEquals(Level.WARN, statusData.getLevel());
         String formattedMessage = statusData.getFormattedStatus();
-        assertTrue(formattedMessage.contains("Exception reported by action"));
+        assertThat(formattedMessage, containsString("Exception reported by action"));
     }
 
     private static final class TestAction extends AbstractAction {
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/Bzip2CompressActionTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/Bzip2CompressActionTest.java
index 8178adc..bde1b75 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/Bzip2CompressActionTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/Bzip2CompressActionTest.java
@@ -17,30 +17,33 @@
 
 package org.apache.logging.log4j.core.appender.rolling.action;
 
+import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
+
 import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileWriter;
 import java.io.IOException;
 
-import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
-import org.junit.Test;
-
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests Bzip2CompressAction.
  */
 public class Bzip2CompressActionTest {
 
-    @Test(expected = NullPointerException.class)
+    @Test
     public void testConstructorDisallowsNullSource() {
-        new CommonsCompressAction("bzip2", null, new File("any"), true);
+        assertThrows(NullPointerException.class,
+                () -> new CommonsCompressAction("bzip2", null, new File("any"), true));
     }
 
-    @Test(expected = NullPointerException.class)
+    @Test
     public void testConstructorDisallowsNullDestination() {
-        new CommonsCompressAction("bzip2", new File("any"), null, true);
+        assertThrows(NullPointerException.class,
+                () -> new CommonsCompressAction("bzip2", new File("any"), null, true));
     }
 
     @Test
@@ -50,29 +53,28 @@ public class Bzip2CompressActionTest {
             source = new File(source.getName() + Math.random());
         }
         final boolean actual = CommonsCompressAction.execute("bzip2", source, new File("any2"), true);
-        assertEquals("Cannot compress non-existing file", false, actual);
+        assertFalse(actual, "Cannot compress non-existing file");
     }
 
     @Test
-    public void testExecuteCompressesSourceFileToDestinationFile() throws IOException {
+    public void testExecuteCompressesSourceFileToDestinationFile(@TempDir final File tempDir) throws IOException {
         final String LINE1 = "Here is line 1. Random text: ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n";
         final String LINE2 = "Here is line 2. Random text: ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n";
         final String LINE3 = "Here is line 3. Random text: ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n";
-        final File source = new File("target/compressme");
+        final File source = new File(tempDir, "compressme");
         try (FileWriter fw = new FileWriter(source, false)) {
             fw.write(LINE1);
             fw.write(LINE2);
             fw.write(LINE3);
             fw.flush();
         }
-        final File destination = new File("target/compressme.bz2");
-        destination.delete(); // just in case
-        assertFalse("Destination should not exist yet", destination.exists());
+        final File destination = new File(tempDir, "compressme.bz2");
+        assertFalse(destination.exists(), "Destination should not exist yet");
 
         final boolean actual = CommonsCompressAction.execute("bzip2", source, destination, true);
-        assertEquals("Bzip2CompressAction should have succeeded", true, actual);
-        assertTrue("Destination should exist after Bzip2CompressAction", destination.exists());
-        assertFalse("Source should have been deleted", source.exists());
+        assertTrue(actual, "Bzip2CompressAction should have succeeded");
+        assertTrue(destination.exists(), "Destination should exist after Bzip2CompressAction");
+        assertFalse(source.exists(), "Source should have been deleted");
 
         final byte[] bz2 = new byte[] { (byte) 0x42, (byte) 0x5A, (byte) 0x68, (byte) 0x39, (byte) 0x31, (byte) 0x41,
                 (byte) 0x59, (byte) 0x26, (byte) 0x53, (byte) 0x59, (byte) 0x9C, (byte) 0xE1, (byte) 0xE8, (byte) 0x2D,
@@ -102,9 +104,8 @@ public class Bzip2CompressActionTest {
                 n = fis.read(actualBz2, offset, actualBz2.length - offset);
                 offset += n;
             } while (offset < actualBz2.length);
-            assertArrayEquals("Compressed data corrupt", bz2, actualBz2);
+            assertArrayEquals(bz2, actualBz2, "Compressed data corrupt");
         }
-        destination.delete();
 
         // uncompress
         try (BZip2CompressorInputStream bzin = new BZip2CompressorInputStream(new ByteArrayInputStream(bz2))) {
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/DeleteActionTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/DeleteActionTest.java
index 8f13ae2..222845b 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/DeleteActionTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/DeleteActionTest.java
@@ -26,13 +26,12 @@ import java.util.Collections;
 import java.util.EnumSet;
 
 import org.apache.logging.log4j.core.BasicConfigurationFactory;
-import org.apache.logging.log4j.core.appender.rolling.action.DeleteAction;
-import org.apache.logging.log4j.core.appender.rolling.action.DeletingVisitor;
-import org.apache.logging.log4j.core.appender.rolling.action.PathCondition;
 import org.apache.logging.log4j.core.config.Configuration;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.instanceOf;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the {@code DeleteAction} class.
@@ -98,7 +97,7 @@ public class DeleteActionTest {
     public void testCreateFileVisitorReturnsDeletingVisitor() {
         final DeleteAction delete = createAnyFilter("any", true, 0, false);
         final FileVisitor<Path> visitor = delete.createFileVisitor(delete.getBasePath(), delete.getPathConditions());
-        assertTrue(visitor instanceof DeletingVisitor);
+        assertThat(visitor, instanceOf(DeletingVisitor.class));
     }
 
     @Test
@@ -106,14 +105,14 @@ public class DeleteActionTest {
         final DeleteAction delete = createAnyFilter("any", true, 0, false);
         assertFalse(delete.isTestMode());
         final FileVisitor<Path> visitor = delete.createFileVisitor(delete.getBasePath(), delete.getPathConditions());
-        assertTrue(visitor instanceof DeletingVisitor);
+        assertThat(visitor, instanceOf(DeletingVisitor.class));
         assertFalse(((DeletingVisitor) visitor).isTestMode());
 
         final DeleteAction deleteTestMode = createAnyFilter("any", true, 0, true);
         assertTrue(deleteTestMode.isTestMode());
         final FileVisitor<Path> testVisitor = deleteTestMode.createFileVisitor(delete.getBasePath(),
                 delete.getPathConditions());
-        assertTrue(testVisitor instanceof DeletingVisitor);
+        assertThat(testVisitor, instanceOf(DeletingVisitor.class));
         assertTrue(((DeletingVisitor) testVisitor).isTestMode());
     }
 }
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/DeletingVisitorTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/DeletingVisitorTest.java
index ed472ad..98cd8b8 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/DeletingVisitorTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/DeletingVisitorTest.java
@@ -28,9 +28,9 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the {@code DeletingVisitor} class.
@@ -58,7 +58,7 @@ public class DeletingVisitorTest {
     public void testAcceptedFilesAreDeleted() throws IOException {
         final Path base = Paths.get("/a/b/c");
         final FixedCondition ACCEPT_ALL = new FixedCondition(true);
-        final DeletingVisitorHelper visitor = new DeletingVisitorHelper(base, Arrays.asList(ACCEPT_ALL), false);
+        final DeletingVisitorHelper visitor = new DeletingVisitorHelper(base, Collections.singletonList(ACCEPT_ALL), false);
 
         final Path any = Paths.get("/a/b/c/any");
         visitor.visitFile(any, null);
@@ -69,7 +69,7 @@ public class DeletingVisitorTest {
     public void testRejectedFilesAreNotDeleted() throws IOException {
         final Path base = Paths.get("/a/b/c");
         final FixedCondition REJECT_ALL = new FixedCondition(false);
-        final DeletingVisitorHelper visitor = new DeletingVisitorHelper(base, Arrays.asList(REJECT_ALL), false);
+        final DeletingVisitorHelper visitor = new DeletingVisitorHelper(base, Collections.singletonList(REJECT_ALL), false);
 
         final Path any = Paths.get("/a/b/c/any");
         visitor.visitFile(any, null);
@@ -130,7 +130,7 @@ public class DeletingVisitorTest {
             }
         };
         final Path base = Paths.get("/a/b/c");
-        final DeletingVisitorHelper visitor = new DeletingVisitorHelper(base, Arrays.asList(filter), false);
+        final DeletingVisitorHelper visitor = new DeletingVisitorHelper(base, Collections.singletonList(filter), false);
 
         final Path child = Paths.get("/a/b/c/relative");
         visitor.visitFile(child, null);
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/DurationTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/DurationTest.java
index 456f95b..c156ded 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/DurationTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/DurationTest.java
@@ -17,34 +17,33 @@
 
 package org.apache.logging.log4j.core.appender.rolling.action;
 
-import org.apache.logging.log4j.core.appender.rolling.action.Duration;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the Duration class.
  */
 public class DurationTest {
 
-    @Test(expected = NullPointerException.class)
+    @Test
     public void testParseFailsIfNullText() {
-        Duration.parse(null);
+        assertThrows(NullPointerException.class, () -> Duration.parse(null));
     }
 
-    @Test(expected = IllegalArgumentException.class)
+    @Test
     public void testParseFailsIfInvalidPattern() {
-        Duration.parse("abc");
+        assertThrows(IllegalArgumentException.class, () -> Duration.parse("abc"));
     }
 
-    @Test(expected = IllegalArgumentException.class)
+    @Test
     public void testParseFailsIfSectionsOutOfOrder() {
-        Duration.parse("P4DT2M1S3H");
+        assertThrows(IllegalArgumentException.class, () -> Duration.parse("P4DT2M1S3H"));
     }
 
-    @Test(expected = IllegalArgumentException.class)
+    @Test
     public void testParseFailsIfTButMissingTime() {
-        Duration.parse("P1dT");
+        assertThrows(IllegalArgumentException.class, () -> Duration.parse("P1dT"));
     }
 
     @Test
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/FileRenameActionTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/FileRenameActionTest.java
index 8a4fc8e..3ab9ff8 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/FileRenameActionTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/FileRenameActionTest.java
@@ -16,67 +16,48 @@
  */
 package org.apache.logging.log4j.core.appender.rolling.action;
 
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
+
 import java.io.File;
 import java.io.PrintStream;
 
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
-/**
- *
- */
 public class FileRenameActionTest {
 
-    private static final String DIR = "target/fileRename";
-
-    @BeforeClass
-    public static void beforeClass() throws Exception {
-        final File file = new File(DIR);
-        file.mkdirs();
-    }
-
-    @AfterClass
-    public static void afterClass() {
-        deleteDir();
-    }
-
-    @After
-    public void after() {
-        deleteFiles();
-    }
+    @TempDir
+    File tempDir;
 
     @Test
     public void testRename1() throws Exception {
-        final File file = new File("target/fileRename/fileRename.log");
+        final File file = new File(tempDir, "fileRename.log");
         try (final PrintStream pos = new PrintStream(file)) {
             for (int i = 0; i < 100; ++i) {
                 pos.println("This is line " + i);
             }
         }
 
-        final File dest = new File("target/fileRename/newFile.log");
+        final File dest = new File(tempDir, "newFile.log");
         final FileRenameAction action = new FileRenameAction(file, dest, false);
         action.execute();
-        assertTrue("Renamed file does not exist", dest.exists());
-        assertTrue("Old file exists", !file.exists());
+        assertTrue(dest.exists(), "Renamed file does not exist");
+        assertFalse(file.exists(), "Old file exists");
     }
 
     @Test
     public void testEmpty() throws Exception {
-        final File file = new File("target/fileRename/fileRename.log");
+        final File file = new File(tempDir, "fileRename.log");
         try (final PrintStream pos = new PrintStream(file)) {
             // do nothing
         }
 
-        final File dest = new File("target/fileRename/newFile.log");
+        final File dest = new File(tempDir, "newFile.log");
         final FileRenameAction action = new FileRenameAction(file, dest, false);
         action.execute();
-        assertTrue("Renamed file does not exist", !dest.exists());
-        assertTrue("Old file does not exist", !file.exists());
+        assertFalse(dest.exists(), "Renamed file does not exist");
+        assertFalse(file.exists(), "Old file does not exist");
     }
 
 
@@ -90,40 +71,10 @@ public class FileRenameActionTest {
         }
 
         final File dest = new File("newFile.log");
-        try {
-            final FileRenameAction action = new FileRenameAction(file, dest, false);
-            action.execute();
-            assertTrue("Renamed file does not exist", dest.exists());
-            assertTrue("Old file exists", !file.exists());
-        } finally {
-            try {
-                dest.delete();
-                file.delete();
-            } catch (final Exception ex) {
-                System.out.println("Unable to cleanup files written to main directory");
-            }
-        }
-    }
-
-
-    private static void deleteDir() {
-        final File dir = new File(DIR);
-        if (dir.exists()) {
-            final File[] files = dir.listFiles();
-            for (final File file : files) {
-                file.delete();
-            }
-            dir.delete();
-        }
+        final FileRenameAction action = new FileRenameAction(file, dest, false);
+        action.execute();
+        assertTrue(dest.exists(), "Renamed file does not exist");
+        assertFalse(file.exists(), "Old file exists");
     }
 
-    private static void deleteFiles() {
-        final File dir = new File(DIR);
-        if (dir.exists()) {
-            final File[] files = dir.listFiles();
-            for (final File file : files) {
-                file.delete();
-            }
-        }
-    }
 }
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/FileSizeTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/FileSizeTest.java
index dfa7cec..5e3d402 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/FileSizeTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/FileSizeTest.java
@@ -17,29 +17,28 @@
 package org.apache.logging.log4j.core.appender.rolling.action;
 
 import org.apache.logging.log4j.core.appender.rolling.FileSize;
-import org.junit.Test;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
 
-import java.text.NumberFormat;
 import java.util.Locale;
 
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class FileSizeTest {
 
     @Test
     public void testParse() {
-        assertThat(FileSize.parse("5k", 0), is(5L * 1024));
+        assertEquals(5 * 1024, FileSize.parse("5k", 0));
     }
 
     @Test
+    @Tag("locale")
     public void testParseInEurope() {
         // Caveat: Breaks the ability for this test to run in parallel with other tests :(
         Locale previousDefault = Locale.getDefault();
         try {
             Locale.setDefault(new Locale("de", "DE"));
-            assertThat(FileSize.parse("1,000", 0), is(1000L));
+            assertEquals(1000, FileSize.parse("1,000", 0));
         } finally {
             Locale.setDefault(previousDefault);
         }
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAccumulatedFileCountTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAccumulatedFileCountTest.java
index 0022b40..af5ab26 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAccumulatedFileCountTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAccumulatedFileCountTest.java
@@ -17,9 +17,9 @@
 
 package org.apache.logging.log4j.core.appender.rolling.action;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the IfAccumulatedFileCount class.
@@ -54,7 +54,7 @@ public class IfAccumulatedFileCountTest {
 
         for (int i = 1; i < 10; i++) {
             if (i <= 3) {
-                assertFalse("i=" + i, condition.accept(null, null, null));
+                assertFalse(condition.accept(null, null, null), "i=" + i);
                 assertEquals(0, counter.getAcceptCount());
             } else {
                 assertTrue(condition.accept(null, null, null));
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAccumulatedFileSizeTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAccumulatedFileSizeTest.java
index 740c998..76bb0fc 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAccumulatedFileSizeTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAccumulatedFileSizeTest.java
@@ -17,9 +17,9 @@
 
 package org.apache.logging.log4j.core.appender.rolling.action;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the IfAccumulatedFileSize class.
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAllTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAllTest.java
index aa4884a..5e85d1c 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAllTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAllTest.java
@@ -17,11 +17,9 @@
 
 package org.apache.logging.log4j.core.appender.rolling.action;
 
-import org.apache.logging.log4j.core.appender.rolling.action.IfAll;
-import org.apache.logging.log4j.core.appender.rolling.action.PathCondition;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the And composite condition.
@@ -37,12 +35,12 @@ public class IfAllTest {
         assertFalse(IfAll.createAndCondition(TRUE, FALSE).accept(null, null, null));
         assertFalse(IfAll.createAndCondition(FALSE, FALSE).accept(null, null, null));
     }
-
+    
     @Test
     public void testEmptyIsFalse() {
         assertFalse(IfAll.createAndCondition().accept(null, null, null));
     }
-
+    
     @Test
     public void testBeforeTreeWalk() {
         final CountingCondition counter = new CountingCondition(true);
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAnyTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAnyTest.java
index ba63a27..2a2c7db 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAnyTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfAnyTest.java
@@ -17,9 +17,9 @@
 
 package org.apache.logging.log4j.core.appender.rolling.action;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the Or composite condition.
@@ -35,12 +35,12 @@ public class IfAnyTest {
         assertTrue(IfAny.createOrCondition(TRUE, FALSE).accept(null, null, null));
         assertFalse(IfAny.createOrCondition(FALSE, FALSE).accept(null, null, null));
     }
-
+    
     @Test
     public void testEmptyIsFalse() {
         assertFalse(IfAny.createOrCondition().accept(null, null, null));
     }
-
+    
     @Test
     public void testBeforeTreeWalk() {
         final CountingCondition counter = new CountingCondition(true);
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfFileNameTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfFileNameTest.java
index 978031e..9b0b0db 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfFileNameTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfFileNameTest.java
@@ -20,18 +20,18 @@ package org.apache.logging.log4j.core.appender.rolling.action;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class IfFileNameTest {
 
-    @Test(expected = IllegalArgumentException.class)
+    @Test
     public void testCreateNameConditionFailsIfBothRegexAndPathAreNull() {
-        IfFileName.createNameCondition(null, null);
+        assertThrows(IllegalArgumentException.class, () -> IfFileName.createNameCondition(null, null));
     }
 
-    @Test()
+    @Test
     public void testCreateNameConditionAcceptsIfEitherRegexOrPathOrBothAreNonNull() {
         IfFileName.createNameCondition("bar", null);
         IfFileName.createNameCondition(null, "foo");
@@ -51,7 +51,7 @@ public class IfFileNameTest {
         final IfFileName filter = IfFileName.createNameCondition("path", "regex");
         final Path relativePath = Paths.get("path");
         assertTrue(filter.accept(null, relativePath, null));
-
+        
         final Path pathMatchingRegex = Paths.get("regex");
         assertFalse(filter.accept(null, pathMatchingRegex, null));
     }
@@ -61,7 +61,7 @@ public class IfFileNameTest {
         final IfFileName regexFilter = IfFileName.createNameCondition(null, "regex");
         final Path pathMatchingRegex = Paths.get("regex");
         assertTrue(regexFilter.accept(null, pathMatchingRegex, null));
-
+        
         final Path noMatch = Paths.get("nomatch");
         assertFalse(regexFilter.accept(null, noMatch, null));
     }
@@ -71,7 +71,7 @@ public class IfFileNameTest {
         final IfFileName pathFilter = IfFileName.createNameCondition("path", null);
         final Path relativePath = Paths.get("path");
         assertTrue(pathFilter.accept(null, relativePath, null));
-
+        
         final IfFileName regexFilter = IfFileName.createNameCondition(null, "regex");
         final Path pathMatchingRegex = Paths.get("regex");
         assertTrue(regexFilter.accept(null, pathMatchingRegex, null));
@@ -82,14 +82,14 @@ public class IfFileNameTest {
         final CountingCondition counter = new CountingCondition(true);
         final IfFileName regexFilter = IfFileName.createNameCondition(null, "regex", counter);
         final Path pathMatchingRegex = Paths.get("regex");
-
+        
         assertTrue(regexFilter.accept(null, pathMatchingRegex, null));
         assertEquals(1, counter.getAcceptCount());
         assertTrue(regexFilter.accept(null, pathMatchingRegex, null));
         assertEquals(2, counter.getAcceptCount());
         assertTrue(regexFilter.accept(null, pathMatchingRegex, null));
         assertEquals(3, counter.getAcceptCount());
-
+        
         final Path noMatch = Paths.get("nomatch");
         assertFalse(regexFilter.accept(null, noMatch, null));
         assertEquals(3, counter.getAcceptCount()); // no increase
@@ -104,7 +104,7 @@ public class IfFileNameTest {
         final CountingCondition counter = new CountingCondition(true);
         final IfFileName globFilter = IfFileName.createNameCondition("glob", null, counter);
         final Path pathMatchingGlob = Paths.get("glob");
-
+        
         assertTrue(globFilter.accept(null, pathMatchingGlob, null));
         assertEquals(1, counter.getAcceptCount());
         assertTrue(globFilter.accept(null, pathMatchingGlob, null));
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfLastModifiedTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfLastModifiedTest.java
index 520e68d..b6f177c 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfLastModifiedTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfLastModifiedTest.java
@@ -19,9 +19,9 @@ package org.apache.logging.log4j.core.appender.rolling.action;
 
 import java.nio.file.attribute.FileTime;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the FileAgeFilter class.
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfNotTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfNotTest.java
index c5abfb9..3563bb1 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfNotTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/IfNotTest.java
@@ -17,10 +17,9 @@
 
 package org.apache.logging.log4j.core.appender.rolling.action;
 
-import org.apache.logging.log4j.core.appender.rolling.action.IfNot;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the Not composite condition.
@@ -36,9 +35,10 @@ public class IfNotTest {
         assertTrue(IfNot.createNotCondition(new FixedCondition(false)).accept(null, null, null));
     }
 
-    @Test(expected = NullPointerException.class)
+    @Test
     public void testEmptyIsFalse() {
-        assertFalse(IfNot.createNotCondition(null).accept(null, null, null));
+        assertThrows(NullPointerException.class,
+                () -> IfNot.createNotCondition(null).accept(null, null, null));
     }
 
     @Test
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/PathSortByModificationTimeTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/PathSortByModificationTimeTest.java
index 15b2eae..60c43a3 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/PathSortByModificationTimeTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/PathSortByModificationTimeTest.java
@@ -21,9 +21,9 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.nio.file.attribute.FileTime;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the {@code PathSortByModificationTime} class.
@@ -49,18 +49,18 @@ public class PathSortByModificationTimeTest {
         final DummyFileAttributes a2 = new DummyFileAttributes();
         a1.lastModified = FileTime.fromMillis(100);
         a2.lastModified = FileTime.fromMillis(222);
-
-        assertEquals("same path, 2nd more recent", 1, sorter.compare(path(p1, a1), path(p1, a2)));
-        assertEquals("path ignored, 2nd more recent", 1, sorter.compare(path(p1, a1), path(p2, a2)));
-        assertEquals("path ignored, 2nd more recent", 1, sorter.compare(path(p2, a1), path(p1, a2)));
-
-        assertEquals("same path, 1st more recent", -1, sorter.compare(path(p1, a2), path(p1, a1)));
-        assertEquals("path ignored, 1st more recent", -1, sorter.compare(path(p1, a2), path(p2, a1)));
-        assertEquals("path ignored, 1st more recent", -1, sorter.compare(path(p2, a2), path(p1, a1)));
-
-        assertEquals("same path, same time", 0, sorter.compare(path(p1, a1), path(p1, a1)));
-        assertEquals("p2 < p1, same time", 1, sorter.compare(path(p1, a1), path(p2, a1)));
-        assertEquals("p2 < p1, same time", -1, sorter.compare(path(p2, a1), path(p1, a1)));
+        
+        assertEquals(1, sorter.compare(path(p1, a1), path(p1, a2)), "same path, 2nd more recent");
+        assertEquals(1, sorter.compare(path(p1, a1), path(p2, a2)), "path ignored, 2nd more recent");
+        assertEquals(1, sorter.compare(path(p2, a1), path(p1, a2)), "path ignored, 2nd more recent");
+        
+        assertEquals(-1, sorter.compare(path(p1, a2), path(p1, a1)), "same path, 1st more recent");
+        assertEquals(-1, sorter.compare(path(p1, a2), path(p2, a1)), "path ignored, 1st more recent");
+        assertEquals(-1, sorter.compare(path(p2, a2), path(p1, a1)), "path ignored, 1st more recent");
+        
+        assertEquals(0, sorter.compare(path(p1, a1), path(p1, a1)), "same path, same time");
+        assertEquals(1, sorter.compare(path(p1, a1), path(p2, a1)), "p2 < p1, same time");
+        assertEquals(-1, sorter.compare(path(p2, a1), path(p1, a1)), "p2 < p1, same time");
     }
 
     @Test
@@ -72,18 +72,18 @@ public class PathSortByModificationTimeTest {
         final DummyFileAttributes a2 = new DummyFileAttributes();
         a1.lastModified = FileTime.fromMillis(100);
         a2.lastModified = FileTime.fromMillis(222);
-
-        assertEquals("same path, 2nd more recent", -1, sorter.compare(path(p1, a1), path(p1, a2)));
-        assertEquals("path ignored, 2nd more recent", -1, sorter.compare(path(p1, a1), path(p2, a2)));
-        assertEquals("path ignored, 2nd more recent", -1, sorter.compare(path(p2, a1), path(p1, a2)));
-
-        assertEquals("same path, 1st more recent", 1, sorter.compare(path(p1, a2), path(p1, a1)));
-        assertEquals("path ignored, 1st more recent", 1, sorter.compare(path(p1, a2), path(p2, a1)));
-        assertEquals("path ignored, 1st more recent", 1, sorter.compare(path(p2, a2), path(p1, a1)));
-
-        assertEquals("same path, same time", 0, sorter.compare(path(p1, a1), path(p1, a1)));
-        assertEquals("p1 < p2, same time", -1, sorter.compare(path(p1, a1), path(p2, a1)));
-        assertEquals("p1 < p2, same time", 1, sorter.compare(path(p2, a1), path(p1, a1)));
+        
+        assertEquals(-1, sorter.compare(path(p1, a1), path(p1, a2)), "same path, 2nd more recent");
+        assertEquals(-1, sorter.compare(path(p1, a1), path(p2, a2)), "path ignored, 2nd more recent");
+        assertEquals(-1, sorter.compare(path(p2, a1), path(p1, a2)), "path ignored, 2nd more recent");
+        
+        assertEquals(1, sorter.compare(path(p1, a2), path(p1, a1)), "same path, 1st more recent");
+        assertEquals(1, sorter.compare(path(p1, a2), path(p2, a1)), "path ignored, 1st more recent");
+        assertEquals(1, sorter.compare(path(p2, a2), path(p1, a1)), "path ignored, 1st more recent");
+        
+        assertEquals(0, sorter.compare(path(p1, a1), path(p1, a1)), "same path, same time");
+        assertEquals(-1, sorter.compare(path(p1, a1), path(p2, a1)), "p1 < p2, same time");
+        assertEquals(1, sorter.compare(path(p2, a1), path(p1, a1)), "p1 < p2, same time");
     }
 
     private PathWithAttributes path(final Path path, final DummyFileAttributes attributes) {
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/ScriptConditionTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/ScriptConditionTest.java
index 0379767..346e898 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/ScriptConditionTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/ScriptConditionTest.java
@@ -17,33 +17,33 @@
 
 package org.apache.logging.log4j.core.appender.rolling.action;
 
+import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.config.DefaultConfiguration;
+import org.apache.logging.log4j.core.script.Script;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
+
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.logging.log4j.categories.Scripts;
-import org.apache.logging.log4j.core.config.Configuration;
-import org.apache.logging.log4j.core.config.DefaultConfiguration;
-import org.apache.logging.log4j.core.script.Script;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the ScriptCondition class.
  */
 public class ScriptConditionTest {
 
-    @Test(expected = NullPointerException.class)
+    @Test
     public void testConstructorDisallowsNullScript() {
-        new ScriptCondition(null, new DefaultConfiguration());
+        assertThrows(NullPointerException.class, () -> new ScriptCondition(null, new DefaultConfiguration()));
     }
 
-    @Test(expected = NullPointerException.class)
+    @Test
     public void testConstructorDisallowsNullConfig() {
-        new ScriptCondition(new Script("test", "js", "print('hi')"), null);
+        assertThrows(NullPointerException.class,
+                () -> new ScriptCondition(new Script("test", "js", "print('hi')"), null));
     }
 
     @Test
@@ -51,9 +51,10 @@ public class ScriptConditionTest {
         assertNull(ScriptCondition.createCondition(null, new DefaultConfiguration()));
     }
 
-    @Test(expected = NullPointerException.class)
+    @Test
     public void testCreateConditionDisallowsNullConfig() {
-        ScriptCondition.createCondition(new Script("test", "js", "print('hi')"), null);
+        assertThrows(NullPointerException.class, () -> ScriptCondition.createCondition(
+                new Script("test", "js", "print('hi')"), null));
     }
 
     @Test
@@ -92,7 +93,7 @@ public class ScriptConditionTest {
     }
 
     @Test
-    @Category(Scripts.Groovy.class)
+    @Tag("groovy")
     public void testSelectFilesToDelete3() {
         final Configuration config = new DefaultConfiguration();
         config.initialize(); // creates the ScriptManager
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/SortingVisitorTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/SortingVisitorTest.java
index a292851..9df7ab8 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/SortingVisitorTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rolling/action/SortingVisitorTest.java
@@ -17,6 +17,10 @@
 
 package org.apache.logging.log4j.core.appender.rolling.action;
 
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
+
 import java.io.IOException;
 import java.nio.file.FileVisitOption;
 import java.nio.file.FileVisitResult;
@@ -24,34 +28,29 @@ import java.nio.file.Files;
 import java.nio.file.NoSuchFileException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.nio.file.attribute.FileAttribute;
 import java.nio.file.attribute.FileTime;
 import java.util.Collections;
 import java.util.List;
 import java.util.Set;
 
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the SortingVisitor class.
  */
 public class SortingVisitorTest {
 
-    private Path base;
+    @TempDir
+    Path base;
     private Path aaa;
     private Path bbb;
     private Path ccc;
 
-    @Before
+    @BeforeEach
     public void setUp() throws Exception {
-        base = Files.createTempDirectory("tempDir", new FileAttribute<?>[0]);
-        aaa = Files.createTempFile(base, "aaa", null, new FileAttribute<?>[0]);
-        bbb = Files.createTempFile(base, "bbb", null, new FileAttribute<?>[0]);
-        ccc = Files.createTempFile(base, "ccc", null, new FileAttribute<?>[0]);
+        aaa = Files.createFile(base.resolve("aaa"));
+        bbb = Files.createFile(base.resolve("bbb"));
+        ccc = Files.createFile(base.resolve("ccc"));
 
         // lastModified granularity is 1 sec(!) on some file systems...
         final long now = System.currentTimeMillis();
@@ -60,14 +59,6 @@ public class SortingVisitorTest {
         Files.setLastModifiedTime(ccc, FileTime.fromMillis(now + 2000));
     }
 
-    @After
-    public void tearDown() throws Exception {
-        Files.deleteIfExists(ccc);
-        Files.deleteIfExists(bbb);
-        Files.deleteIfExists(aaa);
-        Files.deleteIfExists(base);
-    }
-
     @Test
     public void testRecentFirst() throws Exception {
         final SortingVisitor visitor = new SortingVisitor(new PathSortByModificationTime(true));
@@ -76,10 +67,10 @@ public class SortingVisitorTest {
 
         final List<PathWithAttributes> found = visitor.getSortedPaths();
         assertNotNull(found);
-        assertEquals("file count", 3, found.size());
-        assertEquals("1st: most recent; sorted=" + found, ccc, found.get(0).getPath());
-        assertEquals("2nd; sorted=" + found, bbb, found.get(1).getPath());
-        assertEquals("3rd: oldest; sorted=" + found, aaa, found.get(2).getPath());
+        assertEquals(3, found.size(), "file count");
+        assertEquals(ccc, found.get(0).getPath(), "1st: most recent; sorted=" + found);
+        assertEquals(bbb, found.get(1).getPath(), "2nd; sorted=" + found);
+        assertEquals(aaa, found.get(2).getPath(), "3rd: oldest; sorted=" + found);
     }
 
     @Test
@@ -90,16 +81,16 @@ public class SortingVisitorTest {
 
         final List<PathWithAttributes> found = visitor.getSortedPaths();
         assertNotNull(found);
-        assertEquals("file count", 3, found.size());
-        assertEquals("1st: oldest first; sorted=" + found, aaa, found.get(0).getPath());
-        assertEquals("2nd; sorted=" + found, bbb, found.get(1).getPath());
-        assertEquals("3rd: most recent sorted; list=" + found, ccc, found.get(2).getPath());
+        assertEquals(3, found.size(), "file count");
+        assertEquals(aaa, found.get(0).getPath(), "1st: oldest first; sorted=" + found);
+        assertEquals(bbb, found.get(1).getPath(), "2nd; sorted=" + found);
+        assertEquals(ccc, found.get(2).getPath(), "3rd: most recent sorted; list=" + found);
     }
 
     @Test
     public void testNoSuchFileFailure() throws IOException {
         SortingVisitor visitor = new SortingVisitor(new PathSortByModificationTime(false));
-        assertEquals(
+        assertSame(
                 FileVisitResult.CONTINUE,
                 visitor.visitFileFailed(Paths.get("doesNotExist"), new NoSuchFileException("doesNotExist")));
     }
@@ -108,11 +99,7 @@ public class SortingVisitorTest {
     public void testIOException() {
         SortingVisitor visitor = new SortingVisitor(new PathSortByModificationTime(false));
         IOException exception = new IOException();
-        try {
-            visitor.visitFileFailed(Paths.get("doesNotExist"), exception);
-            fail();
-        } catch (IOException e) {
-            assertSame(exception, e);
-        }
+        assertSame(exception,
+                assertThrows(IOException.class, () -> visitor.visitFileFailed(Paths.get("doesNotExist"), exception)));
     }
 }


[logging-log4j2] 02/10: Migrate more appender tests to JUnit 5

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mattsicker pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit e0d78a4494ad07edfdbbc38f321c21a66dc3d439
Author: Matt Sicker <bo...@gmail.com>
AuthorDate: Sun Sep 13 16:30:42 2020 -0500

    Migrate more appender tests to JUnit 5
    
    Backported from 3.x.
    
    Signed-off-by: Matt Sicker <bo...@gmail.com>
---
 .../log4j/core/appender/InMemoryAppenderTest.java  |  15 +-
 .../core/appender/MemoryMappedFileManagerTest.java |  28 ++-
 .../core/appender/OutputStreamManagerTest.java     |  18 +-
 .../core/appender/RandomAccessFileManagerTest.java |  37 ++--
 .../core/appender/ReconfigureAppenderTest.java     |   6 +-
 .../core/appender/ScriptAppenderSelectorTest.java  |  87 +++-----
 .../core/appender/SocketAppenderBuilderTest.java   |   9 +-
 .../log4j/core/appender/TlsSyslogFrameTest.java    |  16 +-
 .../log4j/core/appender/WriterAppenderTest.java    | 224 +++++++++++----------
 9 files changed, 202 insertions(+), 238 deletions(-)

diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/InMemoryAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/InMemoryAppenderTest.java
index 75d4929..fe0c359 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/InMemoryAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/InMemoryAppenderTest.java
@@ -24,13 +24,10 @@ import org.apache.logging.log4j.core.layout.PatternLayout;
 import org.apache.logging.log4j.message.SimpleMessage;
 import org.apache.logging.log4j.test.appender.InMemoryAppender;
 import org.apache.logging.log4j.util.Strings;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
-/**
- *
- */
 public class InMemoryAppenderTest {
 
     @Test
@@ -68,15 +65,15 @@ public class InMemoryAppenderTest {
                 .setMessage(new SimpleMessage("Test")) //
                 .build();
         app.start();
-        assertTrue("Appender did not start", app.isStarted());
+        assertTrue(app.isStarted(), "Appender did not start");
         app.append(event);
         app.append(event);
         final String msg = app.toString();
-        assertNotNull("No message", msg);
+        assertNotNull(msg, "No message");
         final String expectedHeader = header == null ? "" : header;
         final String expected = expectedHeader + "Test" + Strings.LINE_SEPARATOR + "Test" + Strings.LINE_SEPARATOR;
-        assertTrue("Incorrect message: " + msg, msg.equals(expected));
+        assertEquals(expected, msg, "Incorrect message: " + msg);
         app.stop();
-        assertFalse("Appender did not stop", app.isStarted());
+        assertFalse(app.isStarted(), "Appender did not stop");
     }
 }
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManagerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManagerTest.java
index 84f7a4e..e5bb0d2 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManagerTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManagerTest.java
@@ -16,17 +16,16 @@
  */
 package org.apache.logging.log4j.core.appender;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.FileReader;
 import java.io.IOException;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the MemoryMappedFileManager class.
@@ -35,12 +34,13 @@ import org.junit.Test;
  */
 public class MemoryMappedFileManagerTest {
 
+    @TempDir
+    File tempDir;
+
     @Test
     public void testRemapAfterInitialMapSizeExceeded() throws IOException {
         final int mapSize = 64; // very small, on purpose
-        final File file = File.createTempFile("log4j2", "test");
-        file.deleteOnExit();
-        assertEquals(0, file.length());
+        final File file = new File(tempDir, "memory-mapped-file.bin");
 
         final boolean append = false;
         final boolean immediateFlush = false;
@@ -57,8 +57,8 @@ public class MemoryMappedFileManagerTest {
         try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
             String line = reader.readLine();
             for (int i = 0; i < 1000; i++) {
-                assertNotNull("line", line);
-                assertTrue("line incorrect", line.contains("Message " + i));
+                assertNotNull(line, "line");
+                assertTrue(line.contains("Message " + i), "line incorrect");
                 line = reader.readLine();
             }
         }
@@ -66,9 +66,7 @@ public class MemoryMappedFileManagerTest {
 
     @Test
     public void testAppendDoesNotOverwriteExistingFile() throws IOException {
-        final File file = File.createTempFile("log4j2", "test");
-        file.deleteOnExit();
-        assertEquals(0, file.length());
+        final File file = new File(tempDir, "memory-mapped-file.bin");
 
         final int initialLength = 4 * 1024;
 
@@ -77,7 +75,7 @@ public class MemoryMappedFileManagerTest {
             fos.write(new byte[initialLength], 0, initialLength);
             fos.flush();
         }
-        assertEquals("all flushed to disk", initialLength, file.length());
+        assertEquals(initialLength, file.length(), "all flushed to disk");
 
         final boolean isAppend = true;
         final boolean immediateFlush = false;
@@ -86,6 +84,6 @@ public class MemoryMappedFileManagerTest {
             manager.writeBytes(new byte[initialLength], 0, initialLength);
         }
         final int expected = initialLength * 2;
-        assertEquals("appended, not overwritten", expected, file.length());
+        assertEquals(expected, file.length(), "appended, not overwritten");
     }
 }
\ No newline at end of file
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/OutputStreamManagerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/OutputStreamManagerTest.java
index 884d6b8..86d1990 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/OutputStreamManagerTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/OutputStreamManagerTest.java
@@ -20,28 +20,24 @@ package org.apache.logging.log4j.core.appender;
 import java.util.List;
 
 import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.junit.LoggerContextSource;
 import org.apache.logging.log4j.status.StatusData;
 import org.apache.logging.log4j.status.StatusLogger;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * OutputStreamManager Tests.
  */
 public class OutputStreamManagerTest {
-    private static final String CONFIG = "multipleIncompatibleAppendersTest.xml";
-
-    @ClassRule
-    public static LoggerContextRule context = new LoggerContextRule(CONFIG);
 
     @Test
-    public void narrow() throws Exception {
-        final Logger logger = LogManager.getLogger(OutputStreamManagerTest.class);
+    @LoggerContextSource("multipleIncompatibleAppendersTest.xml")
+    public void narrow(final LoggerContext context) {
+        final Logger logger = context.getLogger(OutputStreamManagerTest.class);
         logger.info("test");
         final List<StatusData> statusData = StatusLogger.getLogger().getStatusData();
         StatusData data = statusData.get(0);
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileManagerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileManagerTest.java
index fac3171..62b2bec 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileManagerTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/RandomAccessFileManagerTest.java
@@ -23,19 +23,18 @@ import java.io.OutputStream;
 import java.io.RandomAccessFile;
 
 import org.apache.logging.log4j.core.util.NullOutputStream;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the RandomAccessFileManager class.
  */
 public class RandomAccessFileManagerTest {
 
-    @ClassRule
-    public static TemporaryFolder folder = new TemporaryFolder();
+    @TempDir
+    File tempDir;
 
     /**
      * Test method for
@@ -44,7 +43,7 @@ public class RandomAccessFileManagerTest {
      */
     @Test
     public void testWrite_multiplesOfBufferSize() throws IOException {
-        final File file = folder.newFile();
+        final File file = new File(tempDir, "random-access-file.bin");
         try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
             final OutputStream os = NullOutputStream.getInstance();
             final RandomAccessFileManager manager = new RandomAccessFileManager(null, raf, file.getName(),
@@ -56,7 +55,8 @@ public class RandomAccessFileManagerTest {
 
             // all data is written if exceeds buffer size
             assertEquals(RandomAccessFileManager.DEFAULT_BUFFER_SIZE * 3, raf.length());
-        }}
+        }
+    }
 
     /**
      * Test method for
@@ -65,7 +65,7 @@ public class RandomAccessFileManagerTest {
      */
     @Test
     public void testWrite_dataExceedingBufferSize() throws IOException {
-        final File file = folder.newFile();
+        final File file = new File(tempDir, "random-access-file.bin");
         try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
             final OutputStream os = NullOutputStream.getInstance();
             final RandomAccessFileManager manager = new RandomAccessFileManager(null, raf, file.getName(),
@@ -79,11 +79,12 @@ public class RandomAccessFileManagerTest {
 
             manager.flush();
             assertEquals(size, raf.length()); // all data written to file now
-        }}
+        }
+    }
 
     @Test
     public void testConfigurableBufferSize() throws IOException {
-        final File file = folder.newFile();
+        final File file = new File(tempDir, "random-access-file.bin");
         try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
             final OutputStream os = NullOutputStream.getInstance();
             final int bufferSize = 4 * 1024;
@@ -94,11 +95,12 @@ public class RandomAccessFileManagerTest {
 
             // check the resulting buffer size is what was requested
             assertEquals(bufferSize, manager.getBufferSize());
-        }}
+        }
+    }
 
     @Test
     public void testWrite_dataExceedingMinBufferSize() throws IOException {
-        final File file = folder.newFile();
+        final File file = new File(tempDir, "random-access-file.bin");
         try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) {
             final OutputStream os = NullOutputStream.getInstance();
             final int bufferSize = 1;
@@ -113,12 +115,13 @@ public class RandomAccessFileManagerTest {
 
             manager.flush();
             assertEquals(size, raf.length()); // all data written to file now
-        }}
+        }
+    }
 
     @Test
     public void testAppendDoesNotOverwriteExistingFile() throws IOException {
         final boolean isAppend = true;
-        final File file = folder.newFile();
+        final File file = new File(tempDir, "random-access-file.bin");
         assertEquals(0, file.length());
 
         final byte[] bytes = new byte[4 * 1024];
@@ -128,12 +131,12 @@ public class RandomAccessFileManagerTest {
             fos.write(bytes, 0, bytes.length);
             fos.flush();
         }
-        assertEquals("all flushed to disk", bytes.length, file.length());
+        assertEquals(bytes.length, file.length(), "all flushed to disk");
 
         final RandomAccessFileManager manager = RandomAccessFileManager.getFileManager(
                 file.getAbsolutePath(), isAppend, true, RandomAccessFileManager.DEFAULT_BUFFER_SIZE, null, null, null);
         manager.write(bytes, 0, bytes.length, true);
         final int expected = bytes.length * 2;
-        assertEquals("appended, not overwritten", expected, file.length());
+        assertEquals(expected, file.length(), "appended, not overwritten");
     }
 }
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ReconfigureAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ReconfigureAppenderTest.java
index bbdf01d..6adc018 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ReconfigureAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ReconfigureAppenderTest.java
@@ -32,12 +32,8 @@ import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFact
 import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration;
 import org.apache.logging.log4j.core.layout.PatternLayout;
 import org.apache.logging.log4j.core.util.Builder;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-/**
- * Class Description goes here.
- * Created by rgoers on 2019-02-02
- */
 public class ReconfigureAppenderTest {
 	private RollingFileAppender appender;
 
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelectorTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelectorTest.java
index fbea216..6b3800f 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelectorTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ScriptAppenderSelectorTest.java
@@ -16,79 +16,44 @@
  */
 package org.apache.logging.log4j.core.appender;
 
-import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.MarkerManager;
-import org.apache.logging.log4j.categories.Scripts;
-import org.apache.logging.log4j.core.Logger;
-import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.junit.LoggerContextSource;
+import org.apache.logging.log4j.spi.ExtendedLogger;
 import org.apache.logging.log4j.test.appender.ListAppender;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.hasSize;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
 
-@RunWith(Parameterized.class)
-@Category(Scripts.Groovy.class)
 public class ScriptAppenderSelectorTest {
 
-    @Parameterized.Parameters(name = "{0}")
-    public static Object[][] getParameters() {
-        // @formatter:off
-        return new Object[][] {
-            { "log4j-appender-selector-groovy.xml" },
-            { "log4j-appender-selector-javascript.xml" },
-        };
-        // @formatter:on
-    }
-
-    @Rule
-    public final LoggerContextRule loggerContextRule;
-
-    public ScriptAppenderSelectorTest(final String configLocation) {
-        this.loggerContextRule = new LoggerContextRule(configLocation);
+    @Test
+    @LoggerContextSource("log4j-appender-selector-javascript.xml")
+    void testJavaScriptSelector(final Configuration config) {
+        verify(config);
     }
 
-    private ListAppender getListAppender() {
-        return loggerContextRule.getListAppender("SelectIt");
+    @Test
+    @LoggerContextSource("log4j-appender-selector-groovy.xml")
+    void testGroovySelector(final Configuration config) {
+        verify(config);
     }
 
-    private void logAndCheck() {
-        final Marker marker = MarkerManager.getMarker("HEXDUMP");
-        final Logger logger = loggerContextRule.getLogger(ScriptAppenderSelectorTest.class);
+    static void verify(final Configuration config) {
+        assertNull(config.getAppender("List1"), "List1 appender should not be initialized");
+        assertNull(config.getAppender("List2"), "List2 appender should not be initialized");
+        final ListAppender listAppender = config.getAppender("SelectIt");
+        assertNotNull(listAppender);
+        final ExtendedLogger logger = config.getLoggerContext().getLogger(ScriptAppenderSelectorTest.class);
         logger.error("Hello");
-        final ListAppender listAppender = getListAppender();
-        assertEquals("Incorrect number of events", 1, listAppender.getEvents().size());
+        assertThat(listAppender.getEvents(), hasSize(1));
         logger.error("World");
-        assertEquals("Incorrect number of events", 2, listAppender.getEvents().size());
-        logger.error(marker, "DEADBEEF");
-        assertEquals("Incorrect number of events", 3, listAppender.getEvents().size());
-    }
-
-    @Test(expected = AssertionError.class)
-    public void testAppender1Absence() {
-        loggerContextRule.getListAppender("List1");
-    }
-
-    @Test(expected = AssertionError.class)
-    public void testAppender2Absence() {
-        loggerContextRule.getListAppender("List2");
+        assertThat(listAppender.getEvents(), hasSize(2));
+        logger.error(MarkerManager.getMarker("HEXDUMP"), "DEADBEEF");
+        assertThat(listAppender.getEvents(), hasSize(3));
     }
 
-    @Test
-    public void testAppenderPresence() {
-        getListAppender();
-    }
-
-    @Test
-    public void testLogging1() {
-        logAndCheck();
-    }
-
-    @Test
-    public void testLogging2() {
-        logAndCheck();
-    }
 }
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderBuilderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderBuilderTest.java
index bdfd35a..3636af3 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderBuilderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderBuilderTest.java
@@ -16,9 +16,9 @@
  */
 package org.apache.logging.log4j.core.appender;
 
-import org.apache.logging.log4j.core.appender.SocketAppender;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class SocketAppenderBuilderTest {
 
@@ -27,6 +27,7 @@ public class SocketAppenderBuilderTest {
      */
     @Test
     public void testDefaultImmediateFlush() {
-        Assert.assertTrue(SocketAppender.newBuilder().isImmediateFlush());
+        assertTrue(SocketAppender.newBuilder().isImmediateFlush(),
+                "Regression of LOG4J2-1620: default value for immediateFlush should be true");
     }
 }
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/TlsSyslogFrameTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/TlsSyslogFrameTest.java
index 887ba99..a1df85a 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/TlsSyslogFrameTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/TlsSyslogFrameTest.java
@@ -19,8 +19,10 @@ package org.apache.logging.log4j.core.appender;
 import java.nio.charset.StandardCharsets;
 
 import org.apache.logging.log4j.util.Chars;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
 
 public class TlsSyslogFrameTest {
     private static final String TEST_MESSAGE = "The quick brown fox jumps over the lazy dog";
@@ -29,16 +31,16 @@ public class TlsSyslogFrameTest {
     public void equals() {
         final TlsSyslogFrame first = new TlsSyslogFrame(TEST_MESSAGE);
         final TlsSyslogFrame second = new TlsSyslogFrame(TEST_MESSAGE);
-        Assert.assertEquals(first, second);
-        Assert.assertEquals(first.hashCode(), second.hashCode());
+        assertEquals(first, second);
+        assertEquals(first.hashCode(), second.hashCode());
     }
 
     @Test
     public void notEquals() {
         final TlsSyslogFrame first = new TlsSyslogFrame("A message");
         final TlsSyslogFrame second = new TlsSyslogFrame("B message");
-        Assert.assertNotEquals(first, second);
-        Assert.assertNotEquals(first.hashCode(), second.hashCode());
+        assertNotEquals(first, second);
+        assertNotEquals(first.hashCode(), second.hashCode());
     }
 
     @Test
@@ -46,6 +48,6 @@ public class TlsSyslogFrameTest {
         final TlsSyslogFrame frame = new TlsSyslogFrame(TEST_MESSAGE);
         final int length = TEST_MESSAGE.getBytes(StandardCharsets.UTF_8).length;
         final String expected = Integer.toString(length) + Chars.SPACE + TEST_MESSAGE;
-        Assert.assertEquals(expected, frame.toString());
+        assertEquals(expected, frame.toString());
     }
 }
\ No newline at end of file
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/WriterAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/WriterAppenderTest.java
index dd4b8e0..392862e 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/WriterAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/WriterAppenderTest.java
@@ -1,109 +1,115 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-package org.apache.logging.log4j.core.appender;
-
-import java.io.ByteArrayOutputStream;
-import java.io.CharArrayWriter;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.sql.SQLException;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.Appender;
-import org.apache.logging.log4j.core.LoggerContext;
-import org.apache.logging.log4j.core.config.Configuration;
-import org.apache.logging.log4j.core.layout.PatternLayout;
-import org.junit.Assert;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TestName;
-
-/**
- * Tests {@link WriterAppender}.
- */
-public class WriterAppenderTest {
-
-    private static final String TEST_MSG = "FOO ERROR";
-
-    @Rule
-    public TestName testName = new TestName();
-
-    private String getName(final Writer writer) {
-        return writer.getClass().getSimpleName() + "." + testName.getMethodName();
-    }
-
-    private void test(final ByteArrayOutputStream out, final Writer writer) throws SQLException {
-        final String name = getName(writer);
-        addAppender(writer, name);
-        final Logger logger = LogManager.getLogger(name);
-        logger.error(TEST_MSG);
-        final String actual = out.toString();
-        Assert.assertTrue(actual, actual.contains(TEST_MSG));
-    }
-
-    private void test(final Writer writer) throws SQLException {
-        final String name = getName(writer);
-        addAppender(writer, name);
-        final Logger logger = LogManager.getLogger(name);
-        logger.error(TEST_MSG);
-        final String actual = writer.toString();
-        Assert.assertTrue(actual, actual.contains(TEST_MSG));
-    }
-
-    private void addAppender(final Writer writer, final String writerName) {
-        final LoggerContext context = LoggerContext.getContext(false);
-        final Configuration config = context.getConfiguration();
-        final PatternLayout layout = PatternLayout.createDefaultLayout(config);
-        final Appender appender = WriterAppender.createAppender(layout, null, writer, writerName, false, true);
-        appender.start();
-        config.addAppender(appender);
-        ConfigurationTestUtils.updateLoggers(appender, config);
-    }
-
-    @Test
-    public void testWriterAppenderToCharArrayWriter() throws SQLException {
-        test(new CharArrayWriter());
-    }
-
-    @Test
-    public void testWriterAppenderToOutputStreamWriter() throws SQLException {
-        final ByteArrayOutputStream out = new ByteArrayOutputStream();
-        final Writer writer = new OutputStreamWriter(out);
-        test(out, writer);
-    }
-
-    @Test
-    public void testWriterAppenderToPrintWriter() throws SQLException {
-        final ByteArrayOutputStream out = new ByteArrayOutputStream();
-        final Writer writer = new PrintWriter(out);
-        test(out, writer);
-    }
-
-    @Test
-    public void testWriterAppenderToStringWriter() throws SQLException {
-        test(new StringWriter());
-    }
-
-    @Test
-    public void testBuilder() {
-        // This should compile
-        WriterAppender.newBuilder().setTarget(new StringWriter()).setName("testWriterAppender").build();
-    }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.core.appender;
+
+import java.io.ByteArrayOutputStream;
+import java.io.CharArrayWriter;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.lang.reflect.Method;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.layout.PatternLayout;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.containsString;
+
+/**
+ * Tests {@link WriterAppender}.
+ */
+public class WriterAppenderTest {
+
+    private static final String TEST_MSG = "FOO ERROR";
+
+    private String testMethodName;
+
+    @BeforeEach
+    void setUp(final TestInfo testInfo) {
+        testMethodName = testInfo.getTestMethod().map(Method::getName).orElseGet(testInfo::getDisplayName);
+    }
+
+    private String getName(final Writer writer) {
+        return writer.getClass().getSimpleName() + "." + testMethodName;
+    }
+
+    private void test(final ByteArrayOutputStream out, final Writer writer) {
+        final String name = getName(writer);
+        addAppender(writer, name);
+        final Logger logger = LogManager.getLogger(name);
+        logger.error(TEST_MSG);
+        final String actual = out.toString();
+        assertThat(actual, containsString(TEST_MSG));
+    }
+
+    private void test(final Writer writer) {
+        final String name = getName(writer);
+        addAppender(writer, name);
+        final Logger logger = LogManager.getLogger(name);
+        logger.error(TEST_MSG);
+        final String actual = writer.toString();
+        assertThat(actual, containsString(TEST_MSG));
+    }
+
+    private void addAppender(final Writer writer, final String writerName) {
+        final LoggerContext context = LoggerContext.getContext(false);
+        final Configuration config = context.getConfiguration();
+        final PatternLayout layout = PatternLayout.createDefaultLayout(config);
+        final Appender appender = WriterAppender.createAppender(layout, null, writer, writerName, false, true);
+        appender.start();
+        config.addAppender(appender);
+        ConfigurationTestUtils.updateLoggers(appender, config);
+    }
+
+    @Test
+    public void testWriterAppenderToCharArrayWriter() {
+        test(new CharArrayWriter());
+    }
+
+    @Test
+    public void testWriterAppenderToOutputStreamWriter() {
+        final ByteArrayOutputStream out = new ByteArrayOutputStream();
+        final Writer writer = new OutputStreamWriter(out);
+        test(out, writer);
+    }
+
+    @Test
+    public void testWriterAppenderToPrintWriter() {
+        final ByteArrayOutputStream out = new ByteArrayOutputStream();
+        final Writer writer = new PrintWriter(out);
+        test(out, writer);
+    }
+
+    @Test
+    public void testWriterAppenderToStringWriter() {
+        test(new StringWriter());
+    }
+
+    @Test
+    public void testBuilder() {
+        // This should compile
+        WriterAppender.newBuilder().setTarget(new StringWriter()).setName("testWriterAppender").build();
+    }
+}


[logging-log4j2] 04/10: Introduce StatusLoggerLevel test annotation

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mattsicker pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 5699d05e42141e52569e7b17ed91936cdfedef1b
Author: Matt Sicker <bo...@gmail.com>
AuthorDate: Sun Sep 13 16:41:32 2020 -0500

    Introduce StatusLoggerLevel test annotation
    
    Backported from 3.x.
    
    Signed-off-by: Matt Sicker <bo...@gmail.com>
---
 .../apache/logging/log4j/AbstractLoggerTest.java   | 15 ++++----
 .../logging/log4j/junit/StatusLoggerLevel.java     | 42 ++++++++++++++++++++++
 .../log4j/junit/StatusLoggerLevelExtension.java    | 20 ++++-------
 .../logging/log4j/junit/StatusLoggerRule.java      |  2 +-
 .../validators/ValidHostValidatorTest.java         |  8 ++---
 5 files changed, 58 insertions(+), 29 deletions(-)

diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/AbstractLoggerTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/AbstractLoggerTest.java
index 9c13006..1e18453 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/AbstractLoggerTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/AbstractLoggerTest.java
@@ -16,11 +16,7 @@
  */
 package org.apache.logging.log4j;
 
-import static org.hamcrest.CoreMatchers.containsString;
-import static org.hamcrest.MatcherAssert.*;
-import static org.junit.jupiter.api.Assertions.*;
-
-import org.apache.logging.log4j.junit.StatusLoggerLevelExtension;
+import org.apache.logging.log4j.junit.StatusLoggerLevel;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.ObjectMessage;
 import org.apache.logging.log4j.message.ParameterizedMessage;
@@ -33,10 +29,14 @@ import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.util.MessageSupplier;
 import org.apache.logging.log4j.util.Supplier;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.RegisterExtension;
 
 import java.util.List;
 
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.*;
+
+@StatusLoggerLevel("WARN")
 public class AbstractLoggerTest {
 
     private static final StringBuilder CHAR_SEQ = new StringBuilder("CharSeq");
@@ -60,9 +60,6 @@ public class AbstractLoggerTest {
     private static final Marker MARKER = MarkerManager.getMarker("TEST");
     private static final String MARKER_NAME = "TEST";
 
-    @RegisterExtension
-    public StatusLoggerLevelExtension status = new StatusLoggerLevelExtension(Level.WARN);
-
     private static final LogEvent[] EVENTS = new LogEvent[] {
         new LogEvent(null, simple, null),
         new LogEvent(MARKER_NAME, simple, null),
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/junit/StatusLoggerLevel.java b/log4j-api/src/test/java/org/apache/logging/log4j/junit/StatusLoggerLevel.java
new file mode 100644
index 0000000..9edf7b0
--- /dev/null
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/junit/StatusLoggerLevel.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+
+package org.apache.logging.log4j.junit;
+
+import org.junit.jupiter.api.extension.ExtendWith;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * JUnit 5 test extension that sets a specific StatusLogger logging level for each test.
+ *
+ * @since 2.14.0
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+@Documented
+@Inherited
+@ExtendWith(StatusLoggerLevelExtension.class)
+public @interface StatusLoggerLevel {
+    /** Name of {@link org.apache.logging.log4j.Level} to use for status logger. */
+    String value();
+}
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/junit/StatusLoggerLevelExtension.java b/log4j-api/src/test/java/org/apache/logging/log4j/junit/StatusLoggerLevelExtension.java
index 5eb7de2..2b0a5cd 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/junit/StatusLoggerLevelExtension.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/junit/StatusLoggerLevelExtension.java
@@ -23,25 +23,19 @@ import org.junit.jupiter.api.extension.AfterEachCallback;
 import org.junit.jupiter.api.extension.BeforeEachCallback;
 import org.junit.jupiter.api.extension.ExtensionContext;
 
-/**
- * JUnit 5 test extension that sets a specific StatusLogger logging level for each test.
- *
- * @since 2.14.0
- */
-public class StatusLoggerLevelExtension implements BeforeEachCallback, AfterEachCallback {
+class StatusLoggerLevelExtension implements BeforeEachCallback, AfterEachCallback {
 
     private static final String KEY = "previousLevel";
-    private final Level level;
-
-    public StatusLoggerLevelExtension(Level level) {
-        this.level = level;
-    }
 
     @Override
     public void beforeEach(ExtensionContext context) throws Exception {
+        final StatusLoggerLevel annotation = context.getRequiredTestClass().getAnnotation(StatusLoggerLevel.class);
+        if (annotation == null) {
+            return;
+        }
         final StatusLogger logger = StatusLogger.getLogger();
         getStore(context).put(KEY, logger.getLevel());
-        logger.setLevel(level);
+        logger.setLevel(Level.valueOf(annotation.value()));
     }
 
     @Override
@@ -51,6 +45,6 @@ public class StatusLoggerLevelExtension implements BeforeEachCallback, AfterEach
 
     private ExtensionContext.Store getStore(ExtensionContext context) {
         return context.getStore(ExtensionContext.Namespace
-                .create(getClass(), context.getRequiredTestInstance(), context.getRequiredTestMethod()));
+                .create(getClass(), context.getRequiredTestInstance()));
     }
 }
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/junit/StatusLoggerRule.java b/log4j-api/src/test/java/org/apache/logging/log4j/junit/StatusLoggerRule.java
index a14114b..33b2e58 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/junit/StatusLoggerRule.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/junit/StatusLoggerRule.java
@@ -25,7 +25,7 @@ import org.junit.rules.ExternalResource;
  * Log4j configuration file.
  *
  * @since 2.8
- * @deprecated Use {@link StatusLoggerLevelExtension} with JUnit 5
+ * @deprecated Use {@link StatusLoggerLevel} with JUnit 5
  */
 public class StatusLoggerRule extends ExternalResource {
 
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidHostValidatorTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidHostValidatorTest.java
index fc280eb..9fe67cf 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidHostValidatorTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/plugins/validation/validators/ValidHostValidatorTest.java
@@ -16,25 +16,21 @@
  */
 package org.apache.logging.log4j.core.config.plugins.validation.validators;
 
-import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.core.config.Node;
 import org.apache.logging.log4j.core.config.NullConfiguration;
 import org.apache.logging.log4j.core.config.plugins.util.PluginBuilder;
 import org.apache.logging.log4j.core.config.plugins.util.PluginManager;
 import org.apache.logging.log4j.core.config.plugins.util.PluginType;
 import org.apache.logging.log4j.core.config.plugins.validation.HostAndPort;
-import org.apache.logging.log4j.junit.StatusLoggerLevelExtension;
+import org.apache.logging.log4j.junit.StatusLoggerLevel;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.*;
 
+@StatusLoggerLevel("FATAL")
 public class ValidHostValidatorTest {
 
-    @RegisterExtension
-    static StatusLoggerLevelExtension extension = new StatusLoggerLevelExtension(Level.FATAL);
-
     private PluginType<HostAndPort> plugin;
     private Node node;
 


[logging-log4j2] 10/10: Fix line location

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mattsicker pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit d0afb9213d3bd798775cbdf7cf655a50ffad362c
Author: Matt Sicker <bo...@gmail.com>
AuthorDate: Tue Sep 15 13:57:34 2020 -0500

    Fix line location
---
 log4j-api/src/test/java/org/apache/logging/log4j/LoggerTest.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/LoggerTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/LoggerTest.java
index bffbcde..3ed6bd2 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/LoggerTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/LoggerTest.java
@@ -67,12 +67,12 @@ public class LoggerTest {
         logger.atWarn().withThrowable(new Throwable("This is a test")).log((Message) new SimpleMessage("Log4j rocks!"));
         assertEquals(3, results.size());
         assertThat("Incorrect message 1", results.get(0),
-                equalTo(" DEBUG org.apache.logging.log4j.LoggerTest.builder(LoggerTest.java:64) Hello"));
+                equalTo(" DEBUG org.apache.logging.log4j.LoggerTest.builder(LoggerTest.java:65) Hello"));
         assertThat("Incorrect message 2", results.get(1), equalTo("test ERROR Hello John"));
         assertThat("Incorrect message 3", results.get(2),
                 startsWith(" WARN Log4j rocks! java.lang.Throwable: This is a test"));
         assertThat("Throwable incorrect in message 3", results.get(2),
-                containsString("at org.apache.logging.log4j.LoggerTest.builder(LoggerTest.java:66)"));
+                containsString("at org.apache.logging.log4j.LoggerTest.builder(LoggerTest.java:67)"));
     }
 
     @Test