Index: build/android/pylib/gtest/setup.py |
diff --git a/build/android/pylib/gtest/setup.py b/build/android/pylib/gtest/setup.py |
index e62b64811aaee30b04a749f73d98aa684f9b3bba..6305fd646288adcbd50fbef64879813b660e67f4 100644 |
--- a/build/android/pylib/gtest/setup.py |
+++ b/build/android/pylib/gtest/setup.py |
@@ -12,10 +12,11 @@ import os |
import shutil |
import sys |
-from pylib import android_commands |
from pylib import cmd_helper |
from pylib import constants |
+from pylib.base import base_test_result |
+from pylib.base import test_dispatcher |
from pylib.gtest import test_package_apk |
from pylib.gtest import test_package_exe |
from pylib.gtest import test_runner |
@@ -204,26 +205,35 @@ def _GetDisabledTestsFilterFromFile(suite_name): |
return disabled_filter |
-def _GetTestsFromDevice(runner_factory, devices): |
- """Get a list of tests from a device. |
+def _GetTests(test_options, test_package, devices): |
+ """Get a list of tests. |
Args: |
- runner_factory: Callable that takes device and shard_index and returns |
- a TestRunner. |
- devices: A list of device ids. |
+ test_options: A GTestOptions object. |
+ test_package: A TestPackageApk object. |
+ devices: A list of attached devices. |
Returns: |
- All the tests in the test suite. |
+ A list of all the tests in the test suite. |
""" |
- for device in devices: |
- try: |
- logging.info('Obtaining tests from %s', device) |
- return runner_factory(device, 0).GetAllTests() |
- except (android_commands.errors.WaitForResponseTimedOutError, |
- android_commands.errors.DeviceUnresponsiveError), e: |
- logging.warning('Failed obtaining test list from %s with exception: %s', |
- device, e) |
- raise Exception('Failed to obtain test list from devices.') |
+ def TestListerRunnerFactory(device, _shard_index): |
+ class TestListerRunner(test_runner.TestRunner): |
+ def RunTest(self, _test): |
+ result = base_test_result.BaseTestResult( |
+ 'gtest_list_tests', base_test_result.ResultType.PASS) |
+ self.test_package.Install(self.adb) |
+ result.test_list = self.test_package.GetAllTests(self.adb) |
+ results = base_test_result.TestRunResults() |
+ results.AddResult(result) |
+ return results, None |
+ return TestListerRunner(test_options, device, test_package) |
+ |
+ results, _no_retry = test_dispatcher.RunTests( |
+ ['gtest_list_tests'], TestListerRunnerFactory, devices) |
+ tests = [] |
+ for r in results.GetAll(): |
+ tests.extend(r.test_list) |
+ return tests |
def _FilterTestsUsingPrefixes(all_tests, pre=False, manual=False): |
@@ -299,6 +309,8 @@ def Setup(test_options, devices): |
_GenerateDepsDirUsingIsolate(test_options.suite_name) |
+ tests = _GetTests(test_options, test_package, devices) |
+ |
# Constructs a new TestRunner with the current options. |
def TestRunnerFactory(device, _shard_index): |
return test_runner.TestRunner( |
@@ -306,7 +318,6 @@ def Setup(test_options, devices): |
device, |
test_package) |
- tests = _GetTestsFromDevice(TestRunnerFactory, devices) |
if test_options.run_disabled: |
test_options = test_options._replace( |
test_arguments=('%s --gtest_also_run_disabled_tests' % |