From 1f279ffde8e838a9cc34e2ebaa71200f0e0bb386 Mon Sep 17 00:00:00 2001 From: Renato Alves Date: Tue, 15 Jul 2014 03:22:28 +0100 Subject: [PATCH] Unittest - Try to avoid racing conditions failures when capturing stdout/stderr * The new unblocking strategy for subprocesses involves timeouts and waiting periods. If the timeout is too short (or absent) tests may show intermittent failure. * Increasing the timeout may make tests a bit slower but more reliable. --- test/basetest/utils.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/test/basetest/utils.py b/test/basetest/utils.py index 15ae52d08..ecd1c2257 100644 --- a/test/basetest/utils.py +++ b/test/basetest/utils.py @@ -62,12 +62,16 @@ def _get_output(proc, input): proc.send_signal(signal.SIGABRT) exit = wait_process(proc) + # NOTE Increase this value if tests fail with None being received as + # stdout/stderr instead of the expected content + timeout = 0.1 # seconds + try: - out = outq.get_nowait() + out = outq.get(timeout=timeout) except Empty: out = None try: - err = errq.get_nowait() + err = errq.get(timeout=timeout) except Empty: err = None