Stephen Connolly created SUREFIRE-1477:
------------------------------------------

             Summary: CI support for parallel test execution
                 Key: SUREFIRE-1477
                 URL: https://issues.apache.org/jira/browse/SUREFIRE-1477
             Project: Maven Surefire
          Issue Type: New Feature
            Reporter: Stephen Connolly


CI build servers often want to use multiple compute resources to reduce build 
times in exchange for additional CPU costs.

One of the biggest consumers of build time is test execution, so much so that 
people are often willing to run multiple builds in parallel on different 
machines in order to get the total testing wall clock time lower.

For example: 
[https://wiki.jenkins.io/display/JENKINS/Parallel+Test+Executor+Plugin]

It would be nice if surefire made all this easier and more CI system agnostic.

We already have some of this available: 
[https://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#runOrder]
 has the option {{balanced}} that will use a statistics file 
{{.surefire-XXXXXXXXX}} to distribute tests between different parallel worker 
threads.

What is needed to make this better is the ability to use the {{balanced}} run 
ordering across Maven JVMs.

If we had two system properties:
 * {{surefire.mvnCount}}
 * {{surefire.mvnOffset}}

Then surefire could use the {{balanced}} run order to deterministically decide 
the ordered list of tests... it would then start at {{mvnOffset}} and run every 
{{mvnCount}}th test.

CI users could then run three maven builds in parallel:
 * {{mvn -Dsurefire.mvnCount=3 -Dsurefire.mvnOffset=0 test}}
 * {{mvn -Dsurefire.mvnCount=3 -Dsurefire.mvnOffset=1 test}}
 * {{mvn -Dsurefire.mvnCount=3 -Dsurefire.mvnOffset=2 test}}

This would ensure that all the tests are run once, but the wall clock time 
should be best case approx 1/3th of the wall clock for the full build time

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to