Catch exceptions that occur during test setup/running/evaluation. This makes it more likely that the entire test suite can run to completion even if some tests fail in an unexpected fashion. In particular I have seen failures in FioJobTest_t0014() when the test is run on a bare metal machine. Without this patch these failures make the entire script grind to a halt. Signed-off-by: Vincent Fu <vincent.fu@xxxxxxxxxxx> --- t/run-fio-tests.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/t/run-fio-tests.py b/t/run-fio-tests.py index a59cdfe0..612e50ca 100755 --- a/t/run-fio-tests.py +++ b/t/run-fio-tests.py @@ -49,6 +49,7 @@ import shutil import logging import argparse import platform +import traceback import subprocess import multiprocessing from pathlib import Path @@ -1057,9 +1058,16 @@ def main(): skipped = skipped + 1 continue - test.setup(artifact_root, config['test_id']) - test.run() - test.check_result() + try: + test.setup(artifact_root, config['test_id']) + test.run() + test.check_result() + except KeyboardInterrupt: + break + except Exception as e: + test.passed = False + test.failure_reason += str(e) + logging.debug("Test %d exception:\n%s\n", config['test_id'], traceback.format_exc()) if test.passed: result = "PASSED" passed = passed + 1 -- 2.25.1