3

I've spent quite a bit of time looking at our current build process in an attempt to bring the whole incremental build back into the 10 minute mark (currently 1 hour). The largest consumption of time on our build seems to be the large number of unit tests that, for one reason or another, take quite a bit of time to execute.

Recently, I've experimented with distributing the execution of the unit tests on a small number of blades. This increased the overall execution time of the junit tests into a very tolerable range but required a lot of manual scripting and administration on the CI box to keep the tests working. Ideally, I'd like to compile the source on a master node, use a distributed surefire like plugin to jointly run the unit tests and then use the master node to package the results. I don't see any significant gains to using a distributed compiler at this time.

Are other people distributing the unit test execution across a number of boxes? Are there any plugins (commercial or open source) that would make this process easier to manage? Any insight to how others are tackling (or not tackling) this problem would be much appreciated.

2 Answers 2

1

you may consider STAF

or

using testng together with hudson and hudson's slave feature to distribute jobs.

Sign up to request clarification or add additional context in comments.

Comments

0

It is possible to use the surefire plugin and overwrite the default JVM parameter. This way a custom script can be used instead which in turn will fork a new docker container that will run the JVM from within the container. The container must be able to access the host file system in order to access compiles classes and other resources. I created a small prove of concept project to illustrate the solution using SSHFS.

https://github.com/Jotschi/docker-junit-distribution-test

1 Comment

Note that link-only answers are discouraged, SO answers should be the end-point of a search for a solution (vs. yet another stopover of references, which tend to get stale over time). Please consider adding a stand-alone synopsis here, keeping the link as a reference.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.