From aa9f26276e1961fab2d33e188f5a2432360c9c14 Mon Sep 17 00:00:00 2001 From: Vincent Fu Date: Tue, 21 Sep 2021 21:27:11 +0000 Subject: [PATCH] run-fio-tests: make test runs more resilient 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 Link: https://lore.kernel.org/r/20210921212639.61319-1-vincent.fu@samsung.com Signed-off-by: Jens Axboe --- 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