Author: rhs
Date: Thu Aug 22 15:24:14 2013
New Revision: 1516484

URL: http://svn.apache.org/r1516484
Log:
added -n option for running multiple iterations; useful in debugging 
intermittent failures

Modified:
    qpid/proton/trunk/tests/python/proton-test

Modified: qpid/proton/trunk/tests/python/proton-test
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/tests/python/proton-test?rev=1516484&r1=1516483&r2=1516484&view=diff
==============================================================================
--- qpid/proton/trunk/tests/python/proton-test (original)
+++ qpid/proton/trunk/tests/python/proton-test Thu Aug 22 15:24:14 2013
@@ -64,6 +64,8 @@ parser.add_option("-x", "--xml", metavar
                   help="write test results in Junit style xml suitable for use 
by CI tools etc")
 parser.add_option("-a", "--always-colorize", action="store_true", 
dest="always_colorize", default=False,
                   help="always colorize the test results rather than relying 
on terminal tty detection. Useful when invoked from Jython/Maven.")
+parser.add_option("-n", metavar="count", dest="count", type=int, default=1,
+                  help="run the tests <count> times")
 
 class Config:
 
@@ -594,67 +596,78 @@ if opts.xml and not list_only:
 else:
    xmlr = None
 
-passed = 0
-failed = 0
-skipped = 0
-start = time.time()
-for t in filtered:
-  if list_only:
-    print t.name()
-  else:
-    st = t.run()
-    if xmlr:
-      xmlr.report(t.name(), st)
-    if st.passed:
-      passed += 1
-    elif st.skipped:
-      skipped += 1
-    elif st.failed:
-      failed += 1
-      if opts.hoe:
-        break
-end = time.time()
-
-run = passed + failed
-
-if not list_only:
-  if passed:
-    _pass = "pass"
-  else:
-    _pass = "fail"
-  if failed:
-    outcome = "fail"
-  else:
-    outcome = "pass"
-  if ignored:
-    ign = "ignored"
-  else:
-    ign = "pass"
-  if skipped:
-    skip = "skip"
-  else:
-    skip = "pass"
-  print colorize("Totals:", 1),
-  totals = [colorize_word("total", "%s tests" % total),
-            colorize_word(_pass, "%s passed" % passed),
-            colorize_word(skip, "%s skipped" % skipped),
-            colorize_word(ign, "%s ignored" % len(ignored)),
-            colorize_word(outcome, "%s failed" % failed)]
-  print ", ".join(totals),
-  if opts.hoe and failed > 0:
-    print " -- (halted after %s)" % run
-  else:
-    print
-  if opts.time and run > 0:
-    print colorize("Timing:", 1),
-    timing = [colorize_word("elapsed", "%.2fs elapsed" % (end - start)),
-              colorize_word("average", "%.2fs average" % ((end - start)/run))]
-    print ", ".join(timing)
+def runthrough():
+  passed = 0
+  failed = 0
+  skipped = 0
+  start = time.time()
+  for t in filtered:
+    if list_only:
+      print t.name()
+    else:
+      st = t.run()
+      if xmlr:
+        xmlr.report(t.name(), st)
+      if st.passed:
+        passed += 1
+      elif st.skipped:
+        skipped += 1
+      elif st.failed:
+        failed += 1
+        if opts.hoe:
+          break
+  end = time.time()
 
-if xmlr:
-   xmlr.end()
+  run = passed + failed
 
-if failed:
-  sys.exit(1)
-else:
-  sys.exit(0)
+  if not list_only:
+    if passed:
+      _pass = "pass"
+    else:
+      _pass = "fail"
+    if failed:
+      outcome = "fail"
+    else:
+      outcome = "pass"
+    if ignored:
+      ign = "ignored"
+    else:
+      ign = "pass"
+    if skipped:
+      skip = "skip"
+    else:
+      skip = "pass"
+    print colorize("Totals:", 1),
+    totals = [colorize_word("total", "%s tests" % total),
+              colorize_word(_pass, "%s passed" % passed),
+              colorize_word(skip, "%s skipped" % skipped),
+              colorize_word(ign, "%s ignored" % len(ignored)),
+              colorize_word(outcome, "%s failed" % failed)]
+    print ", ".join(totals),
+    if opts.hoe and failed > 0:
+      print " -- (halted after %s)" % run
+    else:
+      print
+    if opts.time and run > 0:
+      print colorize("Timing:", 1),
+      timing = [colorize_word("elapsed", "%.2fs elapsed" % (end - start)),
+                colorize_word("average", "%.2fs average" % ((end - 
start)/run))]
+      print ", ".join(timing)
+
+  if xmlr:
+     xmlr.end()
+
+  return failed
+
+limit = opts.count
+count = 0
+while limit == 0 or count < limit:
+  count += 1
+  if runthrough():
+    if count > 1:
+      print " -- (failures after %s runthroughs)" % count
+    sys.exit(1)
+  else:
+    continue
+
+sys.exit(0)



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to