summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2019-09-17 08:08:19 (GMT)
committerGitHub <noreply@github.com>2019-09-17 08:08:19 (GMT)
commit46b0b81220a23bc4aee5ba3ba67e8cf1b5df7960 (patch)
treeeac2bf720d9e6f7d6fffd82f36ff0175a56c21ba /Lib
parent5d359cc62e0244e1fd8d17146a4135079d6843bf (diff)
downloadcpython-46b0b81220a23bc4aee5ba3ba67e8cf1b5df7960.zip
cpython-46b0b81220a23bc4aee5ba3ba67e8cf1b5df7960.tar.gz
cpython-46b0b81220a23bc4aee5ba3ba67e8cf1b5df7960.tar.bz2
bpo-37531: regrtest main process uses shorter timeout (GH-16220)
When using multiprocesss (-jN), the main process now uses a timeout of 60 seconds instead of the double of the --timeout value. The buildbot server stops a job which does not produce any output in 1200 seconds.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/test/libregrtest/runtest_mp.py12
1 files changed, 6 insertions, 6 deletions
diff --git a/Lib/test/libregrtest/runtest_mp.py b/Lib/test/libregrtest/runtest_mp.py
index c5ac6e0..9cb5be6 100644
--- a/Lib/test/libregrtest/runtest_mp.py
+++ b/Lib/test/libregrtest/runtest_mp.py
@@ -20,6 +20,7 @@ from test.libregrtest.utils import format_duration
# Display the running tests if nothing happened last N seconds
PROGRESS_UPDATE = 30.0 # seconds
+assert PROGRESS_UPDATE >= PROGRESS_MIN_TIME
# Time to wait until a worker completes: should be immediate
JOIN_TIMEOUT = 30.0 # seconds
@@ -305,10 +306,8 @@ class MultiprocessRunner:
self.pending = MultiprocessIterator(self.regrtest.tests)
if self.ns.timeout is not None:
self.worker_timeout = self.ns.timeout * 1.5
- self.main_timeout = self.ns.timeout * 2.0
else:
self.worker_timeout = None
- self.main_timeout = None
self.workers = None
def start_workers(self):
@@ -345,12 +344,13 @@ class MultiprocessRunner:
except queue.Empty:
return None
+ use_faulthandler = (self.ns.timeout is not None)
+ timeout = PROGRESS_UPDATE
while True:
- if self.main_timeout is not None:
- faulthandler.dump_traceback_later(self.main_timeout, exit=True)
+ if use_faulthandler:
+ faulthandler.dump_traceback_later(timeout * 2.0, exit=True)
# wait for a thread
- timeout = max(PROGRESS_UPDATE, PROGRESS_MIN_TIME)
try:
return self.output.get(timeout=timeout)
except queue.Empty:
@@ -415,7 +415,7 @@ class MultiprocessRunner:
print()
self.regrtest.interrupted = True
finally:
- if self.main_timeout is not None:
+ if self.ns.timeout is not None:
faulthandler.cancel_dump_traceback_later()
# a test failed (and --failfast is set) or all tests completed