Commit 816b5b17 authored by machenbach's avatar machenbach Committed by Commit bot

[test] Use generator to accelerate test runner startup.

This saves >1s for mjsunit and >10s for test262.

Review URL: https://codereview.chromium.org/1174923002

Cr-Commit-Position: refs/heads/master@{#28904}
parent f8fe5c6b
...@@ -219,23 +219,20 @@ class Runner(object): ...@@ -219,23 +219,20 @@ class Runner(object):
def _RunInternal(self, jobs): def _RunInternal(self, jobs):
pool = Pool(jobs) pool = Pool(jobs)
test_map = {} test_map = {}
# TODO(machenbach): Instead of filling the queue completely before queued_exception = [None]
# pool.imap_unordered, make this a generator that already starts testing def gen_tests():
# while the queue is filled.
queue = []
queued_exception = None
for test in self.tests: for test in self.tests:
assert test.id >= 0 assert test.id >= 0
test_map[test.id] = test test_map[test.id] = test
try: try:
queue.append([self._GetJob(test)]) yield [self._GetJob(test)]
except Exception, e: except Exception, e:
# If this failed, save the exception and re-raise it later (after # If this failed, save the exception and re-raise it later (after
# all other tests have had a chance to run). # all other tests have had a chance to run).
queued_exception = e queued_exception[0] = e
continue continue
try: try:
it = pool.imap_unordered(RunTest, queue) it = pool.imap_unordered(RunTest, gen_tests())
for result in it: for result in it:
if result.heartbeat: if result.heartbeat:
self.indicator.Heartbeat() self.indicator.Heartbeat()
...@@ -257,8 +254,8 @@ class Runner(object): ...@@ -257,8 +254,8 @@ class Runner(object):
# some files might still be open. # some files might still be open.
print "Deleting perf test data due to db corruption." print "Deleting perf test data due to db corruption."
shutil.rmtree(self.datapath) shutil.rmtree(self.datapath)
if queued_exception: if queued_exception[0]:
raise queued_exception raise queued_exception[0]
# Make sure that any allocations were printed in predictable mode (if we # Make sure that any allocations were printed in predictable mode (if we
# ran any tests). # ran any tests).
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment