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)