On Saturday, February 15, 2014 03:27:44 AM Ilia Mirkin wrote: > Signed-off-by: Ilia Mirkin <[email protected]> > --- > framework/core.py | 20 ++++++++++++++------ > 1 file changed, 14 insertions(+), 6 deletions(-) > > diff --git a/framework/core.py b/framework/core.py > index 4bcaa82..7b2083b 100644 > --- a/framework/core.py > +++ b/framework/core.py > @@ -31,6 +31,7 @@ import sys > import time > import traceback > from cStringIO import StringIO > +import itertools > import multiprocessing > import multiprocessing.dummy > import importlib > @@ -578,22 +579,29 @@ class TestProfile(object): > chunksize = 1 > > if env.concurrent == "all": > - multi.imap(test, self.test_list.iteritems(), chunksize) > + testiter = multi.imap(test, self.test_list.iteritems(), > chunksize) elif env.concurrent == "none": > - single.imap(test, self.test_list.iteritems(), chunksize) > + testiter = single.imap(test, self.test_list.iteritems(), > chunksize) else: > # Filter and return only thread safe tests to the threaded pool > - multi.imap(test, (x for x in self.test_list.iteritems() if - > x[1].runConcurrent), chunksize) > + iter1 = multi.imap(test, (x for x in self.test_list.iteritems() > + if x[1].runConcurrent), chunksize) # > Filter and return the non thread safe tests to the single pool - > single.imap(test, (x for x in self.test_list.iteritems() if not - > x[1].runConcurrent), chunksize) > + iter2 = single.imap(test, (x for x in > self.test_list.iteritems() + if not > x[1].runConcurrent), chunksize) + testiter = > itertools.chain(iter1, iter2) > > # Close and join the pools > # If we don't close and the join the pools the script will exit > before # the pools finish running > multi.close() > single.close() > + > + # This waits for all the results to arrive in a non-blocking > + # fashion. This in turn allows ^C to work to stop a piglit run. > + for test in testiter: > + pass > + > multi.join() > single.join()
The code is valid and works as advertised. I actually like what's happening now since ctrl-c kills the currently running test, and can be used to kill stuck tests, but if other like the previous behavior better, it isn't a big deal to me either way. Reviewed-by: Dylan Baker <[email protected]>
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
