This is an automated email from the ASF dual-hosted git repository. mattsicker pushed a commit to branch release-2.x in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 0f5b9ebf3b40d2bc8b1cb82c0037e7e3b4a4add2 Author: Matt Sicker <boa...@gmail.com> AuthorDate: Sun Sep 13 16:29:19 2020 -0500 Migrate MemoryMappedFileAppender tests to JUnit 5 Backported from 3.x. Signed-off-by: Matt Sicker <boa...@gmail.com> --- .../MemoryMappedFileAppenderLocationTest.java | 95 ---------------- .../MemoryMappedFileAppenderRemapTest.java | 95 ---------------- .../MemoryMappedFileAppenderSimpleTest.java | 86 --------------- .../appender/MemoryMappedFileAppenderTest.java | 120 +++++++++++++++++++++ .../MemoryMappedFileAppenderLocationTest.xml | 4 +- .../MemoryMappedFileAppenderRemapTest.xml | 4 +- .../resources/MemoryMappedFileAppenderTest.xml | 4 +- 7 files changed, 126 insertions(+), 282 deletions(-) diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderLocationTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderLocationTest.java deleted file mode 100644 index 8f2c4b7..0000000 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderLocationTest.java +++ /dev/null @@ -1,95 +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.io.BufferedReader; -import java.io.File; -import java.io.FileReader; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.core.CoreLoggerContexts; -import org.apache.logging.log4j.core.config.ConfigurationFactory; -import org.apache.logging.log4j.core.util.Integers; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.*; - -import static org.junit.Assert.*; - -/** - * Tests that logged strings and their location appear in the file, - * that the file size is the next power of two of the specified mapped region length - * and that the file is shrunk to its actual usage when done. - * - * @since 2.1 - */ -public class MemoryMappedFileAppenderLocationTest { - - final String LOGFILE = "target/MemoryMappedFileAppenderLocationTest.log"; - - @Before - public void before() { - System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY, - "MemoryMappedFileAppenderLocationTest.xml"); - } - - @Test - public void testMemMapLocation() throws Exception { - final File f = new File(LOGFILE); - if (f.exists()) { - assertTrue("deleted ok", f.delete()); - } - assertTrue(!f.exists()); - - final int expectedFileLength = Integers.ceilingNextPowerOfTwo(32000); - assertEquals(32768, expectedFileLength); - - final Logger log = LogManager.getLogger(); - try { - log.warn("Test log1"); - assertTrue(f.exists()); - assertEquals("initial length", expectedFileLength, f.length()); - - log.warn("Test log2"); - assertEquals("not grown", expectedFileLength, f.length()); - } finally { - CoreLoggerContexts.stopLoggerContext(false); - } - final int LINESEP = System.lineSeparator().length(); - assertEquals("Shrunk to actual used size", 474 + 2 * LINESEP, f.length()); - - String line1, line2, line3; - try (final BufferedReader reader = new BufferedReader(new FileReader(LOGFILE))) { - line1 = reader.readLine(); - line2 = reader.readLine(); - line3 = reader.readLine(); - } - assertNotNull(line1); - assertThat(line1, containsString("Test log1")); - final String location1 = "org.apache.logging.log4j.core.appender.MemoryMappedFileAppenderLocationTest.testMemMapLocation(MemoryMappedFileAppenderLocationTest.java:65)"; - assertThat(line1, containsString(location1)); - - assertNotNull(line2); - assertThat(line2, containsString("Test log2")); - final String location2 = "org.apache.logging.log4j.core.appender.MemoryMappedFileAppenderLocationTest.testMemMapLocation(MemoryMappedFileAppenderLocationTest.java:69)"; - assertThat(line2, containsString(location2)); - - assertNull("only two lines were logged", line3); - } -} diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderRemapTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderRemapTest.java deleted file mode 100644 index c4d647b..0000000 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderRemapTest.java +++ /dev/null @@ -1,95 +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.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.util.Arrays; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.core.CoreLoggerContexts; -import org.apache.logging.log4j.core.config.ConfigurationFactory; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.*; - -import static org.junit.Assert.*; - -/** - * Tests that logged strings appear in the file, that the initial file size is the specified specified region length, - * that the file is extended by region length when necessary, and that the file is shrunk to its actual usage when done. - * - * @since 2.1 - */ -public class MemoryMappedFileAppenderRemapTest { - - final String LOGFILE = "target/MemoryMappedFileAppenderRemapTest.log"; - - @Before - public void before() { - System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY, "MemoryMappedFileAppenderRemapTest.xml"); - } - - @Test - public void testMemMapExtendsIfNeeded() throws Exception { - final File f = new File(LOGFILE); - if (f.exists()) { - assertTrue(f.delete()); - } - assertTrue(!f.exists()); - - final Logger log = LogManager.getLogger(); - final char[] text = new char[200]; - Arrays.fill(text, 'A'); - try { - log.warn("Test log1"); - assertTrue(f.exists()); - assertEquals("initial length", 256, f.length()); - - log.warn(new String(text)); - assertEquals("grown", 256 * 2, f.length()); - - log.warn(new String(text)); - assertEquals("grown again", 256 * 3, f.length()); - } finally { - CoreLoggerContexts.stopLoggerContext(false); - } - final int LINESEP = System.lineSeparator().length(); - assertEquals("Shrunk to actual used size", 658 + 3 * LINESEP, f.length()); - - String line1, line2, line3, line4; - try (final BufferedReader reader = new BufferedReader(new FileReader(LOGFILE))) { - line1 = reader.readLine(); - line2 = reader.readLine(); - line3 = reader.readLine(); - line4 = reader.readLine(); - } - assertNotNull(line1); - assertThat(line1, containsString("Test log1")); - - assertNotNull(line2); - assertThat(line2, containsString(new String(text))); - - assertNotNull(line3); - assertThat(line3, containsString(new String(text))); - - assertNull("only three lines were logged", line4); - } -} diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderSimpleTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderSimpleTest.java deleted file mode 100644 index ebab4cd..0000000 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderSimpleTest.java +++ /dev/null @@ -1,86 +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.io.BufferedReader; -import java.io.File; -import java.io.FileReader; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.core.CoreLoggerContexts; -import org.apache.logging.log4j.core.config.ConfigurationFactory; -import org.junit.Before; -import org.junit.Test; - -import static org.hamcrest.CoreMatchers.*; - -import static org.junit.Assert.*; - -/** - * Tests that logged strings appear in the file, - * that the default file size is used if not specified - * and that the file is shrunk to its actual usage when done. - * - * @since 2.1 - */ -public class MemoryMappedFileAppenderSimpleTest { - - final String LOGFILE = "target/MemoryMappedFileAppenderTest.log"; - - @Before - public void before() { - System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY, "MemoryMappedFileAppenderTest.xml"); - } - - @Test - public void testMemMapBasics() throws Exception { - final File f = new File(LOGFILE); - if (f.exists()) { - assertTrue(f.delete()); - } - assertTrue(!f.exists()); - - final Logger log = LogManager.getLogger(); - try { - log.warn("Test log1"); - assertTrue(f.exists()); - assertEquals("initial length", MemoryMappedFileManager.DEFAULT_REGION_LENGTH, f.length()); - - log.warn("Test log2"); - assertEquals("not grown", MemoryMappedFileManager.DEFAULT_REGION_LENGTH, f.length()); - } finally { - CoreLoggerContexts.stopLoggerContext(false); - } - final int LINESEP = System.lineSeparator().length(); - assertEquals("Shrunk to actual used size", 186 + 2 * LINESEP, f.length()); - - String line1, line2, line3; - try (final BufferedReader reader = new BufferedReader(new FileReader(LOGFILE))) { - line1 = reader.readLine(); - line2 = reader.readLine(); - line3 = reader.readLine(); - } - assertNotNull(line1); - assertThat(line1, containsString("Test log1")); - - assertNotNull(line2); - assertThat(line2, containsString("Test log2")); - - assertNull("only two lines were logged", line3); - } -} diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderTest.java new file mode 100644 index 0000000..9dcf88e --- /dev/null +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppenderTest.java @@ -0,0 +1,120 @@ +/* + * 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.Logger; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.util.Integers; +import org.apache.logging.log4j.junit.CleanUpFiles; +import org.apache.logging.log4j.junit.LoggerContextSource; +import org.junit.jupiter.api.Test; + +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; +import java.util.List; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * Tests that logged strings appear in the file, that the initial file size is the specified specified region length, + * that the file is extended by region length when necessary, and that the file is shrunk to its actual usage when done. + * + * @since 2.1 + */ +@CleanUpFiles({ + "target/MemoryMappedFileAppenderTest.log", + "target/MemoryMappedFileAppenderRemapTest.log", + "target/MemoryMappedFileAppenderLocationTest.log" +}) +public class MemoryMappedFileAppenderTest { + + @Test + @LoggerContextSource("MemoryMappedFileAppenderTest.xml") + public void testMemMapBasics(final LoggerContext context) throws Exception { + final Logger log = context.getLogger(getClass()); + final Path logFile = Paths.get("target", "MemoryMappedFileAppenderTest.log"); + try { + log.warn("Test log1"); + assertTrue(Files.exists(logFile)); + assertEquals(MemoryMappedFileManager.DEFAULT_REGION_LENGTH, Files.size(logFile)); + log.warn("Test log2"); + assertEquals(MemoryMappedFileManager.DEFAULT_REGION_LENGTH, Files.size(logFile)); + } finally { + context.stop(); + } + final int LINESEP = System.lineSeparator().length(); + assertEquals(18 + 2 * LINESEP, Files.size(logFile)); + + final List<String> lines = Files.readAllLines(logFile); + assertThat(lines, both(hasSize(2)).and(contains("Test log1", "Test log2"))); + } + + @Test + @LoggerContextSource("MemoryMappedFileAppenderRemapTest.xml") + public void testMemMapExtendsIfNeeded(final LoggerContext context) throws Exception { + final Logger log = context.getLogger(getClass()); + final Path logFile = Paths.get("target", "MemoryMappedFileAppenderRemapTest.log"); + final char[] text = new char[256]; + Arrays.fill(text, 'A'); + final String str = new String(text); + try { + log.warn("Test log1"); + assertTrue(Files.exists(logFile)); + assertEquals(256, Files.size(logFile)); + log.warn(str); + assertEquals(2 * 256, Files.size(logFile)); + log.warn(str); + assertEquals(3 * 256, Files.size(logFile)); + } finally { + context.stop(); + } + assertEquals(521 + 3 * System.lineSeparator().length(), Files.size(logFile), "Expected file size to shrink"); + + final List<String> lines = Files.readAllLines(logFile); + assertThat(lines, both(hasSize(3)).and(contains("Test log1", str, str))); + } + + @Test + @LoggerContextSource("MemoryMappedFileAppenderLocationTest.xml") + void testMemMapLocation(final LoggerContext context) throws Exception { + final Logger log = context.getLogger(getClass()); + final Path logFile = Paths.get("target", "MemoryMappedFileAppenderLocationTest.log"); + final int expectedFileLength = Integers.ceilingNextPowerOfTwo(32000); + assertEquals(32768, expectedFileLength); + try { + log.warn("Test log1"); + assertTrue(Files.exists(logFile)); + assertEquals(expectedFileLength, Files.size(logFile)); + log.warn("Test log2"); + assertEquals(expectedFileLength, Files.size(logFile)); + } finally { + context.stop(); + } + assertEquals(272 + 2 * System.lineSeparator().length(), Files.size(logFile), "Expected file size to shrink"); + + final List<String> lines = Files.readAllLines(logFile); + assertThat(lines, both(hasSize(2)).and(contains( + "org.apache.logging.log4j.core.appender.MemoryMappedFileAppenderTest.testMemMapLocation(MemoryMappedFileAppenderTest.java:104): Test log1", + "org.apache.logging.log4j.core.appender.MemoryMappedFileAppenderTest.testMemMapLocation(MemoryMappedFileAppenderTest.java:107): Test log2" + ))); + } +} diff --git a/log4j-core/src/test/resources/MemoryMappedFileAppenderLocationTest.xml b/log4j-core/src/test/resources/MemoryMappedFileAppenderLocationTest.xml index 14b6b25..b192995 100644 --- a/log4j-core/src/test/resources/MemoryMappedFileAppenderLocationTest.xml +++ b/log4j-core/src/test/resources/MemoryMappedFileAppenderLocationTest.xml @@ -5,7 +5,7 @@ fileName="target/MemoryMappedFileAppenderLocationTest.log" regionLength="32000" immediateFlush="true" append="false"> <PatternLayout> - <Pattern>%d %p %c{1.} [%t] %X{aKey} %m %location %ex%n</Pattern> + <Pattern>%location: %m%n</Pattern> </PatternLayout> </MemoryMappedFile> </Appenders> @@ -15,4 +15,4 @@ <AppenderRef ref="MemoryMappedFile"/> </Root> </Loggers> -</Configuration> \ No newline at end of file +</Configuration> diff --git a/log4j-core/src/test/resources/MemoryMappedFileAppenderRemapTest.xml b/log4j-core/src/test/resources/MemoryMappedFileAppenderRemapTest.xml index 02799a5..d46b902 100644 --- a/log4j-core/src/test/resources/MemoryMappedFileAppenderRemapTest.xml +++ b/log4j-core/src/test/resources/MemoryMappedFileAppenderRemapTest.xml @@ -5,7 +5,7 @@ fileName="target/MemoryMappedFileAppenderRemapTest.log" regionLength="256" immediateFlush="true" append="false"> <PatternLayout> - <Pattern>%d %p %c{1.} [%t] %X{aKey} %m%ex%n</Pattern> + <Pattern>%m%n</Pattern> </PatternLayout> </MemoryMappedFile> </Appenders> @@ -15,4 +15,4 @@ <AppenderRef ref="MemoryMappedFile"/> </Root> </Loggers> -</Configuration> \ No newline at end of file +</Configuration> diff --git a/log4j-core/src/test/resources/MemoryMappedFileAppenderTest.xml b/log4j-core/src/test/resources/MemoryMappedFileAppenderTest.xml index 430c8b1..209459d 100644 --- a/log4j-core/src/test/resources/MemoryMappedFileAppenderTest.xml +++ b/log4j-core/src/test/resources/MemoryMappedFileAppenderTest.xml @@ -5,7 +5,7 @@ fileName="target/MemoryMappedFileAppenderTest.log" immediateFlush="false" append="false"> <PatternLayout> - <Pattern>%d %p %c{1.} [%t] %X{aKey} %m%ex%n</Pattern> + <Pattern>%m%n</Pattern> </PatternLayout> </MemoryMappedFile> </Appenders> @@ -15,4 +15,4 @@ <AppenderRef ref="MemoryMappedFile"/> </Root> </Loggers> -</Configuration> \ No newline at end of file +</Configuration>