tests: Warn not fail when reading invalid pickle status files

With this change, the test script will output a warning when it reads
an incomplete (e.g., when a regression is still running) or corrupt
status file instead of throwing an exception. When the scipt is used
to show the results the corrupt file is skipped; when it is used to
test if all regressions run successfully it will return an error value
(2).

Change-Id: Ie7d9b457b200e3abc7ae6238e3efbf3d18cf4297
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2320
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
This commit is contained in:
Nikos Nikoleris 2016-09-01 17:27:20 +01:00 committed by Andreas Sandberg
parent 083cd6da78
commit e2805f825a

View file

@ -242,8 +242,18 @@ def _show_args(subparsers):
help="Pickled test results")
def _show(args):
def _load(f):
# Load the pickled status file, sometimes e.g., when a
# regression is still running the status file might be
# incomplete.
try:
return pickle.load(f)
except EOFError:
print >> sys.stderr, 'Could not read file %s' % f.name
return []
formatter = _create_formatter(args)
suites = sum([ pickle.load(f) for f in args.result ], [])
suites = sum([ _load(f) for f in args.result ], [])
formatter.dump_suites(suites)
def _test_args(subparsers):
@ -276,7 +286,11 @@ def _test_args(subparsers):
help="Pickled test results")
def _test(args):
suites = sum([ pickle.load(f) for f in args.result ], [])
try:
suites = sum([ pickle.load(f) for f in args.result ], [])
except EOFError:
print >> sys.stderr, 'Could not read all files'
sys.exit(2)
if all(s for s in suites):
sys.exit(0)