From 9c38b40ee8f096b84586a96a29bfb8d72a0ef1ae Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Fri, 29 May 2020 19:44:39 -0700 Subject: [PATCH] Fix handling key heyboard interrupt in parallel testsuite This avoids the seemingly infinite backtraces that get generated when interrupting the parallel testsuite. --- tests/parallel_testsuite.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/parallel_testsuite.py b/tests/parallel_testsuite.py index 1bf4c67a2bbdd..0cf2445c071d2 100644 --- a/tests/parallel_testsuite.py +++ b/tests/parallel_testsuite.py @@ -11,6 +11,7 @@ import unittest import tempfile import time +import signal from tools.tempfiles import try_delete @@ -22,6 +23,7 @@ def g_testing_thread(work_queue, result_queue, temp_dir): + signal.signal(signal.SIGINT, signal.SIG_IGN) for test in iter(lambda: get_from_queue(work_queue), None): result = BufferedParallelTestResult() test.set_temp_dir(temp_dir) @@ -48,8 +50,14 @@ def __init__(self, max_cores): def run(self, result): test_queue = self.create_test_queue() - self.init_processes(test_queue) - results = self.collect_results() + try: + self.init_processes(test_queue) + results = self.collect_results() + finally: + for p in self.processes: + p.terminate() + p.join() + self.processes.clear() return self.combine_results(result, results) def create_test_queue(self):