Runner: Re-use lock to share access to stdout

When executing multiple tests in parallel, each "child" thread would
write to the process's standard output buffer immediately upon test
completion. Because thread execution order and instruction interleaving
is non-deterministic, this made it possible for characters to be emitted
out-of-order.

When extended to support multiple concurrent threads, the runner was
outfitted with a "log lock" dedicated to sharing access to the output
file (when applicable). Re-use this lock when writing to standard out,
ensuring proper ordering of test result messages.
This commit is contained in:
Mike Pennisi 2016-02-10 17:15:49 -05:00
parent 217812891c
commit b791cc4fbe
1 changed files with 2 additions and 1 deletions

View File

@ -606,10 +606,11 @@ class TestSuite(object):
if logname: if logname:
self.WriteLog(result) self.WriteLog(result)
finally: finally:
progress.HasRun(result)
if workers_count > 1: if workers_count > 1:
log_lock.release() log_lock.release()
progress.HasRun(result)
if workers_count == 1: if workers_count == 1:
exec_case() exec_case()
else: else: