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

Unified Diff: build/android/run_tests.py

Issue 11275078: Android: improves test sharding reliability. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Unrecoverable error Created 8 years, 2 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
Index: build/android/run_tests.py
diff --git a/build/android/run_tests.py b/build/android/run_tests.py
index 904b82dcb40e312978b62026fdd3cb4aa7913519..6a7843d908b6bbdfb5a0a2e95f8dcfc502f1bacf 100755
--- a/build/android/run_tests.py
+++ b/build/android/run_tests.py
@@ -208,25 +208,47 @@ class TestSharder(BaseTestSharder):
self.log_dump_name = log_dump_name
self.fast_and_loose = fast_and_loose
self.build_type = build_type
- test = SingleTestRunner(self.attached_devices[0], test_suite, gtest_filter,
- test_arguments, timeout, rebaseline,
- performance_test, cleanup_test_files, tool, 0,
- not not self.log_dump_name, fast_and_loose,
- build_type)
self.tests = []
if not self.gtest_filter:
# No filter has been specified, let's add all tests then.
- # The executable/apk needs to be copied before we can call GetAllTests.
- test.test_package.StripAndCopyExecutable()
- all_tests = test.test_package.GetAllTests()
- if not rebaseline:
- disabled_list = test.GetDisabledTests()
- # Only includes tests that do not have any match in the disabled list.
- all_tests = filter(lambda t:
- not any([fnmatch.fnmatch(t, disabled_pattern)
- for disabled_pattern in disabled_list]),
- all_tests)
- self.tests = all_tests
+ self.tests, self.attached_devices = self._GetTests()
+
+ def _GetTests(self):
+ """Returns a tuple of (all_tests, available_devices).
+
+ Tries to obtain the list of available tests.
+ Raises Exception if all devices failed.
+ """
+ available_devices = list(self.attached_devices)
+ while available_devices:
+ try:
+ logging.info('Obtaining tests from %s', available_devices[-1])
+ all_tests = self._GetTestsFromDevice(available_devices[-1])
+ return all_tests, available_devices
+ except Exception as e:
+ logging.info('Failed obtaining tests from %s %s',
+ available_devices[-1], e)
+ available_devices.pop()
+ raise Exception('No device available to get the list of tests.')
+
+ def _GetTestsFromDevice(self, device):
+ test = SingleTestRunner(device, self.test_suite, self.gtest_filter,
+ self.test_arguments, self.timeout, self.rebaseline,
+ self.performance_test, self.cleanup_test_files,
+ self.tool, 0,
+ not not self.log_dump_name, self.fast_and_loose,
+ self.build_type)
+ # The executable/apk needs to be copied before we can call GetAllTests.
+ test.test_package.StripAndCopyExecutable()
+ all_tests = test.test_package.GetAllTests()
+ if not self.rebaseline:
+ disabled_list = test.GetDisabledTests()
+ # Only includes tests that do not have any match in the disabled list.
+ all_tests = filter(lambda t:
+ not any([fnmatch.fnmatch(t, disabled_pattern)
+ for disabled_pattern in disabled_list]),
+ all_tests)
+ return all_tests
def CreateShardedTestRunner(self, device, index):
"""Creates a suite-specific test runner.
« build/android/pylib/base_test_sharder.py ('K') | « build/android/pylib/base_test_sharder.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698