]> code.ossystems Code Review - openembedded-core.git/commit
oeqa/context: Only set buffer mode for non-concurrent tests
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 21 Aug 2018 21:45:31 +0000 (21:45 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 23 Aug 2018 06:32:53 +0000 (07:32 +0100)
commite2c66aa0f74d19fbc7e56af1fb440ad6473d3a8e
tree5a8b89887cc779b6fe666ff5413ac334c23e6471
parent1e3f44737a15feb3128ba7fc0dbe896dd8782e07
oeqa/context: Only set buffer mode for non-concurrent tests

Periodically we'd see:

NOTE: core-image-sato-1.0-r0 do_testsdk: ======================================================================
NOTE: core-image-sato-1.0-r0 do_testsdk: ERROR: broken-runner
NOTE: core-image-sato-1.0-r0 do_testsdk: ----------------------------------------------------------------------
NOTE: core-image-sato-1.0-r0 do_testsdk: testtools.testresult.real._StringException: Traceback (most recent call last):
  File "/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-mips/build/meta/lib/oeqa/core/utils/concurrencytest.py", line 122, in _run_test
    test.run(process_result)
  File "/usr/lib/python3.6/site-packages/subunit/__init__.py", line 1194, in run
    protocol = TestProtocolServer(result, self._passthrough, self._forward)
  File "/usr/lib/python3.6/site-packages/subunit/__init__.py", line 514, in __init__
    stream = stream.buffer
AttributeError: '_io.StringIO' object has no attribute 'buffer'

which seems to occur if a result arrives before all the runner threads
have started. The runner's result handling changes sys.stdout to a buffer
temporarily which can be seen in other threads and it can sometimes fail.

Since the tests are running in a separate process we don't need this buffer
handling in the concurrent case so only set when not parallelising. The
concurrent class handle setting buffer mode internally.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/lib/oeqa/core/context.py