[
https://issues.apache.org/jira/browse/LOG4J2-2921?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17549933#comment-17549933
]
ASF subversion and git services commented on LOG4J2-2921:
---------------------------------------------------------
Commit adb9721b02eb6cde216bc82043a0ffb19c70ae4c in logging-log4j2's branch
refs/heads/master from Matt Sicker
[ https://gitbox.apache.org/repos/asf?p=logging-log4j2.git;h=adb9721b02 ]
Add parallel test profile to plugin tests
Relates to LOG4J2-2921
Signed-off-by: Matt Sicker <[email protected]>
> Enable parallel test execution for compatible tests
> ---------------------------------------------------
>
> Key: LOG4J2-2921
> URL: https://issues.apache.org/jira/browse/LOG4J2-2921
> Project: Log4j 2
> Issue Type: Improvement
> Components: Build, Tests
> Reporter: Matt Sicker
> Assignee: Matt Sicker
> Priority: Major
>
> One area to improve the execution time of our builds is to [enable parallel
> test
> execution|https://junit.org/junit5/docs/current/user-guide/#writing-tests-parallel-execution]
> for all tests that can support that. Parallel tests are run in multiple
> threads on the same JVM rather than in forked JVMs (our current
> configuration). Thus, any tests that don't rely on JVM-global state (e.g.,
> does not use environment variables, system properties, changing the default
> locale, shares an output file, etc.) should be able to support parallel test
> execution. Considering the amount of overhead introduced by JVM forks for
> every test, I'd hypothesize that this change could shave off at least 5-10
> minutes from the total build time.
> JUnit 5 provides the ResourceLock annotation which can be used to create
> generic locks (similar to ReadWriteLock in Java) for various resources. It
> defines some default ones like for setting the locale, system properties,
> system out, system error, and the timezone. Any other shared resources
> outside those contexts could likely use custom string values for the
> annotation.
> h3. Custom Resources
> * {{log4j2.MarkerManager}} (since MarkerManager uses a static map, tests
> that create non-trivial markers may interfere with each other)
> * {{log4j2.StatusLogger}} (covers both changing the logger level as well as
> relying on StatusData entries in the logger)
> * {{log4j2.TestLogger}} (this test class maintains static state)
> * {{log4j2.LoggerContextFactory}} (for tests that change
> LogManager.setFactory() or depend on the currently configured
> LoggerContextFactory via LogManager methods)
> * {{log4j2.Level}} (defining custom levels)
> * {{java.lang.SecurityManager}} (for tests setting a SecurityManager)
> h3. JUnit and Surefire Options
> * {{junit.jupiter.execution.parallel.enabled = true}}
> * {{junit.jupiter.execution.parallel.mode.default = concurrent}}
> * {{<reuseForks>true</reuseForks>}}
> * {{<forkCount>}} is currently 1, though this might be useful to change to 1C
--
This message was sent by Atlassian Jira
(v8.20.7#820007)