Skip to content

Commit

Permalink
refactor(appender-rolling): update to junit5
Browse files Browse the repository at this point in the history
  • Loading branch information
ninetteadhikari committed Oct 29, 2024
1 parent 6683cc6 commit 63668a3
Show file tree
Hide file tree
Showing 9 changed files with 127 additions and 169 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
import static org.apache.logging.log4j.core.test.hamcrest.FileMatchers.hasName;
import static org.hamcrest.Matchers.endsWith;
import static org.hamcrest.Matchers.hasItemInArray;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;

import java.io.File;
import java.io.FileOutputStream;
Expand All @@ -31,13 +31,12 @@
import java.nio.file.Files;
import java.nio.file.Path;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.appender.RollingFileAppender;
import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
import org.apache.logging.log4j.core.util.CronExpression;
import org.hamcrest.Matcher;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.RuleChain;
import org.junit.jupiter.api.Test;

/**
*
Expand All @@ -48,22 +47,17 @@ public class RollingAppenderCronTest {
private static final String DIR = "target/rolling-cron";
private static final String FILE = "target/rolling-cron/rollingtest.log";

private final LoggerContextRule loggerContextRule =
LoggerContextRule.createShutdownTimeoutLoggerContextRule(CONFIG);

@Rule
public RuleChain chain = loggerContextRule.withCleanFoldersRule(DIR);

@Test
public void testAppender() throws Exception {
@LoggerContextSource(value = CONFIG, timeout = 10)
public void testAppender(LoggerContext context) throws Exception {
// TODO Is there a better way to test than putting the thread to sleep all over the place?
final Logger logger = loggerContextRule.getLogger();
final Logger logger = context.getLogger(RollingAppenderCronTest.class.getName());
final File file = new File(FILE);
assertTrue("Log file does not exist", file.exists());
assertTrue(file.exists(), "Log file does not exist");
logger.debug("This is test message number 1");
Thread.sleep(2500);
final File dir = new File(DIR);
assertTrue("Directory not created", dir.exists() && dir.listFiles().length > 0);
assertTrue(dir.exists() && dir.listFiles().length > 0, "Directory not created");

final int MAX_TRIES = 20;
final Matcher<File[]> hasGzippedFile = hasItemInArray(that(hasName(that(endsWith(".gz")))));
Expand Down Expand Up @@ -94,12 +88,12 @@ public void testAppender() throws Exception {
logger.debug("Adding new event {}", i);
}
Thread.sleep(1000);
final RollingFileAppender app = (RollingFileAppender)
loggerContextRule.getLoggerContext().getConfiguration().getAppender("RollingFile");
final RollingFileAppender app =
(RollingFileAppender) context.getConfiguration().getAppender("RollingFile");
final TriggeringPolicy policy = app.getManager().getTriggeringPolicy();
assertNotNull("No triggering policy", policy);
assertTrue("Incorrect policy type", policy instanceof CronTriggeringPolicy);
assertNotNull(policy, "No triggering policy");
assertTrue(policy instanceof CronTriggeringPolicy, "Incorrect policy type");
final CronExpression expression = ((CronTriggeringPolicy) policy).getCronExpression();
assertTrue("Incorrect triggering policy", expression.getCronExpression().equals("* * * ? * *"));
assertTrue(expression.getCronExpression().equals("* * * ? * *"), "Incorrect triggering policy");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,16 @@
*/
package org.apache.logging.log4j.core.appender.rolling;

import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;

import java.io.File;
import java.util.Arrays;
import java.util.regex.Pattern;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.RuleChain;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
import org.junit.jupiter.api.Test;

