We use TeamCity internally (which is great btw) for Maven testing.

We have about 2000 tests which we continually integrate on every commit.

The problem is that testing takes about 15 minutes from start to end.

We use -T 16 on our tests and our boxes have 8 cores so this allows some
tests to block on IO while others execute.

However, I'm not happy with this.  I want our tests to finish in 2 minutes.

The only way this could happen is for us to hand parallelize everything (no
fun), or do it automatically, or buy REALLY expensive hardware (no fun).

I think one could do this with JUnit categories and maven profiles.

I think what one could do is hash the name of the test and then based on
the hash prefix, create N buckets.

Right now we have 4 CI boxes so we would run 4 profiles, one per box.  Then
TeamCity could integrate the results.

I think this is technically possible now but I think a lot of plugins would
need to cooperate here.

It would be better if maven didn't need to explicitly have to split these
out.

Maybe update surefire to have a way to only run 1/Nth of the tests and make
the set determinstic?

This way you can use two build boxes and each have two sets of tests with
no intersection.

Thoughts on this approach?  I think it would be pretty awesome.

I'm sure someone here knows the gang at TeamCity and could recommend this
to the proper decision makers.

-- 

We’re hiring if you know of any awesome Java Devops or Linux Operations
Engineers!

Founder/CEO Spinn3r.com
Location: *San Francisco, CA*
blog: http://burtonator.wordpress.com
… or check out my Google+ profile
<https://plus.google.com/102718274791889610666/posts>

Reply via email to