Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Port log4j-core-test migration to JUnit 5 into main #3289

Open
wants to merge 18 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
024e090
Add `CleanFoldersRuleExtension`
AlbaHerrerias Dec 13, 2024
814aabe
Migrate `Log4j2_1482_Test` to JUnit 5
AlbaHerrerias Dec 13, 2024
4c9f559
Migrate `NoSqlDatabaseManagerTest.java` to JUnit 5
AlbaHerrerias Dec 13, 2024
7d2868b
Migrate `AbstractDatabaseAppenderTest` to JUnit 5
AlbaHerrerias Dec 13, 2024
0d5671d
Migrate `RollingAppenderCronAndSizeLookupTest` to JUnit 5
AlbaHerrerias Dec 13, 2024
2e0ce98
Migrate `RollingAppenderDirectWriteStartupSizeTest` to JUnit 5
AlbaHerrerias Dec 13, 2024
21b3c9e
Migrate `RollingAppenderDirectWriteWithFilenameTest` to JUnit 5
AlbaHerrerias Dec 13, 2024
baccc3f
Migrate `RollingAppenderNoUnconditionalDeleteTest` to JUnit 5
AlbaHerrerias Dec 13, 2024
fd98ff5
Migrate `RollingAppenderSizeMaxWidthTest` to JUnit 5
AlbaHerrerias Dec 13, 2024
b152262
Migrate `RollingAppenderTimeTest` into JUnit 5
AlbaHerrerias Dec 13, 2024
593b225
Migrate `RollingFileAppenderInterruptedThreadTest` to JUnit 5
AlbaHerrerias Dec 13, 2024
bfc646f
Migrate `RollingFileAppenderReconfigureTest` to JUnit 5
AlbaHerrerias Dec 13, 2024
3cb606e
Migrate `RollingFileAppenderReconfigureUndefinedSystemPropertyTest` t…
AlbaHerrerias Dec 13, 2024
b080936
Migrate `RollingRandomAppenderDirectWriteWithFilenameTest` to JUnit 5
AlbaHerrerias Dec 13, 2024
0d47beb
Migrate `RoutingAppenderWithPurgingTest` to JUnit 5
AlbaHerrerias Dec 13, 2024
cd752c9
Migrate `Log4j2Jira1688Test` to JUnit 5
AlbaHerrerias Dec 13, 2024
c8fe592
Migrate `NestedLoggingFromThrowableMessageTest` to JUnit 5
AlbaHerrerias Dec 13, 2024
eda684b
Remove deprecated files
AlbaHerrerias Dec 13, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
*/
package org.apache.logging.log4j.core.test.junit;

import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
Expand All @@ -28,13 +29,17 @@
import java.util.Map;
import java.util.Set;
import org.junit.Assert;
import org.junit.jupiter.api.extension.AfterEachCallback;
import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.rules.ExternalResource;

