qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [RFC 3/6] device-crash-test: Allow checkOneCase() to report


From: Eduardo Habkost
Subject: [Qemu-devel] [RFC 3/6] device-crash-test: Allow checkOneCase() to report multiple results
Date: Tue, 26 Sep 2017 20:07:06 -0300

This will allow the test code to be improved to test multiple
devices in a single run.

Signed-off-by: Eduardo Habkost <address@hidden>
---
 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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]