You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ti...@apache.org on 2020/01/04 05:17:16 UTC

[maven-surefire] 02/02: [SUREFIRE-1725] Surefire in JUnit Vintage mode distributes tests very unevenly between forks, causing poor parallelism

This is an automated email from the ASF dual-hosted git repository.

tibordigana pushed a commit to branch SUREFIRE-1725
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git

commit cbf6ce065cb2ff581ca1cae28f3c5ad1da73888f
Author: tibordigana <ti...@apache.org>
AuthorDate: Sat Jan 4 06:17:07 2020 +0100

    [SUREFIRE-1725] Surefire in JUnit Vintage mode distributes tests very unevenly between forks, causing poor parallelism
---
 .../junitplatform/JUnitPlatformProvider.java         | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProvider.java b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProvider.java
index 373a4ca..0e810d3 100644
--- a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProvider.java
+++ b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProvider.java
@@ -149,9 +149,8 @@ public class JUnitPlatformProvider
 
     private void invokeAllTests( TestsToRun testsToRun, RunListener runListener )
     {
-        LauncherDiscoveryRequest discoveryRequest = buildLauncherDiscoveryRequest( testsToRun );
         RunListenerAdapter adapter = new RunListenerAdapter( runListener );
-        launcher.execute( discoveryRequest, adapter );
+        execute( testsToRun, adapter );
         // Rerun failing tests if requested
         int count = parameters.getTestRequest().getRerunFailingTestsCount();
         if ( count > 0 && adapter.hasFailingTests() )
@@ -159,7 +158,7 @@ public class JUnitPlatformProvider
             for ( int i = 0; i < count; i++ )
             {
                 // Replace the "discoveryRequest" so that it only specifies the failing tests
-                discoveryRequest = buildLauncherDiscoveryRequestForRerunFailures( adapter );
+                LauncherDiscoveryRequest discoveryRequest = buildLauncherDiscoveryRequestForRerunFailures( adapter );
                 // Reset adapter's recorded failures and invoke the failed tests again
                 adapter.reset();
                 launcher.execute( discoveryRequest, adapter );
@@ -172,15 +171,24 @@ public class JUnitPlatformProvider
         }
     }
 
-    private LauncherDiscoveryRequest buildLauncherDiscoveryRequest( TestsToRun testsToRun )
+    private void execute( TestsToRun testsToRun, RunListenerAdapter adapter )
     {
         LauncherDiscoveryRequestBuilder builder =
-                        request().filters( filters ).configurationParameters( configurationParameters );
+            request().filters( filters ).configurationParameters( configurationParameters );
+
         for ( Class<?> testClass : testsToRun )
         {
             builder.selectors( selectClass( testClass.getName() ) );
+            if ( !testsToRun.allowEagerReading() )
+            {
+                launcher.execute( builder.build(), adapter );
+            }
+        }
+
+        if ( testsToRun.allowEagerReading() )
+        {
+            launcher.execute( builder.build(), adapter );
         }
-        return builder.build();
     }
 
     private LauncherDiscoveryRequest buildLauncherDiscoveryRequestForRerunFailures( RunListenerAdapter adapter )