diff options
author | Victor Stinner <vstinner@redhat.com> | 2019-09-17 08:08:19 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-17 08:08:19 (GMT) |
commit | 46b0b81220a23bc4aee5ba3ba67e8cf1b5df7960 (patch) | |
tree | eac2bf720d9e6f7d6fffd82f36ff0175a56c21ba /Lib | |
parent | 5d359cc62e0244e1fd8d17146a4135079d6843bf (diff) | |
download | cpython-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.py | 12 |
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 |