Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3436)

Unified Diff: build/android/pylib/base/shard.py

Issue 13956018: Android: Make number of test retries configurable. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | build/android/pylib/browsertests/dispatch.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/pylib/base/shard.py
diff --git a/build/android/pylib/base/shard.py b/build/android/pylib/base/shard.py
index 03c72ef912c5540c8869859fe928caac1ea30895..fe37a56780a37c6bb1521b6fc6beeb58b15db226 100644
--- a/build/android/pylib/base/shard.py
+++ b/build/android/pylib/base/shard.py
@@ -116,7 +116,8 @@ class _TestCollection(object):
yield r
-def _RunTestsFromQueue(runner, test_collection, out_results, watcher):
+def _RunTestsFromQueue(runner, test_collection, out_results, watcher,
+ num_retries):
"""Runs tests from the test_collection until empty using the given runner.
Adds TestRunResults objects to the out_results list and may add tests to the
@@ -127,6 +128,7 @@ def _RunTestsFromQueue(runner, test_collection, out_results, watcher):
test_collection: A _TestCollection from which to get _Test objects to run.
out_results: A list to add TestRunResults to.
watcher: A watchdog_timer.WatchdogTimer object, used as a shared timeout.
+ num_retries: Number of retries for a test.
"""
for test in test_collection:
watcher.Reset()
@@ -138,7 +140,7 @@ def _RunTestsFromQueue(runner, test_collection, out_results, watcher):
raise android_commands.errors.DeviceUnresponsiveError(msg)
result, retry = runner.RunTest(test.test)
test.tries += 1
- if retry and test.tries <= 3:
+ if retry and test.tries <= num_retries:
# Retry non-passing results, only record passing results.
pass_results = base_test_result.TestRunResults()
pass_results.AddResults(result.GetPass())
@@ -187,12 +189,13 @@ def _SetUp(runner_factory, device, out_runners, threadsafe_counter):
logging.warning('Failed to create shard for %s: [%s]', device, e)
-def _RunAllTests(runners, tests, timeout=None):
+def _RunAllTests(runners, tests, num_retries, timeout=None):
"""Run all tests using the given TestRunners.
Args:
runners: a list of TestRunner objects.
tests: a list of Tests to run using the given TestRunners.
+ num_retries: number of retries for a test.
timeout: watchdog timeout in seconds, defaults to the default timeout.
Returns:
@@ -204,9 +207,10 @@ def _RunAllTests(runners, tests, timeout=None):
results = []
watcher = watchdog_timer.WatchdogTimer(timeout)
workers = reraiser_thread.ReraiserThreadGroup(
- [reraiser_thread.ReraiserThread(_RunTestsFromQueue,
- [r, tests_collection, results, watcher],
- name=r.device[-4:])
+ [reraiser_thread.ReraiserThread(
+ _RunTestsFromQueue,
+ [r, tests_collection, results, watcher, num_retries],
+ name=r.device[-4:])
for r in runners])
workers.StartAll()
workers.JoinAll(watcher)
@@ -259,7 +263,8 @@ def _TearDownRunners(runners, timeout=None):
def ShardAndRunTests(runner_factory, devices, tests, build_type='Debug',
test_timeout=DEFAULT_TIMEOUT,
- setup_timeout=DEFAULT_TIMEOUT):
+ setup_timeout=DEFAULT_TIMEOUT,
+ num_retries=2):
"""Run all tests on attached devices, retrying tests that don't pass.
Args:
@@ -272,6 +277,7 @@ def ShardAndRunTests(runner_factory, devices, tests, build_type='Debug',
default timeout.
setup_timeout: watchdog timeout in seconds for creating and cleaning up
test runners, defaults to the default timeout.
+ num_retries: number of retries for a test.
Returns:
A base_test_result.TestRunResults object.
@@ -279,7 +285,7 @@ def ShardAndRunTests(runner_factory, devices, tests, build_type='Debug',
forwarder.Forwarder.KillHost(build_type)
runners = _CreateRunners(runner_factory, devices, setup_timeout)
try:
- return _RunAllTests(runners, tests, test_timeout)
+ return _RunAllTests(runners, tests, num_retries, test_timeout)
finally:
try:
_TearDownRunners(runners, setup_timeout)
« no previous file with comments | « no previous file | build/android/pylib/browsertests/dispatch.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698