Chromium Code Reviews| Index: build/android/pylib/gtest/setup.py |
| diff --git a/build/android/pylib/gtest/setup.py b/build/android/pylib/gtest/setup.py |
| index e89846e3b1d46b60a7e09372084c73740e32a141..8f1f5b08651fe69b37331729319e33c937c37861 100644 |
| --- a/build/android/pylib/gtest/setup.py |
| +++ b/build/android/pylib/gtest/setup.py |
| @@ -219,6 +219,44 @@ def _GetDisabledTestsFilterFromFile(suite_name): |
| return disabled_filter |
| +# A helper class for scheduling setup-related tasks on devices. |
| +class _TestSetupRunner(test_runner.TestRunner): |
| + def SetUp(self): |
| + pass |
| + |
| + def TearDown(self): |
| + pass |
| + |
| + def DeviceSteps(self): |
| + """ Steps to be run for device. Should be implemented in subclasses. |
| + |
| + Returns: |
| + A value that will be put into 'setup_result' field of corresponding |
| + test result. |
| + """ |
| + raise NotImplementedError() |
| + |
| + def RunTest(self, _test): |
| + result = base_test_result.BaseTestResult( |
| + 'dummy', base_test_result.ResultType.PASS) |
| + |
| + result.setup_result = self.DeviceSteps() |
| + results = base_test_result.TestRunResults() |
| + results.AddResult(result) |
| + return results, None |
| + |
| + |
| +def _InstallPackage(test_options, test_package, devices): |
| + def TestInstallerRunnerFactory(device, _shard_index): |
| + class TestInstallerRunner(_TestSetupRunner): |
| + def DeviceSteps(self): |
| + self.test_package.Install(self.device) |
| + return TestInstallerRunner(test_options, device, test_package) |
| + |
| + test_dispatcher.RunTests(['setup'], TestInstallerRunnerFactory, devices, |
|
jbudorick
2014/07/02 15:57:06
I still think that using test_dispatcher as a way
|
| + shard=False) |
| + |
| + |
| def _GetTests(test_options, test_package, devices): |
| """Get a list of tests. |
| @@ -231,22 +269,16 @@ def _GetTests(test_options, test_package, devices): |
| A list of all the tests in the test suite. |
| """ |
| 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.device) |
| - result.test_list = self.test_package.GetAllTests(self.device) |
| - results = base_test_result.TestRunResults() |
| - results.AddResult(result) |
| - return results, None |
| + class TestListerRunner(_TestSetupRunner): |
| + def DeviceSteps(self): |
| + return self.test_package.GetAllTests(self.device) |
| return TestListerRunner(test_options, device, test_package) |
| results, _no_retry = test_dispatcher.RunTests( |
| - ['gtest_list_tests'], TestListerRunnerFactory, devices) |
| + ['setup'], TestListerRunnerFactory, devices) |
| tests = [] |
| for r in results.GetAll(): |
| - tests.extend(r.test_list) |
| + tests.extend(r.setup_result) |
| return tests |
| @@ -324,6 +356,7 @@ def Setup(test_options, devices): |
| _GenerateDepsDirUsingIsolate(test_options.suite_name, |
| test_options.isolate_file_path) |
| + _InstallPackage(test_options, test_package, devices) |
| tests = _GetTests(test_options, test_package, devices) |
| # Constructs a new TestRunner with the current options. |