/**
*
Expand All @@ -36,15 +35,10 @@ public class RollingAppenderCustomDeleteActionTest {
private static final String CONFIG = "log4j-rolling-with-custom-delete.xml";
private static final String DIR = "target/rolling-with-delete/test";

private final LoggerContextRule loggerContextRule =
LoggerContextRule.createShutdownTimeoutLoggerContextRule(CONFIG);

@Rule
public RuleChain chain = loggerContextRule.withCleanFoldersRule(DIR);

@Test
public void testAppender() throws Exception {
final Logger logger = loggerContextRule.getLogger();
@LoggerContextSource(value = CONFIG, timeout = 10)
public void testAppender(LoggerContext context) throws Exception {
final Logger logger = context.getLogger(RollingAppenderCustomDeleteActionTest.class.getName());
// Trigger the rollover
for (int i = 0; i < 10; ++i) {
// 30 chars per message: each message triggers a rollover
Expand All @@ -53,8 +47,8 @@ public void testAppender() throws Exception {
Thread.sleep(100); // Allow time for rollover to complete

final File dir = new File(DIR);
assertTrue("Dir " + DIR + " should exist", dir.exists());
assertTrue("Dir " + DIR + " should contain files", dir.listFiles().length > 0);
assertTrue(dir.exists(), "Dir " + DIR + " should exist");
assertTrue(dir.listFiles().length > 0, "Dir " + DIR + " should contain files");

final int MAX_TRIES = 20;
for (int i = 0; i < MAX_TRIES; i++) {
Expand All @@ -65,9 +59,9 @@ public void testAppender() throws Exception {
if (files.length == 3) {
for (final File file : files) {
assertTrue(
"test-4.log should have been deleted",
Arrays.asList("test-1.log", "test-2.log", "test-3.log")
.contains(file.getName()));
.contains(file.getName()),
"test-4.log should have been deleted");
}
return; // test succeeded
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
*/
package org.apache.logging.log4j.core.appender.rolling;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;

import java.io.BufferedWriter;
import java.io.File;
Expand All @@ -31,12 +31,11 @@
import java.util.Arrays;
import java.util.List;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
import org.apache.logging.log4j.core.util.datetime.FixedDateFormat;
import org.apache.logging.log4j.core.util.datetime.FixedDateFormat.FixedFormat;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.RuleChain;
import org.junit.jupiter.api.Test;

