I've been quietly working on an ANT task that would run tests in isolated JVMs, similar to what Lucene build files do using macros and selectors. It's been fun and I was finally able to integrate a few other features I've always wanted (like detailed progress listeners), but it's another story.
If you have a multi-multi-core machine (or if you don't and want to provide some feedback) then please run the following script/ commands: # get the code from my github fork: git clone [email protected]:dweiss/lucene-solr.git --depth 1 -b junit4 cd lucene-solr/lucene # Get a baseline for core tests running on trunk/ant macros. git checkout trunk ant test-core -Dtestcase=compileonly # This is a single run and it depends on the seed, but we'll consider it a baseline -> write down the execution time or remember it. ant test-core -Dtests.seed=random # Switch over to junit4 branch and recompile. git checkout junit4 ant test-core -Dtestcase=compileonly # An initial pass collects statistics; these can be stored with the project to bootstrap, # but for now they're zero. Adjust the number of CPUs to your system: # typically, you'll want the physical number of cores - 1 (reserved for the aggregator). # tests.seed is set to an empty value because junit4 and ltc use a different format! So there # will be some variability across test executions (and that's good because estimates will vary). ant test-core -Dtests.seed= -Dtests.cpus=4 ant test-core -Dtests.seed= -Dtests.cpus=4 ant test-core -Dtests.seed= -Dtests.cpus=4 # with each run the estimates (shown up front) should be getting closer to the real execution # time for each slave. They will not be exact because of randomness, but should be fairly close. For example # I get: # [junit4] Expected execution time on slave 0: 233.94s # [junit4] Expected execution time on slave 3: 233.94s # [junit4] Expected execution time on slave 1: 233.95s # [junit4] Expected execution time on slave 2: 233.95s # # and the real times: # I would very much appreciate feedback on (including but not limited to): 1) If something is not working. The tests hung on my machine once, the slave JVM wasn't responsive, it didn't even dump a stack trace, didn't react to kill -QUIT, nothing. 2) Is test execution faster than the baseline? By how much? For multi-multi-cores, if you have time how does execution time correlate with tests.cpus (I assume memory bandwidth or disk will be the bottleneck at some point). 3) Did you enjoy the sweet hum of cpu fans? For zero-noise systems: you better crank up those pumps or put something cold on the cpu unit :) Thanks, Dawid --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
