Jed Brown emailed the following on 17/09/12 23:49:
> On Mon, Sep 17, 2012 at 5:28 PM, Gerard Gorman
> <g.gorman at imperial.ac.uk <mailto:g.gorman at imperial.ac.uk>> wrote:
>
>     So if I understand you correctly I should start a python session
>     (handy
>     since buildbot is all python), import in your test harness and then
>     start calling tests. If this is the case (kick it back if I've
>     misunderstood) then iterating through a list of tests would seem to be
>     the way to go. This would give maximum flexibility to filter tests
>     into
>     categories (for example MPI tests might need to be handled differently
>     than serial tests).
>
>
> So I'm planning to provide a rich API for filtering/selection. I see
> that as a key motivation for doing this system in the first place. Of
> course you can run a query and get back a list of test objects, but
> you could also just say "run everything matching this query and report
> the result". In that case, you would get called back with each
> completed test.
>  
>
>     This also would give plenty of flexibility to do
>     whatever with the output - eg might write out all
>     -log_summary/stdout/stderr to buildbot log in case of error and drop
>     otherwise.
>
>
> The callback will be provided with all that information.
>  
>
>     Have you a plan for how to handle machine specific ways to run
>     mpiexec/queueing etc? Are you going to recycle methods from the
>     BuildSystem or will there be a mechanism to supply my own mpiexec or
>     batch queueing harness?
>
>
> There will be a runner interface. You'll be able to write a plugin to
> run tests using some custom submission system. It will report back
> return code, stderr, and stdout.
>

Sounds great.

> In terms of Python library dependencies, I would really like to use
> gevent. It's portable and provides a very good parallel abstraction.
> It does use a (tiny) C extension module. Is that dependency going to
> be a deal-breaker?

Distributed with Ubuntu/debian so cannot see any problem with this.


> Since the testing dependency graph can (and generally will) be
> constructed without needing to do anything asynchronously, the gevent
> issues above are not nearly as acute. We could use a basic thread pool
> and have each thread take items out of the queue. The GIL is released
> when they do IO so this is fine. For configure, the dependency graph
> is potentially dynamic, in which case a system that can manage many
> suspended contexts would be ideal. I've done simple implementations
> with several systems and the gevent code is both cleanest and fastest
> so that's what I've started with.

Sounds good. Let me know when there is a branch I can try hooking up.

Cheers
Gerard

Reply via email to