OLD | NEW |
1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
| 5 """Dispatches GTests.""" |
| 6 |
5 import copy | 7 import copy |
6 import fnmatch | 8 import fnmatch |
7 import logging | 9 import logging |
8 import os | 10 import os |
9 | 11 |
10 from pylib import android_commands | 12 from pylib import android_commands |
11 from pylib import cmd_helper | 13 from pylib import cmd_helper |
12 from pylib import constants | 14 from pylib import constants |
13 from pylib import ports | 15 from pylib import ports |
14 from pylib.base import shard | 16 from pylib.base import shard |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 'Ensure it has been built.\n' % | 60 'Ensure it has been built.\n' % |
59 (t, q, gtest_config.STABLE_TEST_SUITES)) | 61 (t, q, gtest_config.STABLE_TEST_SUITES)) |
60 return qualified_test_suites | 62 return qualified_test_suites |
61 | 63 |
62 | 64 |
63 def GetTestsFromDevice(runner): | 65 def GetTestsFromDevice(runner): |
64 """Get a list of tests from a device, excluding disabled tests. | 66 """Get a list of tests from a device, excluding disabled tests. |
65 | 67 |
66 Args: | 68 Args: |
67 runner: a TestRunner. | 69 runner: a TestRunner. |
| 70 Returns: |
| 71 All non-disabled tests on the device. |
68 """ | 72 """ |
69 # The executable/apk needs to be copied before we can call GetAllTests. | 73 # The executable/apk needs to be copied before we can call GetAllTests. |
70 runner.test_package.StripAndCopyExecutable() | 74 runner.test_package.StripAndCopyExecutable() |
71 all_tests = runner.test_package.GetAllTests() | 75 all_tests = runner.test_package.GetAllTests() |
72 # Only includes tests that do not have any match in the disabled list. | 76 # Only includes tests that do not have any match in the disabled list. |
73 disabled_list = runner.GetDisabledTests() | 77 disabled_list = runner.GetDisabledTests() |
74 return filter(lambda t: not any([fnmatch.fnmatch(t, disabled_pattern) | 78 return filter(lambda t: not any([fnmatch.fnmatch(t, disabled_pattern) |
75 for disabled_pattern in disabled_list]), | 79 for disabled_pattern in disabled_list]), |
76 all_tests) | 80 all_tests) |
77 | 81 |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 options.cleanup_test_files, | 152 options.cleanup_test_files, |
149 options.tool, | 153 options.tool, |
150 options.build_type, | 154 options.build_type, |
151 options.webkit, | 155 options.webkit, |
152 options.push_deps, | 156 options.push_deps, |
153 constants.GTEST_TEST_PACKAGE_NAME, | 157 constants.GTEST_TEST_PACKAGE_NAME, |
154 constants.GTEST_TEST_ACTIVITY_NAME, | 158 constants.GTEST_TEST_ACTIVITY_NAME, |
155 constants.GTEST_COMMAND_LINE_FILE) | 159 constants.GTEST_COMMAND_LINE_FILE) |
156 | 160 |
157 # Get tests and split them up based on the number of devices. | 161 # Get tests and split them up based on the number of devices. |
158 if options.gtest_filter: | 162 if options.test_filter: |
159 all_tests = [t for t in options.gtest_filter.split(':') if t] | 163 all_tests = [t for t in options.test_filter.split(':') if t] |
160 else: | 164 else: |
161 all_tests = GetAllEnabledTests(RunnerFactory, attached_devices) | 165 all_tests = GetAllEnabledTests(RunnerFactory, attached_devices) |
162 num_devices = len(attached_devices) | 166 num_devices = len(attached_devices) |
163 tests = [':'.join(all_tests[i::num_devices]) for i in xrange(num_devices)] | 167 tests = [':'.join(all_tests[i::num_devices]) for i in xrange(num_devices)] |
164 tests = [t for t in tests if t] | 168 tests = [t for t in tests if t] |
165 | 169 |
166 # Run tests. | 170 # Run tests. |
167 test_results = shard.ShardAndRunTests(RunnerFactory, attached_devices, tests, | 171 test_results = shard.ShardAndRunTests(RunnerFactory, attached_devices, tests, |
168 options.build_type, test_timeout=None, | 172 options.build_type, test_timeout=None, |
169 num_retries=options.num_retries) | 173 num_retries=options.num_retries) |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 """ | 207 """ |
204 if options.test_suite == 'help': | 208 if options.test_suite == 'help': |
205 _ListTestSuites() | 209 _ListTestSuites() |
206 return 0 | 210 return 0 |
207 | 211 |
208 if options.use_xvfb: | 212 if options.use_xvfb: |
209 framebuffer = xvfb.Xvfb() | 213 framebuffer = xvfb.Xvfb() |
210 framebuffer.Start() | 214 framebuffer.Start() |
211 | 215 |
212 all_test_suites = _FullyQualifiedTestSuites(options.exe, options.test_suite, | 216 all_test_suites = _FullyQualifiedTestSuites(options.exe, options.test_suite, |
213 options.build_type) | 217 options.build_type) |
214 failures = 0 | 218 failures = 0 |
215 for suite_name, suite_path in all_test_suites: | 219 for suite_name, suite_path in all_test_suites: |
216 # Give each test suite its own copy of options. | 220 # Give each test suite its own copy of options. |
217 test_options = copy.deepcopy(options) | 221 test_options = copy.deepcopy(options) |
218 test_options.test_suite = suite_path | 222 test_options.test_suite = suite_path |
219 failures += _RunATestSuite(test_options, suite_name) | 223 failures += _RunATestSuite(test_options, suite_name) |
220 | 224 |
221 if options.use_xvfb: | 225 if options.use_xvfb: |
222 framebuffer.Stop() | 226 framebuffer.Stop() |
223 return failures | 227 return failures |
OLD | NEW |