mirror of
https://github.com/bitcoin/bitcoin.git
synced 2024-11-19 18:09:47 +01:00
Let test_runner.py start multiple jobs per timeslot
This commit is contained in:
parent
8c0bd871fc
commit
975097f424
@ -529,33 +529,35 @@ def run_tests(*, test_list, src_dir, build_dir, tmpdir, jobs=1, enable_coverage=
|
||||
|
||||
max_len_name = len(max(test_list, key=len))
|
||||
test_count = len(test_list)
|
||||
for i in range(test_count):
|
||||
test_result, testdir, stdout, stderr = job_queue.get_next()
|
||||
test_results.append(test_result)
|
||||
done_str = "{}/{} - {}{}{}".format(i + 1, test_count, BOLD[1], test_result.name, BOLD[0])
|
||||
if test_result.status == "Passed":
|
||||
logging.debug("%s passed, Duration: %s s" % (done_str, test_result.time))
|
||||
elif test_result.status == "Skipped":
|
||||
logging.debug("%s skipped" % (done_str))
|
||||
else:
|
||||
print("%s failed, Duration: %s s\n" % (done_str, test_result.time))
|
||||
print(BOLD[1] + 'stdout:\n' + BOLD[0] + stdout + '\n')
|
||||
print(BOLD[1] + 'stderr:\n' + BOLD[0] + stderr + '\n')
|
||||
if combined_logs_len and os.path.isdir(testdir):
|
||||
# Print the final `combinedlogslen` lines of the combined logs
|
||||
print('{}Combine the logs and print the last {} lines ...{}'.format(BOLD[1], combined_logs_len, BOLD[0]))
|
||||
print('\n============')
|
||||
print('{}Combined log for {}:{}'.format(BOLD[1], testdir, BOLD[0]))
|
||||
print('============\n')
|
||||
combined_logs_args = [sys.executable, os.path.join(tests_dir, 'combine_logs.py'), testdir]
|
||||
if BOLD[0]:
|
||||
combined_logs_args += ['--color']
|
||||
combined_logs, _ = subprocess.Popen(combined_logs_args, universal_newlines=True, stdout=subprocess.PIPE).communicate()
|
||||
print("\n".join(deque(combined_logs.splitlines(), combined_logs_len)))
|
||||
i = 0
|
||||
while i < test_count:
|
||||
for test_result, testdir, stdout, stderr in job_queue.get_next():
|
||||
test_results.append(test_result)
|
||||
i += 1
|
||||
done_str = "{}/{} - {}{}{}".format(i, test_count, BOLD[1], test_result.name, BOLD[0])
|
||||
if test_result.status == "Passed":
|
||||
logging.debug("%s passed, Duration: %s s" % (done_str, test_result.time))
|
||||
elif test_result.status == "Skipped":
|
||||
logging.debug("%s skipped" % (done_str))
|
||||
else:
|
||||
print("%s failed, Duration: %s s\n" % (done_str, test_result.time))
|
||||
print(BOLD[1] + 'stdout:\n' + BOLD[0] + stdout + '\n')
|
||||
print(BOLD[1] + 'stderr:\n' + BOLD[0] + stderr + '\n')
|
||||
if combined_logs_len and os.path.isdir(testdir):
|
||||
# Print the final `combinedlogslen` lines of the combined logs
|
||||
print('{}Combine the logs and print the last {} lines ...{}'.format(BOLD[1], combined_logs_len, BOLD[0]))
|
||||
print('\n============')
|
||||
print('{}Combined log for {}:{}'.format(BOLD[1], testdir, BOLD[0]))
|
||||
print('============\n')
|
||||
combined_logs_args = [sys.executable, os.path.join(tests_dir, 'combine_logs.py'), testdir]
|
||||
if BOLD[0]:
|
||||
combined_logs_args += ['--color']
|
||||
combined_logs, _ = subprocess.Popen(combined_logs_args, universal_newlines=True, stdout=subprocess.PIPE).communicate()
|
||||
print("\n".join(deque(combined_logs.splitlines(), combined_logs_len)))
|
||||
|
||||
if failfast:
|
||||
logging.debug("Early exiting after test failure")
|
||||
break
|
||||
if failfast:
|
||||
logging.debug("Early exiting after test failure")
|
||||
break
|
||||
|
||||
print_results(test_results, max_len_name, (int(time.time() - start_time)))
|
||||
|
||||
@ -649,8 +651,9 @@ class TestHandler:
|
||||
|
||||
dot_count = 0
|
||||
while True:
|
||||
# Return first proc that finishes
|
||||
# Return all procs that have finished, if any. Otherwise sleep until there is one.
|
||||
time.sleep(.5)
|
||||
ret = []
|
||||
for job in self.jobs:
|
||||
(name, start_time, proc, testdir, log_out, log_err) = job
|
||||
if proc.poll() is not None:
|
||||
@ -669,7 +672,9 @@ class TestHandler:
|
||||
clearline = '\r' + (' ' * dot_count) + '\r'
|
||||
print(clearline, end='', flush=True)
|
||||
dot_count = 0
|
||||
return TestResult(name, status, int(time.time() - start_time)), testdir, stdout, stderr
|
||||
ret.append((TestResult(name, status, int(time.time() - start_time)), testdir, stdout, stderr))
|
||||
if ret:
|
||||
return ret
|
||||
if self.use_term_control:
|
||||
print('.', end='', flush=True)
|
||||
dot_count += 1
|
||||
|
Loading…
Reference in New Issue
Block a user