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/07 19:14:23 UTC
[logging-log4j2] 03/03: Migrate more tests to JUnit 5
This is an automated email from the ASF dual-hosted git repository.
mattsicker pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit d0177664a386800ed45ac3bd35345a474d66e1ea
Author: Matt Sicker <bo...@gmail.com>
AuthorDate: Mon Sep 7 14:13:48 2020 -0500
Migrate more tests to JUnit 5
Signed-off-by: Matt Sicker <bo...@gmail.com>
---
.../core/appender/AsyncAppenderNoLocationTest.java | 85 -----------
.../appender/AsyncAppenderQueueFullPolicyTest.java | 44 +++---
.../appender/AsyncAppenderShutdownTimeoutTest.java | 42 ------
.../log4j/core/appender/AsyncAppenderTest.java | 167 ++++++++++++---------
.../core/appender/ConsoleAppenderBuilderTest.java | 13 +-
.../log4j/core/appender/ConsoleAppenderTest.java | 40 +++--
.../log4j/core/appender/FailoverAppenderTest.java | 60 ++++----
.../core/appender/FileAppenderBuilderTest.java | 7 +-
.../core/appender/FileAppenderPermissionsTest.java | 136 ++++++++---------
.../FileAppenderPermissionsXmlConfigTest.java | 66 --------
.../log4j/core/appender/FileAppenderTest.java | 13 +-
11 files changed, 233 insertions(+), 440 deletions(-)
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/AsyncAppenderNoLocationTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/AsyncAppenderNoLocationTest.java
deleted file mode 100644
index fdc95e9..0000000
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/AsyncAppenderNoLocationTest.java
+++ /dev/null
@@ -1,85 +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.util.List;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.junit.LoggerContextRule;
-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 static org.junit.Assert.*;
-
-/**
- *
- */
-public class AsyncAppenderNoLocationTest {
- private ListAppender app;
-
- @ClassRule
- public static LoggerContextRule init = null;
-
- static {
- try {
- init = new LoggerContextRule("log4j-asynch-no-location.xml");
- } catch (final Exception ex) {
- ex.printStackTrace();
- }
- }
-
- @Before
- public void setUp() throws Exception {
- try {
- this.app = (ListAppender) init.getAppender("List");
- assertNotNull("No List appender found", app);
- } catch (final Exception ex) {
- System.out.println("init = " + init == null ? "null" : init);
-
- }
-
- }
-
- @After
- public void after() {
- if (app != null) {
- app.clear();
- }
- }
-
- @Test
- public void testNoLocation() throws Exception {
- final Logger logger = LogManager.getLogger(AsyncAppender.class);
- logger.error("This is a test");
- logger.warn("Hello world!");
- Thread.sleep(100);
- System.out.println("app = " + app == null ? "null" : app);
- final List<String> list = app.getMessages();
- assertNotNull("No events generated", list);
- assertEquals("Incorrect number of events. Expected 2, got " + list.size(), list.size(), 2);
- String msg = list.get(0);
- String expected = "? This is a test";
- assertEquals("Expected " + expected + ", Actual " + msg, expected, msg);
- msg = list.get(1);
- expected = "? Hello world!";
- assertEquals("Expected " + expected + ", Actual " + msg, expected, msg);
- }
-}
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/AsyncAppenderQueueFullPolicyTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/AsyncAppenderQueueFullPolicyTest.java
index bdd2aa6..ef7a35f 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/AsyncAppenderQueueFullPolicyTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/AsyncAppenderQueueFullPolicyTest.java
@@ -16,22 +16,21 @@
*/
package org.apache.logging.log4j.core.appender;
-import java.lang.reflect.Field;
-import java.util.concurrent.atomic.AtomicLong;
-
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.async.DefaultAsyncQueueFullPolicy;
import org.apache.logging.log4j.core.async.EventRoute;
-import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.junit.LoggerContextSource;
+import org.apache.logging.log4j.junit.Named;
import org.apache.logging.log4j.test.appender.BlockingAppender;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Test;
+
+import java.lang.reflect.Field;
+import java.util.concurrent.atomic.AtomicLong;
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* Tests the AsyncAppender (LOG4J2-1080) event routing logic:
@@ -43,21 +42,18 @@ import static org.junit.Assert.*;
* else queue.add(event) // blocking call
* </pre>
*/
+@LoggerContextSource("log4j-asynch-queue-full.xml")
public class AsyncAppenderQueueFullPolicyTest {
- private static final String CONFIG = "log4j-asynch-queue-full.xml";
-
- @ClassRule
- public static LoggerContextRule context = new LoggerContextRule(CONFIG);
-
- private BlockingAppender blockingAppender;
- private AsyncAppender asyncAppender;
- private CountingAsyncQueueFullPolicy policy;
- @Before
- public void before() throws Exception {
- blockingAppender = context.getAppender("Block", BlockingAppender.class);
- asyncAppender = context.getAppender("Async", AsyncAppender.class);
+ private final BlockingAppender blockingAppender;
+ private final AsyncAppender asyncAppender;
+ private final CountingAsyncQueueFullPolicy policy;
+ public AsyncAppenderQueueFullPolicyTest(
+ @Named("Block") final BlockingAppender blockingAppender, @Named("Async") final AsyncAppender asyncAppender)
+ throws Exception {
+ this.blockingAppender = blockingAppender;
+ this.asyncAppender = asyncAppender;
final Field field = AsyncAppender.class.getDeclaredField("asyncQueueFullPolicy");
field.setAccessible(true);
policy = new CountingAsyncQueueFullPolicy();
@@ -65,7 +61,7 @@ public class AsyncAppenderQueueFullPolicyTest {
policy.queueFull.set(0L);
}
- @After
+ @AfterEach
public void after() {
blockingAppender.running = false;
policy.queueFull.set(0L);
@@ -84,8 +80,8 @@ public class AsyncAppenderQueueFullPolicyTest {
Thread.yield(); // wait until background thread takes one element off the queue
}
logger.info("event 5 - now the queue is full");
- assertEquals("queue remaining capacity", 0, asyncAppender.getQueueRemainingCapacity());
- assertEquals("EventRouter invocations", 0, policy.queueFull.get());
+ assertEquals(0, asyncAppender.getQueueRemainingCapacity(), "queue remaining capacity");
+ assertEquals(0, policy.queueFull.get(), "EventRouter invocations");
final Thread release = new Thread("AsyncAppenderReleaser") {
@Override
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/AsyncAppenderShutdownTimeoutTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/AsyncAppenderShutdownTimeoutTest.java
deleted file mode 100644
index fb37f09..0000000
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/AsyncAppenderShutdownTimeoutTest.java
+++ /dev/null
@@ -1,42 +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 org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.LoggerContext;
-import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.junit.ClassRule;
-import org.junit.Test;
-
-/**
- *
- */
-public class AsyncAppenderShutdownTimeoutTest {
-
- @ClassRule
- public static LoggerContextRule init = new LoggerContextRule("log4j-asynch-shutdownTimeout.xml");
-
- @Test(timeout = 5000)
- public void shutdownTest() throws Exception {
- final LoggerContext ctx = (LoggerContext)LogManager.getContext(false);
- final Logger logger = ctx.getLogger("Logger");
- logger.info("This is a test");
- ctx.stop();
- }
-
-}
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/AsyncAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/AsyncAppenderTest.java
index b2de774..d0f3f0d 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/AsyncAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/AsyncAppenderTest.java
@@ -14,100 +14,121 @@
* See the license for the specific language governing permissions and
* limitations under the license.
*/
-package org.apache.logging.log4j.core.appender;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
+package org.apache.logging.log4j.core.appender;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LoggingException;
-import org.apache.logging.log4j.categories.Appenders;
-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.junit.Named;
+import org.apache.logging.log4j.spi.ExtendedLogger;
import org.apache.logging.log4j.test.appender.ListAppender;
-import org.junit.After;
-import org.junit.Before;
-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.Tag;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
-import static org.junit.Assert.*;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
-/**
- *
- */
-@RunWith(Parameterized.class)
-@Category({Appenders.AsyncConversant.class, Appenders.AsyncJcTools.class})
-public class AsyncAppenderTest {
+import static org.junit.jupiter.api.Assertions.*;
- private static final long TIMEOUT_MILLIS = 2000;
+class AsyncAppenderTest {
- @Parameterized.Parameters(name = "{0}")
- public static Object[] data() {
- return new String[]{
- // default async config uses array blocking queue
- "log4j-asynch.xml",
- // override default blocking queue implementations
- "BlockingQueueFactory-ArrayBlockingQueue.xml",
- "BlockingQueueFactory-DisruptorBlockingQueue.xml",
- "BlockingQueueFactory-JCToolsBlockingQueue.xml",
- "BlockingQueueFactory-LinkedTransferQueue.xml"
- };
+ static void rewriteTest(final LoggerContext context) throws InterruptedException {
+ final ExtendedLogger logger = context.getLogger(AsyncAppender.class);
+ logger.error("This is a test");
+ logger.warn("Hello world!");
+ final ListAppender appender = context.getConfiguration().getAppender("List");
+ final List<String> messages;
+ try {
+ messages = appender.getMessages(2, 2, TimeUnit.SECONDS);
+ } finally {
+ appender.clear();
+ }
+ assertNotNull(messages);
+ assertEquals(2, messages.size());
+ final String messagePrefix = AsyncAppenderTest.class.getName() + " rewriteTest ";
+ assertEquals(messagePrefix + "This is a test", messages.get(0));
+ assertEquals(messagePrefix + "Hello world!", messages.get(1));
}
- public AsyncAppenderTest(final String configFileName) {
- context = new LoggerContextRule(configFileName);
+ static void exceptionTest(final LoggerContext context) throws InterruptedException {
+ final ExtendedLogger logger = context.getLogger(AsyncAppender.class);
+ final Exception parent = new IllegalStateException("Test");
+ final Throwable child = new LoggingException("This is a test", parent);
+ logger.error("This is a test", child);
+ final ListAppender appender = context.getConfiguration().getAppender("List");
+ final List<String> messages;
+ try {
+ messages = appender.getMessages(1, 2, TimeUnit.SECONDS);
+ } finally {
+ appender.clear();
+ }
+ assertNotNull(messages);
+ assertEquals(1, messages.size());
+ assertTrue(messages.get(0).contains(parent.getClass().getName()));
}
- @Rule
- public LoggerContextRule context;
+ @Test
+ @LoggerContextSource("log4j-asynch.xml")
+ void defaultAsyncAppenderConfig(final LoggerContext context) throws InterruptedException {
+ rewriteTest(context);
+ exceptionTest(context);
+ }
- private ListAppender listAppender;
+ @Test
+ @LoggerContextSource("BlockingQueueFactory-ArrayBlockingQueue.xml")
+ void arrayBlockingQueue(final LoggerContext context) throws InterruptedException {
+ rewriteTest(context);
+ exceptionTest(context);
+ }
- @Before
- public void before() throws Exception {
- listAppender = context.getListAppender("List");
+ @Test
+ @Tag("disruptor")
+ @LoggerContextSource("BlockingQueueFactory-DisruptorBlockingQueue.xml")
+ void disruptorBlockingQueue(final LoggerContext context) throws InterruptedException {
+ rewriteTest(context);
+ exceptionTest(context);
}
- @After
- public void after() {
- listAppender.clear();
+ @Test
+ @Tag("jctools")
+ @LoggerContextSource("BlockingQueueFactory-JCToolsBlockingQueue.xml")
+ void jcToolsBlockingQueue(final LoggerContext context) throws InterruptedException {
+ rewriteTest(context);
+ exceptionTest(context);
}
@Test
- public void rewriteTest() throws Exception {
- final Logger logger = LogManager.getLogger(AsyncAppender.class);
- logger.error("This is a test");
- logger.warn("Hello world!");
- final long timeoutMillis = TIMEOUT_MILLIS;
- final TimeUnit timeUnit = TimeUnit.MILLISECONDS;
- final List<String> list = listAppender.getMessages(2, timeoutMillis, timeUnit);
- assertNotNull("No events generated", list);
- assertTrue("Incorrect number of events after " + timeoutMillis + " " + timeUnit + ". Expected 2, got "
- + list.size(), list.size() == 2);
- String msg = list.get(0);
- String expected = AsyncAppenderTest.class.getName() + " rewriteTest This is a test";
- assertTrue("Expected " + expected + ", Actual " + msg, expected.equals(msg));
- msg = list.get(1);
- expected = AsyncAppenderTest.class.getName() + " rewriteTest Hello world!";
- assertTrue("Expected " + expected + ", Actual " + msg, expected.equals(msg));
+ @LoggerContextSource("BlockingQueueFactory-LinkedTransferQueue.xml")
+ void linkedTransferQueue(final LoggerContext context) throws InterruptedException {
+ rewriteTest(context);
+ exceptionTest(context);
}
@Test
- public void testException() throws Exception {
- final Logger logger = LogManager.getLogger(AsyncAppender.class);
- final Exception parent = new IllegalStateException("Test");
- final Throwable child = new LoggingException("This is a test", parent);
- logger.error("This is a test", child);
- final long timeoutMillis = TIMEOUT_MILLIS;
- final TimeUnit timeUnit = TimeUnit.MILLISECONDS;
- final List<String> list = listAppender.getMessages(1, timeoutMillis, timeUnit);
- assertNotNull("No events generated", list);
- assertTrue("Incorrect number of events after " + timeoutMillis + " " + timeUnit + ". Expected 1, got "
- + list.size(), list.size() == 1);
- final String msg = list.get(0);
- assertTrue("No parent exception", msg.contains("java.lang.IllegalStateException"));
+ @Timeout(5)
+ @LoggerContextSource("log4j-asynch-shutdownTimeout.xml")
+ void shutdownTimeout(final LoggerContext context) {
+ context.getLogger("Logger").info("This is a test");
+ context.stop();
+ }
+
+ @Test
+ @LoggerContextSource("log4j-asynch-no-location.xml")
+ void noLocationInformation(final LoggerContext context, @Named("List") final ListAppender appender) throws InterruptedException {
+ final ExtendedLogger logger = context.getLogger(getClass());
+ logger.error("This is a test");
+ logger.warn("Hello world!");
+ final List<String> messages;
+ try {
+ messages = appender.getMessages(2, 2, TimeUnit.SECONDS);
+ } finally {
+ appender.clear();
+ }
+ assertNotNull(messages);
+ assertEquals(2, messages.size());
+ assertEquals("? This is a test", messages.get(0));
+ assertEquals("? Hello world!", messages.get(1));
}
}
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderBuilderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderBuilderTest.java
index d0ff679..44dfb9d 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderBuilderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderBuilderTest.java
@@ -20,8 +20,9 @@ import java.nio.charset.Charset;
import org.apache.logging.log4j.core.ErrorHandler;
import org.apache.logging.log4j.core.layout.PatternLayout;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
public class ConsoleAppenderBuilderTest {
@@ -30,7 +31,7 @@ public class ConsoleAppenderBuilderTest {
*/
@Test
public void testDefaultImmediateFlush() {
- Assert.assertTrue(ConsoleAppender.newBuilder().isImmediateFlush());
+ assertTrue(ConsoleAppender.newBuilder().isImmediateFlush());
}
/**
@@ -44,7 +45,7 @@ public class ConsoleAppenderBuilderTest {
final PatternLayout layout = (PatternLayout) appender.getLayout();
final String charsetName = System.getProperty("sun.stdout.encoding");
final String expectedName = charsetName != null ? charsetName : Charset.defaultCharset().name();
- Assert.assertEquals(expectedName, layout.getCharset().name());
+ assertEquals(expectedName, layout.getCharset().name());
}
/**
@@ -54,10 +55,10 @@ public class ConsoleAppenderBuilderTest {
public void testSetNullErrorHandlerIsNotAllowed() {
final ConsoleAppender appender = ConsoleAppender.newBuilder().setName("test").build();
ErrorHandler handler = appender.getHandler();
- Assert.assertNotNull(handler);
+ assertNotNull(handler);
// This could likely be allowed to throw, but we're just testing that
// setting null does not actually set a null handler.
appender.setHandler(null);
- Assert.assertSame(handler, appender.getHandler());
+ assertSame(handler, appender.getHandler());
}
}
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderTest.java
index f75f903..7582c28 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderTest.java
@@ -27,35 +27,31 @@ import org.apache.logging.log4j.core.impl.Log4jLogEvent;
import org.apache.logging.log4j.core.layout.PatternLayout;
import org.apache.logging.log4j.message.SimpleMessage;
import org.apache.logging.log4j.util.Strings;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
-import org.mockito.runners.MockitoJUnitRunner;
+import org.mockito.junit.jupiter.MockitoExtension;
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.BDDMockito.then;
import static org.mockito.Mockito.atLeastOnce;
-/**
- *
- */
-@RunWith(MockitoJUnitRunner.class)
+@ExtendWith(MockitoExtension.class)
public class ConsoleAppenderTest {
private static final String LOG4J_SKIP_JANSI = "log4j.skipJansi";
- @AfterClass
+ @AfterAll
public static void afterClass() {
System.clearProperty(LOG4J_SKIP_JANSI);
}
- @BeforeClass
+ @BeforeAll
public static void beforeClass() {
System.setProperty(LOG4J_SKIP_JANSI, "true");
}
@@ -65,7 +61,7 @@ public class ConsoleAppenderTest {
@Mock
PrintStream psMock;
- @Before
+ @BeforeEach
public void before() {
System.setProperty(LOG4J_SKIP_JANSI, "true");
baos = new ByteArrayOutputStream();
@@ -95,7 +91,7 @@ public class ConsoleAppenderTest {
final ConsoleAppender app = ConsoleAppender.newBuilder().setLayout(layout).setTarget(targetName)
.setName("Console").setIgnoreExceptions(false).build();
app.start();
- assertTrue("Appender did not start", app.isStarted());
+ assertTrue(app.isStarted(), "Appender did not start");
final LogEvent event = Log4jLogEvent.newBuilder() //
.setLoggerName("TestLogger") //
@@ -106,7 +102,7 @@ public class ConsoleAppenderTest {
app.append(event);
app.stop();
- assertFalse("Appender did not stop", app.isStarted());
+ assertFalse(app.isStarted(), "Appender did not stop");
} finally {
systemSetter.systemSet(ps);
}
@@ -127,7 +123,7 @@ public class ConsoleAppenderTest {
private void testFollowSystemPrintStream(final PrintStream ps, final Target target, final SystemSetter systemSetter) {
final ConsoleAppender app = ConsoleAppender.newBuilder().setTarget(target).setFollow(true)
.setIgnoreExceptions(false).setName("test").build();
- Assert.assertEquals(target, app.getTarget());
+ assertEquals(target, app.getTarget());
app.start();
try {
final LogEvent event = Log4jLogEvent.newBuilder() //
@@ -137,7 +133,7 @@ public class ConsoleAppenderTest {
.setMessage(new SimpleMessage("Test")) //
.build();
- assertTrue("Appender did not start", app.isStarted());
+ assertTrue(app.isStarted(), "Appender did not start");
systemSetter.systemSet(new PrintStream(baos));
try {
app.append(event);
@@ -145,12 +141,12 @@ public class ConsoleAppenderTest {
systemSetter.systemSet(ps);
}
final String msg = baos.toString();
- assertNotNull("No message", msg);
- assertTrue("Incorrect message: \"" + msg + "\"", msg.endsWith("Test" + Strings.LINE_SEPARATOR));
+ assertNotNull(msg, "No message");
+ assertTrue(msg.endsWith("Test" + Strings.LINE_SEPARATOR), "Incorrect message: \"" + msg + "\"");
} finally {
app.stop();
}
- assertFalse("Appender did not stop", app.isStarted());
+ assertFalse(app.isStarted(), "Appender did not stop");
}
@Test
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FailoverAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FailoverAppenderTest.java
index 4a649e4..54f8dbf 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FailoverAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FailoverAppenderTest.java
@@ -16,45 +16,39 @@
*/
package org.apache.logging.log4j.core.appender;
-import java.util.List;
-
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.junit.LoggerContextSource;
+import org.apache.logging.log4j.junit.Named;
import org.apache.logging.log4j.test.appender.FailOnceAppender;
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.AfterEach;
+import org.junit.jupiter.api.Test;
-import static org.junit.Assert.*;
+import java.util.List;
-/**
- *
- */
-public class FailoverAppenderTest {
- private ListAppender app;
- private FailOnceAppender foApp;
- private Logger logger;
- private Logger onceLogger;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
- @ClassRule
- public static LoggerContextRule init = new LoggerContextRule("log4j-failover.xml");
+@LoggerContextSource("log4j-failover.xml")
+public class FailoverAppenderTest {
+ private final ListAppender app;
+ private final FailOnceAppender foApp;
+ private final Logger logger;
+ private final Logger onceLogger;
- @Before
- public void setUp() throws Exception {
- app = init.getListAppender("List");
- foApp = (FailOnceAppender) init.getAppender("Once");
- logger = init.getLogger("LoggerTest");
- onceLogger = init.getLogger("Once");
+ public FailoverAppenderTest(
+ final LoggerContext context, @Named("List") final ListAppender app, @Named("Once") final FailOnceAppender foApp) {
+ this.app = app;
+ this.foApp = foApp;
+ logger = context.getLogger("LoggerTest");
+ onceLogger = context.getLogger("Once");
}
- @After
+ @AfterEach
public void tearDown() throws Exception {
- if (app != null) {
- app.clear();
- }
+ app.clear();
}
@Test
@@ -62,12 +56,12 @@ public class FailoverAppenderTest {
logger.error("This is a test");
List<LogEvent> events = app.getEvents();
assertNotNull(events);
- assertEquals("Incorrect number of events. Should be 1 is " + events.size(), events.size(), 1);
+ assertEquals(events.size(), 1, "Incorrect number of events. Should be 1 is " + events.size());
app.clear();
logger.error("This is a test");
events = app.getEvents();
assertNotNull(events);
- assertEquals("Incorrect number of events. Should be 1 is " + events.size(), events.size(), 1);
+ assertEquals(events.size(), 1, "Incorrect number of events. Should be 1 is " + events.size());
}
@Test
@@ -76,14 +70,14 @@ public class FailoverAppenderTest {
onceLogger.error("Fail again");
List<LogEvent> events = app.getEvents();
assertNotNull(events);
- assertEquals("Incorrect number of events. Should be 2 is " + events.size(), events.size(), 2);
+ assertEquals(events.size(), 2, "Incorrect number of events. Should be 2 is " + events.size());
app.clear();
Thread.sleep(1100);
onceLogger.error("Fail after recovery interval");
onceLogger.error("Second log message");
events = app.getEvents();
- assertEquals("Did not recover", events.size(), 0);
+ assertEquals(events.size(), 0, "Did not recover");
events = foApp.getEvents();
- assertEquals("Incorrect number of events in primary appender", events.size(), 2);
+ assertEquals(events.size(), 2, "Incorrect number of events in primary appender");
}
}
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderBuilderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderBuilderTest.java
index 8305a07..f27fb8f 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderBuilderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderBuilderTest.java
@@ -16,8 +16,9 @@
*/
package org.apache.logging.log4j.core.appender;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
public class FileAppenderBuilderTest {
@@ -26,6 +27,6 @@ public class FileAppenderBuilderTest {
*/
@Test
public void testDefaultImmediateFlush() {
- Assert.assertTrue(FileAppender.newBuilder().isImmediateFlush());
+ assertTrue(FileAppender.newBuilder().isImmediateFlush());
}
}
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderPermissionsTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderPermissionsTest.java
index 396be82..c287e7e 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderPermissionsTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderPermissionsTest.java
@@ -16,76 +16,54 @@
*/
package org.apache.logging.log4j.core.appender;
-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.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.nio.charset.Charset;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.attribute.PosixFileAttributes;
-import java.nio.file.attribute.PosixFilePermissions;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
import org.apache.commons.lang3.SystemUtils;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.Layout;
import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.impl.Log4jLogEvent;
import org.apache.logging.log4j.core.layout.PatternLayout;
import org.apache.logging.log4j.core.util.FileUtils;
+import org.apache.logging.log4j.junit.CleanUpDirectories;
+import org.apache.logging.log4j.junit.LoggerContextSource;
import org.apache.logging.log4j.message.SimpleMessage;
-import org.junit.Assert;
-import org.junit.Assume;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.apache.logging.log4j.spi.ExtendedLogger;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.attribute.PosixFileAttributes;
+import java.nio.file.attribute.PosixFilePermissions;
+import java.util.stream.Stream;
+
+import static org.apache.logging.log4j.util.Unbox.box;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
/**
* Tests {@link FileAppender}.
*/
-@RunWith(Parameterized.class)
+@CleanUpDirectories(FileAppenderPermissionsTest.DIR)
public class FileAppenderPermissionsTest {
- private static final String DIR = "target/permissions1";
-
- @Parameterized.Parameters(name = "{0} {1} {2}")
- public static Collection<Object[]> data() throws IOException {
- return Arrays.asList(new Object[][] { //
- // @formatter:off
- {"rwxrwxrwx", true, 2},
- {"rw-r--r--", false, 3},
- {"rw-------", true, 4},
- {"rw-rw----", false, 5},
- });
- // @formatter:on
- }
-
- private final boolean createOnDemand;
- private final String filePermissions;
- private final int fileIndex;
+ static final String DIR = "target/permissions1";
- public FileAppenderPermissionsTest(final String filePermissions, final boolean createOnDemand, final int fileIndex) {
- this.filePermissions = filePermissions;
- this.createOnDemand = createOnDemand;
- this.fileIndex = fileIndex;
- }
-
- @BeforeClass
+ @BeforeAll
public static void beforeClass() {
System.setProperty("log4j2.debug", "true");
- Assume.assumeTrue(FileUtils.isFilePosixAttributeViewSupported());
+ assumeTrue(FileUtils.isFilePosixAttributeViewSupported());
}
- @Test
- public void testFilePermissionsAPI() throws Exception {
+ @ParameterizedTest
+ @CsvSource({ "rwxrwxrwx,true,2", "rw-r--r--,false,3", "rw-------,true,4", "rw-rw----,false,5" })
+ public void testFilePermissionsAPI(final String filePermissions, final boolean createOnDemand, final int fileIndex)
+ throws Exception {
final File file = new File(DIR, "AppenderTest-" + fileIndex + ".log");
final Path path = file.toPath();
final Layout<String> layout = PatternLayout.newBuilder().setPattern(PatternLayout.SIMPLE_CONVERSION_PATTERN)
@@ -105,11 +83,11 @@ public class FileAppenderPermissionsTest {
// @formatter:on
try {
appender.start();
- assertTrue("Appender did not start", appender.isStarted());
- Assert.assertNotEquals(createOnDemand, Files.exists(path));
+ assertTrue(appender.isStarted(), "Appender did not start");
+ assertNotEquals(createOnDemand, Files.exists(path));
long curLen = file.length();
long prevLen = curLen;
- assertTrue("File length: " + curLen, curLen == 0);
+ assertEquals(curLen, 0, "File length: " + curLen);
for (int i = 0; i < 100; ++i) {
final LogEvent event = Log4jLogEvent.newBuilder().setLoggerName("TestLogger") //
.setLoggerFqcn(FileAppenderPermissionsTest.class.getName()).setLevel(Level.INFO) //
@@ -118,7 +96,7 @@ public class FileAppenderPermissionsTest {
try {
appender.append(event);
curLen = file.length();
- assertTrue("File length: " + curLen, curLen > prevLen);
+ assertTrue(curLen > prevLen, "File length: " + curLen);
// Give up control long enough for another thread/process to occasionally do something.
Thread.sleep(25);
} catch (final Exception ex) {
@@ -129,13 +107,14 @@ public class FileAppenderPermissionsTest {
assertEquals(filePermissions, PosixFilePermissions.toString(Files.getPosixFilePermissions(path)));
} finally {
appender.stop();
- Files.deleteIfExists(path);
}
- assertFalse("Appender did not stop", appender.isStarted());
+ assertFalse(appender.isStarted(), "Appender did not stop");
}
-
- @Test
- public void testFileUserGroupAPI() throws Exception {
+
+ @ParameterizedTest
+ @CsvSource({ "rwxrwxrwx,2", "rw-r--r--,3", "rw-------,4", "rw-rw----,5" })
+ public void testFileUserGroupAPI(final String filePermissions, final int fileIndex)
+ throws Exception {
final File file = new File(DIR, "AppenderTest-" + (1000 + fileIndex) + ".log");
final Path path = file.toPath();
final String user = findAUser();
@@ -161,10 +140,10 @@ public class FileAppenderPermissionsTest {
// @formatter:on
try {
appender.start();
- assertTrue("Appender did not start", appender.isStarted());
+ assertTrue(appender.isStarted(), "Appender did not start");
long curLen = file.length();
long prevLen = curLen;
- assertTrue(file + " File length: " + curLen, curLen == 0);
+ assertEquals(curLen, 0, file + " File length: " + curLen);
for (int i = 0; i < 100; ++i) {
final LogEvent event = Log4jLogEvent.newBuilder().setLoggerName("TestLogger") //
.setLoggerFqcn(FileAppenderPermissionsTest.class.getName()).setLevel(Level.INFO) //
@@ -173,7 +152,7 @@ public class FileAppenderPermissionsTest {
try {
appender.append(event);
curLen = file.length();
- assertTrue("File length: " + curLen, curLen > prevLen);
+ assertTrue(curLen > prevLen, "File length: " + curLen);
// Give up control long enough for another thread/process to occasionally do something.
Thread.sleep(25);
} catch (final Exception ex) {
@@ -186,27 +165,32 @@ public class FileAppenderPermissionsTest {
assertEquals(group, Files.readAttributes(path, PosixFileAttributes.class).group().getName());
} finally {
appender.stop();
- Files.deleteIfExists(path);
}
- assertFalse("Appender did not stop", appender.isStarted());
+ assertFalse(appender.isStarted(), "Appender did not stop");
+ }
+
+ @Test
+ @LoggerContextSource(value = "log4j-posix.xml", timeout = 10)
+ void testFilePermissions(final LoggerContext context) throws IOException {
+ final ExtendedLogger logger = context.getLogger(getClass());
+ for (int i = 0; i < 1000; i++) {
+ logger.debug("This is test message number {}", box(i));
+ }
+ final String permissions = PosixFilePermissions.toString(
+ Files.getPosixFilePermissions(Paths.get("target/permissions1/AppenderTest-1.log")));
+ assertEquals("rw-------", permissions);
}
public static String findAGroup(final String user) throws IOException {
if (SystemUtils.IS_OS_MAC_OSX) {
return "staff";
}
- String group = user;
- try (FileInputStream fis = new FileInputStream("/etc/group")) {
- final List<String> groups = org.apache.commons.io.IOUtils.readLines(fis, Charset.defaultCharset());
- for (int i = 0; i < groups.size(); i++) {
- final String aGroup = groups.get(i);
- if (!aGroup.startsWith(user) && aGroup.contains(user)) {
- group = aGroup.split(":")[0];
- break;
- }
- }
+ try (final Stream<String> lines = Files.lines(Paths.get("/etc/group"))) {
+ return lines.filter(group -> !group.startsWith(user) && group.contains(user))
+ .map(group -> group.substring(0, group.indexOf(':')))
+ .findAny()
+ .orElse(user);
}
- return group;
}
private static String findAUser() throws IOException {
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderPermissionsXmlConfigTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderPermissionsXmlConfigTest.java
deleted file mode 100644
index dd1dc81..0000000
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderPermissionsXmlConfigTest.java
+++ /dev/null
@@ -1,66 +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 static org.junit.Assert.assertEquals;
-
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.nio.file.attribute.PosixFilePermissions;
-
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.util.FileUtils;
-import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.junit.Assume;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.RuleChain;
-
-/**
- * Tests {@link FileAppender}.
- */
-public class FileAppenderPermissionsXmlConfigTest {
-
- private static final String DIR = "target/permissions1";
-
- private static final String CONFIG = "log4j-posix.xml";
-
- public static LoggerContextRule loggerContextRule = LoggerContextRule.createShutdownTimeoutLoggerContextRule(CONFIG);
-
- @Rule
- public RuleChain chain = loggerContextRule.withCleanFoldersRule(DIR);
-
- @BeforeClass
- public static void beforeClass() {
- Assume.assumeTrue(FileUtils.isFilePosixAttributeViewSupported());
- }
-
- @Test
- public void testFilePermissions() throws Exception {
- final Logger logger = loggerContextRule.getLogger(FileAppenderPermissionsTest.class);
- for (int i = 0; i < 1000; ++i) {
- final String message = "This is test message number " + i;
- logger.debug(message);
- }
- assertEquals("rw-------", PosixFilePermissions.toString(
- Files.getPosixFilePermissions(Paths.get("target/permissions1/AppenderTest-1.log"))));
- }
-
-
-}
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderTest.java
index ac7528d..223ce3e 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderTest.java
@@ -19,7 +19,6 @@ package org.apache.logging.log4j.core.appender;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
-import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -36,10 +35,9 @@ import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.impl.Log4jLogEvent;
import org.apache.logging.log4j.core.layout.PatternLayout;
import org.apache.logging.log4j.core.util.Throwables;
+import org.apache.logging.log4j.junit.CleanUpFiles;
import org.apache.logging.log4j.message.SimpleMessage;
import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
@@ -49,9 +47,10 @@ import static org.junit.jupiter.api.Assertions.*;
/**
* Tests {@link FileAppender}.
*/
+@CleanUpFiles(FileAppenderTest.FILE_NAME)
public class FileAppenderTest {
- private static final String FILE_NAME = "target/fileAppenderTest.log";
+ static final String FILE_NAME = "target/fileAppenderTest.log";
private static final Path PATH = Paths.get(FILE_NAME);
private static final int THREADS = 2;
@@ -60,12 +59,6 @@ public class FileAppenderTest {
assertFalse(AbstractManager.hasManager(FILE_NAME), "Manager for " + FILE_NAME + " not removed");
}
- @BeforeEach
- @AfterEach
- void cleanFiles() throws IOException {
- Files.deleteIfExists(PATH);
- }
-
@ParameterizedTest
@ValueSource(booleans = { false, true })
public void testAppender(final boolean createOnDemand) throws Exception {