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

Unified Diff: build/android/run_tests.py

Issue 9185043: Increase Android test robustness. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove 'ALWAYS' Created 8 years, 11 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 | « build/android/emulator.py ('k') | build/android/single_test_runner.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/run_tests.py
diff --git a/build/android/run_tests.py b/build/android/run_tests.py
index 6e3eccbc9990e775f41eb5b4fd52e4753161403f..d864a2ecc7ecfe686c472fbe5e3ee86a0a8598f6 100755
--- a/build/android/run_tests.py
+++ b/build/android/run_tests.py
@@ -132,7 +132,7 @@ class Xvfb(object):
def RunTests(device, test_suite, gtest_filter, test_arguments, rebaseline,
timeout, performance_test, cleanup_test_files, tool,
- log_dump_name):
+ log_dump_name, fast_and_loose=False):
"""Runs the tests.
Args:
@@ -146,6 +146,8 @@ def RunTests(device, test_suite, gtest_filter, test_arguments, rebaseline,
cleanup_test_files: Whether or not to cleanup test files on device.
tool: Name of the Valgrind tool.
log_dump_name: Name of log dump file.
+ fast_and_loose: should we go extra-fast but sacrifice stability
+ and/or correctness? Intended for quick cycle testing; not for bots!
Returns:
A TestResults object.
@@ -172,7 +174,8 @@ def RunTests(device, test_suite, gtest_filter, test_arguments, rebaseline,
for t in _TEST_SUITES:
test = SingleTestRunner(device, t, gtest_filter, test_arguments,
timeout, rebaseline, performance_test,
- cleanup_test_files, tool, not not log_dump_name)
+ cleanup_test_files, tool, not not log_dump_name,
+ fast_and_loose=fast_and_loose)
test.RunTests()
results += [test.test_results]
# Collect debug info.
@@ -190,6 +193,7 @@ def RunTests(device, test_suite, gtest_filter, test_arguments, rebaseline,
log_dump_name, [d for d in debug_info_list if d])
return TestResults.FromTestResults(results)
+
def Dispatch(options):
"""Dispatches the tests, sharding if possible.
@@ -214,7 +218,7 @@ def Dispatch(options):
if options.use_emulator:
t = TimeProfile('Emulator launch')
- buildbot_emulator = emulator.Emulator()
+ buildbot_emulator = emulator.Emulator(options.fast_and_loose)
buildbot_emulator.Launch()
t.Stop()
attached_devices.append(buildbot_emulator.device)
@@ -230,13 +234,25 @@ def Dispatch(options):
options.rebaseline, options.timeout,
options.performance_test,
options.cleanup_test_files, options.tool,
- options.log_dump)
+ options.log_dump,
+ fast_and_loose=options.fast_and_loose)
if buildbot_emulator:
buildbot_emulator.Shutdown()
if options.use_xvfb:
xvfb.Stop()
- return len(test_results.failed)
+ # Another chance if we timed out? At this point It is safe(r) to
+ # run fast and loose since we just uploaded all the test data and
+ # binary.
+ if test_results.timed_out and options.repeat:
+ logging.critical('Timed out; repeating in fast_and_loose mode.')
+ options.fast_and_loose = True
+ options.repeat = options.repeat - 1
+ logging.critical('Repeats left: ' + str(options.repeat))
+ return Dispatch(options)
+ else:
+ return len(test_results.failed)
+
def ListTestSuites():
"""Display a list of available test suites
@@ -256,7 +272,7 @@ def main(argv):
help='Rebaseline and update *testsuite_disabled',
action='store_true',
default=False)
- option_parser.add_option('-f', dest='gtest_filter',
+ option_parser.add_option('-f', '--gtest_filter', dest='gtest_filter',
help='gtest filter')
option_parser.add_option('-a', '--test_arguments', dest='test_arguments',
help='Additional arguments to pass to the test')
@@ -275,6 +291,17 @@ def main(argv):
option_parser.add_option('-x', '--xvfb', dest='use_xvfb',
action='store_true', default=False,
help='Use Xvfb around tests (ignored if not Linux)')
+ option_parser.add_option('--fast', '--fast_and_loose', dest='fast_and_loose',
+ action='store_true', default=False,
+ help='Go faster (but be less stable), '
+ 'for quick testing. Example: when tracking down '
+ 'tests that hang to add to the disabled list, '
+ 'there is no need to redeploy the test binary '
+ 'or data to the device again. '
+ 'Don\'t use on bots by default!')
+ option_parser.add_option('--repeat', dest='repeat', type='int',
+ default=2,
+ help='Repeat count on test timeout')
options, args = option_parser.parse_args(argv)
if len(args) > 1:
print 'Unknown argument:', args[1:]
« no previous file with comments | « build/android/emulator.py ('k') | build/android/single_test_runner.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698