You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by pk...@apache.org on 2022/06/20 21:58:29 UTC
[logging-log4j2] 02/06: Refactor `MarkerManager` and other resource locks
This is an automated email from the ASF dual-hosted git repository.
pkarwasz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 7ce1eed4612cedc8af8456710af2fc40eb92cbe6
Author: Piotr P. Karwasz <pi...@karwasz.org>
AuthorDate: Mon Jun 20 21:31:02 2022 +0200
Refactor `MarkerManager` and other resource locks
Only one test needs write permission to `MarkerManager`
---
.../apache/logging/log4j/test/junit/Resources.java | 31 ++++++++++++++++++
.../apache/logging/log4j/AbstractLoggerTest.java | 6 ++--
.../java/org/apache/logging/log4j/LoggerTest.java | 37 ++++++++++++----------
.../java/org/apache/logging/log4j/MarkerTest.java | 11 +++++--
.../logging/log4j/simple/SimpleLoggerTest.java | 3 --
5 files changed, 64 insertions(+), 24 deletions(-)
diff --git a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/Resources.java b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/Resources.java
new file mode 100644
index 0000000000..4f85703d85
--- /dev/null
+++ b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/Resources.java
@@ -0,0 +1,31 @@
+/*
+ * 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.test.junit;
+
+import org.junit.jupiter.api.parallel.ResourceLock;
+
+/**
+ * Constants to use the the {@link ResourceLock} annotation.
+ *
+ */
+public class Resources {
+
+ public static final String THREAD_CONTEXT = "log4j2.ThreadContext";
+
+ public static final String MARKER_MANAGER = "log4j2.MarkerManager";
+}
diff --git a/log4j-api-test/src/test/java/org/apache/logging/log4j/AbstractLoggerTest.java b/log4j-api-test/src/test/java/org/apache/logging/log4j/AbstractLoggerTest.java
index ef0cc477d4..6a49e73cce 100644
--- a/log4j-api-test/src/test/java/org/apache/logging/log4j/AbstractLoggerTest.java
+++ b/log4j-api-test/src/test/java/org/apache/logging/log4j/AbstractLoggerTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.logging.log4j;
+import org.apache.logging.log4j.test.junit.Resources;
import org.apache.logging.log4j.test.junit.StatusLoggerLevel;
import org.apache.logging.log4j.message.Message;
import org.apache.logging.log4j.message.ObjectMessage;
@@ -28,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.ResourceAccessMode;
import org.junit.jupiter.api.parallel.ResourceLock;
import java.util.List;
@@ -37,7 +39,7 @@ import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.*;
@StatusLoggerLevel("WARN")
-@ResourceLock("log4j2.MarkerManager")
+@ResourceLock(value = Resources.MARKER_MANAGER, mode = ResourceAccessMode.READ)
public class AbstractLoggerTest {
private static final StringBuilder CHAR_SEQ = new StringBuilder("CharSeq");
@@ -58,7 +60,7 @@ public class AbstractLoggerTest {
private static final Message param = new ParameterizedMessage(pattern, p1, p2);
- private static final Marker MARKER = MarkerManager.getMarker("TEST");
+ private final Marker MARKER = MarkerManager.getMarker("TEST");
private static final String MARKER_NAME = "TEST";
private static final LogEvent[] EVENTS = new LogEvent[] {
diff --git a/log4j-api-test/src/test/java/org/apache/logging/log4j/LoggerTest.java b/log4j-api-test/src/test/java/org/apache/logging/log4j/LoggerTest.java
index 8a75b94aad..b5fd27b190 100644
--- a/log4j-api-test/src/test/java/org/apache/logging/log4j/LoggerTest.java
+++ b/log4j-api-test/src/test/java/org/apache/logging/log4j/LoggerTest.java
@@ -16,6 +16,20 @@
*/
package org.apache.logging.log4j;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.endsWith;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.startsWith;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+import java.util.Properties;
+
import org.apache.logging.log4j.message.EntryMessage;
import org.apache.logging.log4j.message.JsonMessage;
import org.apache.logging.log4j.message.Message;
@@ -27,26 +41,17 @@ import org.apache.logging.log4j.message.SimpleMessageFactory;
import org.apache.logging.log4j.message.StringFormatterMessageFactory;
import org.apache.logging.log4j.message.StructuredDataMessage;
import org.apache.logging.log4j.test.TestLogger;
+import org.apache.logging.log4j.test.junit.Resources;
import org.apache.logging.log4j.test.junit.UsingThreadContextMap;
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.junitpioneer.jupiter.ReadsSystemProperty;
-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")
-@UsingThreadContextMap
+@ResourceLock(value = Resources.MARKER_MANAGER, mode = ResourceAccessMode.READ)
@ReadsSystemProperty
public class LoggerTest {
@@ -58,7 +63,7 @@ public class LoggerTest {
// empty
}
- private final TestLogger logger = (TestLogger) LogManager.getLogger("LoggerTest");
+ private final TestLogger logger = (TestLogger) LogManager.getLogger(LoggerTest.class);
private final Marker marker = MarkerManager.getMarker("test");
private final List<String> results = logger.getEntries();
@@ -69,12 +74,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:67) Hello"));
+ equalTo(" DEBUG org.apache.logging.log4j.LoggerTest.builder(LoggerTest.java:72) 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("org.apache.logging.log4j.LoggerTest.builder(LoggerTest.java:69)"));
+ containsString("org.apache.logging.log4j.LoggerTest.builder(LoggerTest.java:74)"));
}
@Test
@@ -563,8 +568,8 @@ public class LoggerTest {
}
@Test
+ @UsingThreadContextMap
public void mdc() {
- ThreadContext.clearMap();
ThreadContext.put("TestYear", Integer.valueOf(2010).toString());
logger.debug("Debug message");
String testYear = ThreadContext.get("TestYear");
diff --git a/log4j-api-test/src/test/java/org/apache/logging/log4j/MarkerTest.java b/log4j-api-test/src/test/java/org/apache/logging/log4j/MarkerTest.java
index 1b72d1a65a..c07f94f259 100644
--- a/log4j-api-test/src/test/java/org/apache/logging/log4j/MarkerTest.java
+++ b/log4j-api-test/src/test/java/org/apache/logging/log4j/MarkerTest.java
@@ -16,13 +16,18 @@
*/
package org.apache.logging.log4j;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.apache.logging.log4j.test.junit.Resources;
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 static org.junit.jupiter.api.Assertions.*;
-
-@ResourceLock("log4j2.MarkerManager")
+@ResourceLock(value = Resources.MARKER_MANAGER, mode = ResourceAccessMode.READ_WRITE)
public class MarkerTest {
@BeforeEach
diff --git a/log4j-api-test/src/test/java/org/apache/logging/log4j/simple/SimpleLoggerTest.java b/log4j-api-test/src/test/java/org/apache/logging/log4j/simple/SimpleLoggerTest.java
index 4d26e7ea32..8f44d839ab 100644
--- a/log4j-api-test/src/test/java/org/apache/logging/log4j/simple/SimpleLoggerTest.java
+++ b/log4j-api-test/src/test/java/org/apache/logging/log4j/simple/SimpleLoggerTest.java
@@ -22,11 +22,8 @@ import org.apache.logging.log4j.test.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;
-import org.junit.jupiter.api.parallel.Resources;
@Tag("smoke")
-@ResourceLock(Resources.SYSTEM_PROPERTIES)
public class SimpleLoggerTest {
@RegisterExtension