mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-08 10:31:50 -05:00
test: kill process group to avoid dangling processes
This commit is contained in:
parent
de5512e28d
commit
451b96f7d2
1 changed files with 6 additions and 13 deletions
|
@ -19,6 +19,7 @@ import datetime
|
|||
import os
|
||||
import time
|
||||
import shutil
|
||||
import signal
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
|
@ -548,9 +549,11 @@ def run_tests(*, test_list, src_dir, build_dir, tmpdir, jobs=1, enable_coverage=
|
|||
|
||||
all_passed = all(map(lambda test_result: test_result.was_successful, test_results)) and coverage_passed
|
||||
|
||||
# This will be a no-op unless failfast is True in which case there may be dangling
|
||||
# processes which need to be killed.
|
||||
job_queue.kill_and_join()
|
||||
# Clean up dangling processes if any. This may only happen with --failfast option.
|
||||
# Killing the process group will also terminate the current process but that is
|
||||
# not an issue
|
||||
if len(job_queue.jobs):
|
||||
os.killpg(os.getpgid(0), signal.SIGKILL)
|
||||
|
||||
sys.exit(not all_passed)
|
||||
|
||||
|
@ -647,16 +650,6 @@ class TestHandler:
|
|||
print('.', end='', flush=True)
|
||||
dot_count += 1
|
||||
|
||||
def kill_and_join(self):
|
||||
"""Send SIGKILL to all jobs and block until all have ended."""
|
||||
procs = [i[2] for i in self.jobs]
|
||||
|
||||
for proc in procs:
|
||||
proc.kill()
|
||||
|
||||
for proc in procs:
|
||||
proc.wait()
|
||||
|
||||
|
||||
class TestResult():
|
||||
def __init__(self, name, status, time):
|
||||
|
|
Loading…
Add table
Reference in a new issue