/**
* This class should not perform logging using Log4j to avoid accidentally
* loading or re-loading Log4j configurations.
*/
public abstract class AbstractExternalFileCleaner extends ExternalResource {
public abstract class AbstractExternalFileCleaner extends ExternalResource
implements BeforeEachCallback, AfterEachCallback {

protected static final String CLEANER_MARKER = "CLEANER";

Expand Down Expand Up @@ -90,13 +95,23 @@ public AbstractExternalFileCleaner(
}
}

@Override
public void afterEach(ExtensionContext context) {
after();
}

@Override
protected void after() {
if (cleanAfter()) {
this.clean();
}
}

@Override
public void beforeEach(ExtensionContext context) {
before();
}

@Override
protected void before() {
if (cleanBefore()) {
Expand Down Expand Up @@ -181,6 +196,7 @@ protected void println(final String msg) {
}
}

@SuppressFBWarnings("INFORMATION_EXPOSURE_THROUGH_AN_ERROR_MESSAGE")
protected void printStackTrace(final Throwable t) {
if (printStream != null) {
t.printStackTrace(printStream);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
/*
* 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.test.junit;

import java.util.concurrent.TimeUnit;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configurator;
import org.apache.logging.log4j.status.StatusLogger;
import org.junit.jupiter.api.extension.AfterEachCallback;
import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.api.extension.ParameterContext;
import org.junit.jupiter.api.extension.ParameterResolutionException;
import org.junit.jupiter.api.extension.ParameterResolver;

public class CleanFoldersRuleExtension implements BeforeEachCallback, AfterEachCallback, ParameterResolver {

private final String CONFIG;
private final String ClassName;
private final ClassLoader ClassNameLoader;
private LoggerContext context;
private CleanFolders cleanFolders;

public CleanFoldersRuleExtension(
final String DIR, final String CONFIG, final String ClassName, final ClassLoader ClassNameLoader) {
this.CONFIG = CONFIG;
this.ClassName = ClassName;
this.ClassNameLoader = ClassNameLoader;
this.cleanFolders = new CleanFolders(DIR);
}

public CleanFoldersRuleExtension(
final String DIR,
final String CONFIG,
final String ClassName,
final ClassLoader ClassNameLoader,
final boolean before,
final boolean after,
final int maxTries) {
this.CONFIG = CONFIG;
this.ClassName = ClassName;
this.ClassNameLoader = ClassNameLoader;
this.cleanFolders = new CleanFolders(before, after, maxTries, DIR);
}

@Override
public void beforeEach(final ExtensionContext ctx) throws Exception {
this.cleanFolders.beforeEach(ctx);
this.context = Configurator.initialize(ClassName, ClassNameLoader, CONFIG);
}

@Override
public void afterEach(final ExtensionContext ctx) throws Exception {
if (this.context != null) {
Configurator.shutdown(this.context, 10, TimeUnit.SECONDS);
StatusLogger.getLogger().reset();
}
this.cleanFolders.afterEach(ctx);
}

@Override
public boolean supportsParameter(final ParameterContext parameterContext, final ExtensionContext extensionContext)
throws ParameterResolutionException {
// Check if the parameter is of type LoggerContext
return parameterContext.getParameter().getType().equals(LoggerContext.class);
}

@Override
public Object resolveParameter(final ParameterContext parameterContext, final ExtensionContext extensionContext)
throws ParameterResolutionException {
// Return the LoggerContext instance
return this.context;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
*/
package org.apache.logging.log4j.core.test.layout;

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

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
Expand All @@ -26,23 +28,28 @@
import java.util.List;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configurator;
import org.apache.logging.log4j.core.test.categories.Layouts;
import org.apache.logging.log4j.core.test.junit.CleanFolders;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.apache.logging.log4j.core.test.junit.CleanFoldersRuleExtension;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

/**
* Tests https://issues.apache.org/jira/browse/LOG4J2-1482
*/
@Category(Layouts.Csv.class)
@Tag("Layouts.Csv")
public abstract class Log4j2_1482_Test {

static final String CONFIG_LOCATION = "log4j2-1482.xml";

static final String FOLDER = "target/log4j2-1482";

@RegisterExtension
private CleanFoldersRuleExtension cleanFolders = new CleanFoldersRuleExtension(
FOLDER,
CONFIG_LOCATION,
Log4j2_1482_Test.class.getName(),
this.getClass().getClassLoader());

private static final int LOOP_COUNT = 10;

static void assertFileContents(final int runNumber) throws IOException {
Expand All @@ -56,15 +63,11 @@ static void assertFileContents(final int runNumber) throws IOException {
final File[] files = folder.toFile().listFiles();
Arrays.sort(files);
System.out.println("Run " + runNumber + ": " + Arrays.toString(files));
Assert.fail(
String.format("Run %,d, line %,d of %,d: \"%s\" in %s", runNumber, i++, size, string, lines));
fail(String.format("Run %,d, line %,d of %,d: \"%s\" in %s", runNumber, i++, size, string, lines));
}
}
}

@Rule
public CleanFolders cleanFolders = new CleanFolders(FOLDER);

protected abstract void log(int runNumber);

private void loopingRun(final int loopCount) throws IOException {
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.db;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertSame;
import static org.mockito.ArgumentMatchers.same;
import static org.mockito.BDDMockito.given;
import static org.mockito.BDDMockito.then;
Expand All @@ -29,12 +29,12 @@
import org.apache.logging.log4j.core.Filter;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.config.Property;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.junit.jupiter.MockitoExtension;

@RunWith(MockitoJUnitRunner.class)
@ExtendWith(MockitoExtension.class)
public class AbstractDatabaseAppenderTest {
private static class LocalAbstractDatabaseAppender extends AbstractDatabaseAppender<LocalAbstractDatabaseManager> {

Expand Down Expand Up @@ -85,24 +85,24 @@ public void testAppend() {
public void testNameAndGetLayout01() {
setUp("testName01");

assertEquals("The name is not correct.", "testName01", appender.getName());
assertNull("The layout should always be null.", appender.getLayout());
assertEquals("testName01", appender.getName(), "The name is not correct.");
assertNull(appender.getLayout(), "The layout should always be null.");
}

@Test
public void testNameAndGetLayout02() {
setUp("anotherName02");

assertEquals("The name is not correct.", "anotherName02", appender.getName());
assertNull("The layout should always be null.", appender.getLayout());
assertEquals("anotherName02", appender.getName(), "The name is not correct.");
assertNull(appender.getLayout(), "The layout should always be null.");
}

@Test
public void testReplaceManager() throws Exception {
setUp("name");

final LocalAbstractDatabaseManager oldManager = appender.getManager();
assertSame("The manager should be the same.", manager, oldManager);
assertSame(manager, oldManager, "The manager should be the same.");

final LocalAbstractDatabaseManager newManager = mock(LocalAbstractDatabaseManager.class);
appender.replaceManager(newManager);
Expand Down
Loading
Loading