This will allow the test code to be improved to test multiple
devices in a single run.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
scripts/device-crash-test | 29 ++++++++++++++---------------
1 file changed, 14 insertions(+), 15 deletions(-)
diff --git a/scripts/device-crash-test b/scripts/device-crash-test
index 782d7fd6c2..0bd599d395 100755
--- a/scripts/device-crash-test
+++ b/scripts/device-crash-test
@@ -384,7 +384,8 @@ def getBinaryInfo(args, binary):
def checkOneCase(args, testcase):
"""Check one specific case
- Returns a dictionary containing results of test case.
+ Generates a list of dictionaries containing results of testing. If
+ multiple devices are being tested, multiple entries can be returned.
"""
binary = testcase['binary']
accel = testcase['accel']
@@ -413,7 +414,7 @@ def checkOneCase(args, testcase):
vm.shutdown()
r['exitcode'] = vm.exitcode()
r['log'] = vm.get_log()
- return r
+ yield r
def binariesToTest(args, testcase):
if args.qemu:
@@ -572,22 +573,20 @@ def main():
if args.dry_run:
continue
- try:
- f = checkOneCase(args, t)
- except KeyboardInterrupt:
- break
- i, wl = checkResultWhitelist(f)
- dbg("testcase: %r, whitelist match: %r", t, wl)
- wl_stats.setdefault(i, []).append(f)
- level = wl.get('loglevel', logging.DEBUG)
- logResult(f, level)
+ for r in checkOneCase(args, t):
+ i, wl = checkResultWhitelist(r)
+ dbg("testcase: %r, whitelist match: %r", t, wl)
+ wl_stats.setdefault(i, []).append(r)
+ level = wl.get('loglevel', logging.DEBUG)
+ logResult(r, level)
+
+ if wl.get('fatal') or (args.strict and level >= logging.WARN):
+ fatal_failures.append(r)
- if wl.get('fatal') or (args.strict and level >= logging.WARN):
- fatal_failures.append(f)
+ if expected_match and expected_match[0] != i:
+ logger.warn("Didn't fail as expected: %s", formatTestCase(t))
- if expected_match and expected_match[0] != i:
- logger.warn("Didn't fail as expected: %s", formatTestCase(t))
logger.info("Total: %d test cases", total)
if skipped:
--
2.13.5