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