You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Tibor Digana (Jira)" <ji...@apache.org> on 2020/03/08 03:56:00 UTC

[jira] [Closed] (SUREFIRE-1760) Unbalanced number of test executions in forks (forkCount>1) results in no performance gain for jupiter/JUnit5 tests

     [ https://issues.apache.org/jira/browse/SUREFIRE-1760?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Tibor Digana closed SUREFIRE-1760.
----------------------------------
      Assignee: Tibor Digana
    Resolution: Duplicate

> Unbalanced number of test executions in forks (forkCount>1) results in no performance gain for jupiter/JUnit5 tests
> -------------------------------------------------------------------------------------------------------------------
>
>                 Key: SUREFIRE-1760
>                 URL: https://issues.apache.org/jira/browse/SUREFIRE-1760
>             Project: Maven Surefire
>          Issue Type: Bug
>          Components: JUnit 5.x support
>    Affects Versions: 2.22.1, 2.22.2, 3.0.0-M4
>            Reporter: Vlad Skarzhevskyy
>            Assignee: Tibor Digana
>            Priority: Major
>
> Running JUnit5 tests using maven-surefire-plugin with  <reuseForks>true</reuseForks>  e.g. mvn -DforkCount=8
> Results: number of tests in each fork is significantly unbalanced, *+some forks do not get tests at all+*..  
> The end results is that on CI server the total test execution will take as long as longest fork and only 50% of the available resources are used. 
> In our case we observed that our 3000 integration tests after migration to junit5 take 30 minutes insteads of 18 minutes as it was with junit 4.
> The balance is restored when running with reuseForks=false  but this will cause additional overhead for complex integrations tests
>       e.g. tests requiring additional setup , classpath scanning and so on..  
> The results are similar with maven-surefire-plugin: 2.22.1, 2.22.2, 3.0.0-M4  
>  Maven 3.6.3 , openjdk version "1.8.0_242"  on Linux
>   
>  BTW If junit-vintage-engine is used the same results observed for JUnit3 and JUnit4 tests.
>   
>  Consider example of 100 tests  (10 classes 10 tests in each)
>  [https://github.com/skarzhevskyy/range-junit/tree/master/range-junit5-surefire-fork]
>   
>  When running mvn -DforkCount=8  with extension that prints the number of tests executed in each fork getting following:
> {quote}Tests completed  JVM Fork 8; total tests: 0; classes: 0
>  Tests completed  JVM Fork 4; total tests: 0; classes: 0
>  Tests completed  JVM Fork 1; total tests: 0; classes: 0
>  Tests completed  JVM Fork 6; total tests: 0; classes: 0
>  Tests completed  JVM Fork 3; total tests: 0; classes: 0
>  Tests completed  JVM Fork 2; total tests: 0; classes: 0
>  Tests completed  JVM Fork 7; total tests: 30; classes: 3
>  Tests completed  JVM Fork 5; total tests: 70; classes: 7
> {quote}
>  
>  mvn -DforkCount=4
> {quote}Tests completed  JVM Fork 2; total tests: 0; classes: 0
>  Tests completed  JVM Fork 3; total tests: 10; classes: 1
>  Tests completed  JVM Fork 4; total tests: 40; classes: 4
>  Tests completed  JVM Fork 1; total tests: 50; classes: 5
> {quote}
>  
>  The distribution is also random,  results may vary between maven runs:
>  mvn -DforkCount=4
> {quote}Tests completed  JVM Fork 4; total tests: 0; classes: 0
>  Tests completed  JVM Fork 2; total tests: 10; classes: 1
>  Tests completed  JVM Fork 1; total tests: 30; classes: 3
>  Tests completed  JVM Fork 3; total tests: 60; classes: 6
> {quote}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)