Skip to content

Commit 6241eb3

Browse files
author
MarcoFalke
committed
Merge #14504: tests: show the progress of functional tests
96c509e show the progress of functional test (Isidoro Ghezzi) Pull request description: example: (added the progress index `n/m`) ``` 1/107 - wallet_hd.py passed, Duration: 27 s ......................................................................................... 2/107 - mining_getblocktemplate_longpoll.py passed, Duration: 72 s .................................................................. 3/107 - feature_maxuploadtarget.py passed, Duration: 78 s ``` Tree-SHA512: 17b840048222e2c3676a92041b491521fee3b86049b2f2467a225aece40717732341801872d9867fcb7260e904e322c7184b76fca16d2dc687aa75dd741484ad
2 parents a74ed3a + 96c509e commit 6241eb3

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

test/functional/test_runner.py

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -321,9 +321,10 @@ def main():
321321
args=passon_args,
322322
combined_logs_len=args.combinedlogslen,
323323
failfast=args.failfast,
324+
level=logging_level
324325
)
325326

326-
def run_tests(test_list, src_dir, build_dir, tmpdir, jobs=1, enable_coverage=False, args=None, combined_logs_len=0, failfast=False):
327+
def run_tests(test_list, src_dir, build_dir, tmpdir, jobs=1, enable_coverage=False, args=None, combined_logs_len=0, failfast=False, level=logging.DEBUG):
327328
args = args or []
328329

329330
# Warn if bitcoind is already running (unix only)
@@ -358,22 +359,22 @@ def run_tests(test_list, src_dir, build_dir, tmpdir, jobs=1, enable_coverage=Fal
358359
raise
359360

360361
#Run Tests
361-
job_queue = TestHandler(jobs, tests_dir, tmpdir, test_list, flags)
362+
job_queue = TestHandler(jobs, tests_dir, tmpdir, test_list, flags, level)
362363
start_time = time.time()
363364
test_results = []
364365

365366
max_len_name = len(max(test_list, key=len))
366-
367-
for _ in range(len(test_list)):
367+
test_count = len(test_list)
368+
for i in range(test_count):
368369
test_result, testdir, stdout, stderr = job_queue.get_next()
369370
test_results.append(test_result)
370-
371+
done_str = "{}/{} - {}{}{}".format(i + 1, test_count, BOLD[1], test_result.name, BOLD[0])
371372
if test_result.status == "Passed":
372-
logging.debug("\n%s%s%s passed, Duration: %s s" % (BOLD[1], test_result.name, BOLD[0], test_result.time))
373+
logging.debug("%s passed, Duration: %s s" % (done_str, test_result.time))
373374
elif test_result.status == "Skipped":
374-
logging.debug("\n%s%s%s skipped" % (BOLD[1], test_result.name, BOLD[0]))
375+
logging.debug("%s skipped" % (done_str))
375376
else:
376-
print("\n%s%s%s failed, Duration: %s s\n" % (BOLD[1], test_result.name, BOLD[0], test_result.time))
377+
print("%s failed, Duration: %s s\n" % (done_str, test_result.time))
377378
print(BOLD[1] + 'stdout:\n' + BOLD[0] + stdout + '\n')
378379
print(BOLD[1] + 'stderr:\n' + BOLD[0] + stderr + '\n')
379380
if combined_logs_len and os.path.isdir(testdir):
@@ -439,13 +440,14 @@ class TestHandler:
439440
Trigger the test scripts passed in via the list.
440441
"""
441442

442-
def __init__(self, num_tests_parallel, tests_dir, tmpdir, test_list=None, flags=None):
443+
def __init__(self, num_tests_parallel, tests_dir, tmpdir, test_list=None, flags=None, logging_level=logging.DEBUG):
443444
assert(num_tests_parallel >= 1)
444445
self.num_jobs = num_tests_parallel
445446
self.tests_dir = tests_dir
446447
self.tmpdir = tmpdir
447448
self.test_list = test_list
448449
self.flags = flags
450+
self.logging_level = logging_level
449451
self.num_running = 0
450452
self.jobs = []
451453

@@ -472,6 +474,7 @@ def get_next(self):
472474
log_stderr))
473475
if not self.jobs:
474476
raise IndexError('pop from empty list')
477+
dot_count = 0
475478
while True:
476479
# Return first proc that finishes
477480
time.sleep(.5)
@@ -492,9 +495,14 @@ def get_next(self):
492495
status = "Failed"
493496
self.num_running -= 1
494497
self.jobs.remove(job)
495-
498+
if self.logging_level == logging.DEBUG:
499+
clearline = '\r' + (' ' * dot_count) + '\r'
500+
print(clearline, end='', flush=True)
501+
dot_count = 0
496502
return TestResult(name, status, int(time.time() - start_time)), testdir, stdout, stderr
497-
print('.', end='', flush=True)
503+
if self.logging_level == logging.DEBUG:
504+
print('.', end='', flush=True)
505+
dot_count += 1
498506

499507
def kill_and_join(self):
500508
"""Send SIGKILL to all jobs and block until all have ended."""

0 commit comments

Comments
 (0)