/**
* Tests that sibling conditions are invoked in configured order.
Expand All @@ -46,21 +45,16 @@ public class RollingAppenderDeleteAccumulatedCount1Test {
private static final String CONFIG = "log4j-rolling-with-custom-delete-accum-count1.xml";
private static final String DIR = "target/rolling-with-delete-accum-count1/test";

private final LoggerContextRule loggerContextRule =
LoggerContextRule.createShutdownTimeoutLoggerContextRule(CONFIG);

@Rule
public RuleChain chain = loggerContextRule.withCleanFoldersRule(DIR);

@Test
public void testAppender() throws Exception {
@LoggerContextSource(value = CONFIG, timeout = 10)
public void testAppender(LoggerContext context) throws Exception {
final Path p1 = writeTextTo(DIR + "/my-1.log"); // glob="test-*.log"
final Path p2 = writeTextTo(DIR + "/my-2.log");
final Path p3 = writeTextTo(DIR + "/my-3.log");
final Path p4 = writeTextTo(DIR + "/my-4.log");
final Path p5 = writeTextTo(DIR + "/my-5.log");

final Logger logger = loggerContextRule.getLogger();
final Logger logger = context.getLogger(RollingAppenderDeleteAccumulatedCount1Test.class.getName());
for (int i = 0; i < 10; ++i) {
updateLastModified(p1, p2, p3, p4, p5); // make my-*.log files most recent

Expand All @@ -70,16 +64,16 @@ public void testAppender() throws Exception {
Thread.sleep(100); // Allow time for rollover to complete

final File dir = new File(DIR);
assertTrue("Dir " + DIR + " should exist", dir.exists());
assertTrue("Dir " + DIR + " should contain files", dir.listFiles().length > 0);
assertTrue(dir.exists(), "Dir " + DIR + " should exist");
assertTrue(dir.listFiles().length > 0, "Dir " + DIR + " should contain files");

final File[] files = dir.listFiles();
for (final File file : files) {
System.out.println(file + " (" + file.length() + "B) "
+ FixedDateFormat.create(FixedFormat.ABSOLUTE).format(file.lastModified()));
}
final List<String> expected = Arrays.asList("my-1.log", "my-2.log", "my-3.log", "my-4.log", "my-5.log");
assertEquals(Arrays.toString(files), expected.size() + 6, files.length);
assertEquals(expected.size() + 6, files.length, Arrays.toString(files));
for (final File file : files) {
if (!expected.contains(file.getName()) && !file.getName().startsWith("test-")) {
fail("unexpected file" + file);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@

import static org.apache.logging.log4j.core.test.hamcrest.Descriptors.that;
import static org.apache.logging.log4j.core.test.hamcrest.FileMatchers.hasName;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.endsWith;
import static org.hamcrest.Matchers.hasItemInArray;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
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.io.BufferedReader;
import java.io.File;
Expand All @@ -32,15 +32,14 @@
import java.util.List;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
import org.apache.logging.log4j.status.StatusData;
import org.apache.logging.log4j.status.StatusListener;
import org.apache.logging.log4j.status.StatusLogger;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.RuleChain;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

/**
*
Expand All @@ -51,34 +50,30 @@ public class RollingAppenderDirectWrite1906Test {

private static final String DIR = "target/rolling-direct-1906";

public static LoggerContextRule loggerContextRule =
LoggerContextRule.createShutdownTimeoutLoggerContextRule(CONFIG);

@Rule
public RuleChain chain = loggerContextRule.withCleanFoldersRule(DIR);

private Logger logger;

@BeforeClass
@BeforeAll
public static void setupClass() throws Exception {
StatusLogger.getLogger().registerListener(new NoopStatusListener());
}

@Before
public void setUp() throws Exception {
this.logger = loggerContextRule.getLogger(RollingAppenderDirectWrite1906Test.class.getName());
@BeforeEach
@LoggerContextSource(value = CONFIG, timeout = 10)
public void setUp(LoggerContext context) throws Exception {
this.logger = context.getLogger(RollingAppenderDirectWrite1906Test.class.getName());
}

@Test
public void testAppender() throws Exception {
@LoggerContextSource(value = CONFIG, timeout = 10)
public void testAppender(LoggerContext context) throws Exception {
final int count = 100;
for (int i = 0; i < count; ++i) {
logger.debug("This is test message number " + i);
Thread.sleep(50);
}
Thread.sleep(50);
final File dir = new File(DIR);
assertTrue("Directory not created", dir.exists() && dir.listFiles().length > 0);
assertTrue(dir.exists() && dir.listFiles().length > 0, "Directory not created");
final File[] files = dir.listFiles();
assertNotNull(files);
assertThat(files, hasItemInArray(that(hasName(that(endsWith(".log"))))));
Expand All @@ -92,12 +87,12 @@ public void testAppender() throws Exception {
final String[] parts = line.split((" "));
final String expected = "rollingfile." + parts[0] + ".log";

assertEquals(logFileNameError(expected, actual), expected, actual);
assertEquals(expected, actual, logFileNameError(expected, actual));
++found;
}
reader.close();
}
assertEquals("Incorrect number of events read. Expected " + count + ", Actual " + found, count, found);
assertEquals(count, found, "Incorrect number of events read. Expected " + count + ", Actual " + found);
}

private String logFileNameError(final String expected, final String actual) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,17 @@
*/
package org.apache.logging.log4j.core.appender.rolling;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.apache.logging.log4j.core.appender.RollingFileAppender;
import org.apache.logging.log4j.core.test.junit.CleanFolders;
import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
import org.apache.logging.log4j.core.test.junit.Named;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;

/**
* Test LOG4J2-2485.
Expand All @@ -40,14 +41,8 @@ public class RollingAppenderDirectWriteStartupSizeTest {

private static final String MESSAGE = "test message";

@Rule
public LoggerContextRule loggerContextRule = LoggerContextRule.createShutdownTimeoutLoggerContextRule(CONFIG);

@Rule
public CleanFolders cleanFolders = new CleanFolders(false, true, 10, DIR);

@BeforeClass
public static void beforeClass() throws Exception {
@BeforeAll
public static void beforeAll() throws Exception {
final Path log = Paths.get(DIR, FILE);
if (Files.exists(log)) {
Files.delete(log);
Expand All @@ -59,12 +54,12 @@ public static void beforeClass() throws Exception {
}

@Test
public void testRollingFileAppenderWithReconfigure() throws Exception {
final RollingFileAppender rfAppender =
loggerContextRule.getRequiredAppender("RollingFile", RollingFileAppender.class);
@LoggerContextSource(value = CONFIG, timeout = 10)
public void testRollingFileAppenderWithReconfigure(@Named("RollingFile") RollingFileAppender rfAppender)
throws Exception {
final RollingFileManager manager = rfAppender.getManager();

Assert.assertNotNull(manager);
Assert.assertEquals("Existing file size not preserved on startup", MESSAGE.getBytes().length, manager.size);
assertNotNull(manager);
assertEquals(MESSAGE.getBytes().length, manager.size, "Existing file size not preserved on startup");
}
}
Loading

0 comments on commit 63668a3

Please sign in to comment.