lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dawid Weiss <>
Subject Parallel tests in ANT, experiment volunteers welcome :)
Date Fri, 30 Dec 2011 12:32:54 GMT
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 --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


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message