From 5e2c54d02906a7b4787a1f41b59baf97c3a4a840 Mon Sep 17 00:00:00 2001 From: "juraj.linkes" Date: Thu, 30 Aug 2018 10:51:45 +0200 Subject: Fix hanging test runner when child process dies When fixing the test summary after a test run doesn't finish properly I introduced a bug where child process which died would leave the whole run hanging. This patch fixed the bug while still having the correct test summary. Change-Id: I206b1a7dab4032d24cbc50667b8dd0bdcebb67a6 Signed-off-by: juraj.linkes --- test/framework.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'test/framework.py') diff --git a/test/framework.py b/test/framework.py index 308842da6bc..f7a155f41cb 100644 --- a/test/framework.py +++ b/test/framework.py @@ -1015,6 +1015,12 @@ class VppTestResult(unittest.TestResult): if logger: logger.error(e) + def send_results_through_pipe(self): + if hasattr(self, 'test_framework_results_pipe'): + pipe = self.test_framework_results_pipe + if pipe: + pipe.send(self) + def addFailure(self, test, err): """ Record a test failed result @@ -1087,7 +1093,7 @@ class VppTestResult(unittest.TestResult): def stopTest(self, test): """ - Stop a test + Called when the given test has been run :param test: @@ -1101,6 +1107,7 @@ class VppTestResult(unittest.TestResult): else: self.stream.writeln("%-73s%s" % (self.getDescription(test), self.result_string)) + self.send_results_through_pipe() def printErrors(self): """ @@ -1137,7 +1144,8 @@ class VppTestRunner(unittest.TextTestRunner): return VppTestResult def __init__(self, keep_alive_pipe=None, descriptions=True, verbosity=1, - failfast=False, buffer=False, resultclass=None): + results_pipe=None, failfast=False, buffer=False, + resultclass=None): # ignore stream setting here, use hard-coded stdout to be in sync # with prints from VppTestCase methods ... super(VppTestRunner, self).__init__(sys.stdout, descriptions, @@ -1146,6 +1154,8 @@ class VppTestRunner(unittest.TextTestRunner): reporter = KeepAliveReporter() reporter.pipe = keep_alive_pipe + VppTestResult.test_framework_results_pipe = results_pipe + def run(self, test): """ Run the tests -- cgit 1.2.3-korg