This is an automated email from the ASF dual-hosted git repository. vy pushed a commit to branch release-2.x in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
The following commit(s) were added to refs/heads/release-2.x by this push: new 933ba9a Workarounds for Windows-specific "file being used by another process" failures. 933ba9a is described below commit 933ba9ae4a023643e5186a22faed47bab4f5498f Author: Volkan Yazici <volkan.yaz...@gmail.com> AuthorDate: Tue Sep 22 21:49:52 2020 +0200 Workarounds for Windows-specific "file being used by another process" failures. --- .github/workflows/maven.yml | 2 +- .../org/apache/logging/log4j/junit/AbstractFileCleaner.java | 5 ++++- .../org/apache/logging/log4j/junit/CleanUpDirectories.java | 6 ++++-- .../java/org/apache/logging/log4j/junit/CleanUpFiles.java | 6 ++++-- .../log4j/core/appender/RandomAccessFileManagerTest.java | 13 ++++++------- 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 325cf63..3642f3a 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -52,7 +52,7 @@ jobs: - name: Build with Maven (Windows) if: runner.os == 'Windows' - run: ./mvnw -V -B -e -DtrimStackTrace=false "-Dmaven.test.failure.ignore=true" "-Dsurefire.rerunFailingTestsCount=1" --global-toolchains ".github\workflows\maven-toolchains.xml" verify + run: ./mvnw -V -B -e "-DtrimStackTrace=false" "-Dmaven.test.failure.ignore=true" "-Dsurefire.rerunFailingTestsCount=1" "-Dlog4j2.junit.fileCleanerSleepPeriodMillis=1000" --global-toolchains ".github\workflows\maven-toolchains.xml" verify - name: Inspect environment (MacOS) if: runner.os == 'macOS' diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/junit/AbstractFileCleaner.java b/log4j-api/src/test/java/org/apache/logging/log4j/junit/AbstractFileCleaner.java index c5d2bc4..ce57b80 100644 --- a/log4j-api/src/test/java/org/apache/logging/log4j/junit/AbstractFileCleaner.java +++ b/log4j-api/src/test/java/org/apache/logging/log4j/junit/AbstractFileCleaner.java @@ -34,8 +34,11 @@ import java.util.stream.Collectors; import static org.junit.jupiter.api.Assertions.fail; abstract class AbstractFileCleaner implements BeforeEachCallback, AfterEachCallback { + private static final int MAX_TRIES = Integer.getInteger("log4j2.junit.fileCleanerMaxTries", 10); + private static final int SLEEP_PERIOD_MILLIS = Integer.getInteger("log4j2.junit.fileCleanerSleepPeriodMillis", 200); + @Override public void beforeEach(final ExtensionContext context) throws Exception { clean(context); @@ -64,7 +67,7 @@ abstract class AbstractFileCleaner implements BeforeEachCallback, AfterEachCallb failures.put(path, e); } try { - TimeUnit.MILLISECONDS.sleep(200); + TimeUnit.MILLISECONDS.sleep(SLEEP_PERIOD_MILLIS); } catch (final InterruptedException ignored) { failures.put(path, new InterruptedIOException()); Thread.currentThread().interrupt(); 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 6c398e6..151bb85 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 @@ -28,9 +28,11 @@ import java.lang.annotation.Target; /** * JUnit extension to automatically clean up a list of directories and their contents before and after test execution. - * This will automatically retry deletion up to 10 times per file while pausing a short duration each time. - * This can be overridden with the system property {@code log4j2.junit.fileCleanerMaxTries}. + * This will automatically retry deletion up to 10 times per file while pausing for 200ms each time. + * These can be overridden with system properties {@code log4j2.junit.fileCleanerMaxTries} and + * {@code log4j2.junit.fileCleanerSleepPeriodMillis}. * + * @see DirectoryCleaner * @see CleanUpFiles * @since 2.14.0 */ 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 a3b9ca6..e00ca42 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 @@ -28,9 +28,11 @@ import java.lang.annotation.Target; /** * JUnit extension to automatically clean up a list of files before and after test execution. - * This will automatically retry deletion up to 10 times per file while pausing a short duration each time. - * This can be overridden with the system property {@code log4j2.junit.fileCleanerMaxTries}. + * This will automatically retry deletion up to 10 times per file while pausing for 200ms each time. + * These can be overridden with system properties {@code log4j2.junit.fileCleanerMaxTries} and + * {@code log4j2.junit.fileCleanerSleepPeriodMillis}. * + * @see FileCleaner * @see CleanUpDirectories * @since 2.14.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 62b2bec..6227f37 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 @@ -38,12 +38,11 @@ public class RandomAccessFileManagerTest { /** * Test method for - * {@link org.apache.logging.log4j.core.appender.RandomAccessFileManager#writeBytes(byte[], int, int)} - * . + * {@link org.apache.logging.log4j.core.appender.RandomAccessFileManager#writeBytes(byte[], int, int)}. */ @Test public void testWrite_multiplesOfBufferSize() throws IOException { - final File file = new File(tempDir, "random-access-file.bin"); + final File file = new File(tempDir, "testWrite_multiplesOfBufferSize.bin"); try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) { final OutputStream os = NullOutputStream.getInstance(); final RandomAccessFileManager manager = new RandomAccessFileManager(null, raf, file.getName(), @@ -65,7 +64,7 @@ public class RandomAccessFileManagerTest { */ @Test public void testWrite_dataExceedingBufferSize() throws IOException { - final File file = new File(tempDir, "random-access-file.bin"); + final File file = new File(tempDir, "testWrite_dataExceedingBufferSize.bin"); try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) { final OutputStream os = NullOutputStream.getInstance(); final RandomAccessFileManager manager = new RandomAccessFileManager(null, raf, file.getName(), @@ -84,7 +83,7 @@ public class RandomAccessFileManagerTest { @Test public void testConfigurableBufferSize() throws IOException { - final File file = new File(tempDir, "random-access-file.bin"); + final File file = new File(tempDir, "testConfigurableBufferSize.bin"); try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) { final OutputStream os = NullOutputStream.getInstance(); final int bufferSize = 4 * 1024; @@ -100,7 +99,7 @@ public class RandomAccessFileManagerTest { @Test public void testWrite_dataExceedingMinBufferSize() throws IOException { - final File file = new File(tempDir, "random-access-file.bin"); + final File file = new File(tempDir, "testWrite_dataExceedingMinBufferSize.bin"); try (final RandomAccessFile raf = new RandomAccessFile(file, "rw")) { final OutputStream os = NullOutputStream.getInstance(); final int bufferSize = 1; @@ -121,7 +120,7 @@ public class RandomAccessFileManagerTest { @Test public void testAppendDoesNotOverwriteExistingFile() throws IOException { final boolean isAppend = true; - final File file = new File(tempDir, "random-access-file.bin"); + final File file = new File(tempDir, "testAppendDoesNotOverwriteExistingFile.bin"); assertEquals(0, file.length()); final byte[] bytes = new byte[4 * 1024];