How does it fail? Ralph
> On Nov 11, 2021, at 1:42 AM, Volkan Yazıcı <[email protected]> wrote: > > They sort of do exist, see JsonTemplateLayoutConcurrentEncodeTest > <https://github.com/apache/logging-log4j2/blob/release-2.x/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutConcurrentEncodeTest.java#L58> > . > But I can add a dedicated test too. > Nevertheless, I still wonder what the problem is. > > On Wed, Nov 10, 2021 at 9:15 PM Gary Gregory <[email protected]> wrote: > >> Should this test be added to the repo with a TODO comment? >> >> Gary >> >> On Mon, Nov 8, 2021, 07:09 Volkan Yazıcı <[email protected]> wrote: >> >>> Hello! Does anybody have an idea why the following test fails for >>> CONCURRENT execution mode, whereas it works for SAME_THREAD? >>> >>> import org.apache.logging.log4j.Level; >>> import org.apache.logging.log4j.Logger; >>> import org.apache.logging.log4j.core.LoggerContext; >>> import org.apache.logging.log4j.core.config.Configuration; >>> import org.apache.logging.log4j.core.config.Configurator; >>> import >>> org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilder; >>> import >>> >> org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFactory; >>> import org.apache.logging.log4j.util.Strings; >>> import org.junit.jupiter.api.parallel.Execution; >>> import org.junit.jupiter.api.parallel.ExecutionMode; >>> import org.junit.jupiter.params.ParameterizedTest; >>> import org.junit.jupiter.params.provider.ValueSource; >>> >>> import java.io.File; >>> import java.nio.file.Paths; >>> >>> import static org.assertj.core.api.Assertions.assertThat; >>> >>> @Execution(ExecutionMode.SAME_THREAD) >>> class ParallelRunTest { >>> >>> @ParameterizedTest >>> @ValueSource(chars = {'A', 'B', 'C', 'D'}) >>> void test(final char letter) { >>> >>> // Create the configuration builder. >>> final ConfigurationBuilder<?> configBuilder = >>> ConfigurationBuilderFactory >>> .newConfigurationBuilder() >>> .setStatusLevel(Level.ERROR) >>> .setConfigurationName("Letter-" + letter); >>> >>> // Create the configuration. >>> final String appenderName = "File"; >>> final String appenderFilepath = Paths >>> .get( >>> System.getProperty("java.io.tmpdir"), >>> "ParallelRunTest-" + letter + ".log") >>> .toAbsolutePath() >>> .toString(); >>> final Configuration config = configBuilder >>> .add(configBuilder >>> .newAppender(appenderName, "File") >>> .addAttribute("fileName", appenderFilepath) >>> .addAttribute("append", false) >>> .addAttribute("immediateFlush", false) >>> .addAttribute("ignoreExceptions", false) >>> .add(configBuilder >>> .newLayout("PatternLayout") >>> .addAttribute("pattern", "%m\n"))) >>> .add(configBuilder >>> .newRootLogger(Level.ALL) >>> .add(configBuilder.newAppenderRef(appenderName))) >>> .build(false); >>> >>> // Initialize the configuration. >>> try (final LoggerContext loggerContext = >>> Configurator.initialize(config)) { >>> final Logger logger = >>> loggerContext.getLogger(ParallelRunTest.class); >>> >>> // Write logs. >>> final String message = Strings.repeat(String.valueOf(letter), >>> 999); >>> for (int i = 0; i < 1_000; i++) { >>> logger.info(message); >>> } >>> >>> } >>> >>> // Verify the file content. >>> final long appenderFileLength = new >>> File(appenderFilepath).length(); >>> assertThat(appenderFileLength).isEqualTo(1_000_000L); >>> >>> } >>> >>> } >>> >>
