On Sat, Jul 01, 2006 at 02:36:37PM -0500, Michael G Schwern wrote:

> Right now the use cases I have in mind include things such as
> parallelized test runs, fancy GUI and HTML outputs (for example,

> Provide use cases, what would you want to do with Test::Harness if you
> could?  What are you doing with Straps?  What features do other

Use case: Parallel test runs

I'd like to be able to specify parallel test runs. Specifically, I'd like
to be able to send tests as a set of groups, with instructions on how the
tests are to be parallelised. I already have a prototype, hacked from
Test::Harness.

1: Send tests as groups
2: Tests within a group run in series (in traditional order)
3: Groups run in parallel
4: have sync points. All groups before a sync point must complete before any
   groups after a sync point can start.


This let me run many of the core tests in parallel, but still allowed the
tests that need to run in order to run in order. This level of control let
me run the core tests as follows:

t/base/*.t
  one by one (each test is its own group, sync point between each group)
t/comp/*.t t/cmd/*.t t/run/*.t t/io/*.t t/op/*.t
  tests in each directory in sequence, but the 5 directories in parallel
  wait for all these to finish
t/uni/*.t, all tests in ext and lib
  tests in a the same directory ran in series. All directories could run in
  parallel

With this I can max out a multi CPU (or multi core) box.
(Or at least stand a fighting chance, although tests in t/op/*.t in the core
need some issues fixing before they can run in parallel with each other. I
suspect that their names for temporary files are unimaginative and therefore
clash)

I've got the code for a select driven event loop that can run all this, if
that's helpful.

Nicholas Clark

Reply via email to