tests: Add optional -1 argument to parallel-vm.py

This can be used to skip rerunning of failed test cases
(e.g., with "./parallel-vm.py 1 -1 <test case>").

Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
Jouni Malinen 2015-01-17 11:25:46 +02:00
parent 242b83a380
commit 802bf82482

View file

@ -1,7 +1,7 @@
#!/usr/bin/env python2
#
# Parallel VM test case executor
# Copyright (c) 2014, Jouni Malinen <j@w1.fi>
# Copyright (c) 2014-2015, Jouni Malinen <j@w1.fi>
#
# This software may be distributed under the terms of the BSD license.
# See README for more details.
@ -24,6 +24,7 @@ def get_failed(vm):
def vm_read_stdout(vm, i):
global total_started, total_passed, total_failed, total_skipped
global rerun_failures
ready = False
try:
@ -147,6 +148,7 @@ def show_progress(scr):
raise Exception("Unexpected test cases remaining from first round")
completed_first_pass = True
for name in get_failed(vm):
if rerun_failures:
rerun_tests.append(name)
first_run_failures.append(name)
@ -225,6 +227,8 @@ def show_progress(scr):
scr.clrtoeol()
if rerun_tests:
scr.addstr("(RETRY FAILED %d)" % len(rerun_tests))
elif rerun_failures:
pass
elif first_run_failures:
scr.addstr("(RETRY FAILED)")
@ -243,6 +247,7 @@ def main():
global tests
global first_run_failures
global total_started, total_passed, total_failed, total_skipped
global rerun_failures
total_started = 0
total_passed = 0
@ -250,9 +255,10 @@ def main():
total_skipped = 0
debug_level = logging.INFO
rerun_failures = True
if len(sys.argv) < 2:
sys.exit("Usage: %s <number of VMs> [--debug] [--codecov] [params..]" % sys.argv[0])
sys.exit("Usage: %s <number of VMs> [-1] [--debug] [--codecov] [params..]" % sys.argv[0])
num_servers = int(sys.argv[1])
if num_servers < 1:
sys.exit("Too small number of VMs")
@ -261,6 +267,10 @@ def main():
idx = 2
if len(sys.argv) > idx and sys.argv[idx] == "-1":
idx += 1
rerun_failures = False
if len(sys.argv) > idx and sys.argv[idx] == "--debug":
idx += 1
debug_level = logging.DEBUG
@ -389,7 +399,9 @@ def main():
double_failed.append(name)
for test in first_run_failures:
double_failed.remove(test)
if failed and not double_failed:
if not rerun_failures:
pass
elif failed and not double_failed:
print "All failed cases passed on retry"
logger.info("All failed cases passed on retry")
elif double_failed:
@ -427,7 +439,7 @@ def main():
print "file://%s/index.html" % logdir
logger.info("Code coverage report: file://%s/index.html" % logdir)
if double_failed:
if double_failed or (failed and not rerun_failures):
logger.info("Test run complete - failures found")
sys.exit(2)
if failed: