| Index: build/android/pylib/base/test_dispatcher.py
|
| diff --git a/build/android/pylib/base/test_dispatcher.py b/build/android/pylib/base/test_dispatcher.py
|
| index 10b0b4bb88cef065200cef4509164ce298d1f46c..31fa0784dc94cd1249ee289eefc04672c8e7299b 100644
|
| --- a/build/android/pylib/base/test_dispatcher.py
|
| +++ b/build/android/pylib/base/test_dispatcher.py
|
| @@ -4,16 +4,15 @@
|
|
|
| """Dispatches tests, either sharding or replicating them.
|
|
|
| -To dispatch, performs the following steps:
|
| +Performs the following steps:
|
| * Create a test collection factory, using the given tests
|
| - If sharding: test collection factory returns the same shared test collection
|
| to all test runners
|
| - If replciating: test collection factory returns a unique test collection to
|
| each test runner, with the same set of tests in each.
|
| -* Get the list of devices to run on
|
| -* Create test runners
|
| -* Run each test runner in its own thread, pulling tests from the test collection
|
| - generated from the test collection factory until there are no tests left.
|
| +* Create a test runner for each device.
|
| +* Run each test runner in its own thread, grabbing tests from the test
|
| + collection until there are no tests left.
|
| """
|
|
|
| import logging
|
| @@ -304,39 +303,8 @@ def _TearDownRunners(runners, timeout=None):
|
| threads.JoinAll(watchdog_timer.WatchdogTimer(timeout))
|
|
|
|
|
| -
|
| -def _GetAttachedDevices(wait_for_debugger=False, test_device=None):
|
| - """Get all attached devices.
|
| -
|
| - If we are using a debugger, limit to only one device.
|
| -
|
| - Args:
|
| - wait_for_debugger: True if this run will use a debugger.
|
| - test_device: Name of a specific device to use.
|
| -
|
| - Returns:
|
| - A list of attached devices.
|
| - """
|
| - attached_devices = []
|
| -
|
| - attached_devices = android_commands.GetAttachedDevices()
|
| - if test_device:
|
| - assert test_device in attached_devices, (
|
| - 'Did not find device %s among attached device. Attached devices: %s'
|
| - % (test_device, ', '.join(attached_devices)))
|
| - attached_devices = [test_device]
|
| -
|
| - if len(attached_devices) > 1 and wait_for_debugger:
|
| - logging.warning('Debugger can not be sharded, using first available device')
|
| - attached_devices = attached_devices[:1]
|
| -
|
| - return sorted(attached_devices)
|
| -
|
| -
|
| -def RunTests(tests, runner_factory, wait_for_debugger, test_device,
|
| - shard=True,
|
| - test_timeout=DEFAULT_TIMEOUT,
|
| - setup_timeout=DEFAULT_TIMEOUT,
|
| +def RunTests(tests, runner_factory, devices, shard=True,
|
| + test_timeout=DEFAULT_TIMEOUT, setup_timeout=DEFAULT_TIMEOUT,
|
| num_retries=2):
|
| """Run all tests on attached devices, retrying tests that don't pass.
|
|
|
| @@ -344,8 +312,7 @@ def RunTests(tests, runner_factory, wait_for_debugger, test_device,
|
| tests: List of tests to run.
|
| runner_factory: Callable that takes a device and index and returns a
|
| TestRunner object.
|
| - wait_for_debugger: True if this test is using a debugger.
|
| - test_device: A specific device to run tests on, or None.
|
| + devices: List of attached devices.
|
| shard: True if we should shard, False if we should replicate tests.
|
| - Sharding tests will distribute tests across all test runners through a
|
| shared test collection.
|
| @@ -362,6 +329,7 @@ def RunTests(tests, runner_factory, wait_for_debugger, test_device,
|
| if not tests:
|
| logging.critical('No tests to run.')
|
| return (base_test_result.TestRunResults(), constants.ERROR_EXIT_CODE)
|
| +
|
| if shard:
|
| # Generate a shared _TestCollection object for all test runners, so they
|
| # draw from a common pool of tests.
|
| @@ -376,11 +344,6 @@ def RunTests(tests, runner_factory, wait_for_debugger, test_device,
|
| tag_results_with_device = True
|
| log_string = 'replicated on each device'
|
|
|
| - devices = _GetAttachedDevices(wait_for_debugger, test_device)
|
| - if not devices:
|
| - logging.critical('No attached devices.')
|
| - return (base_test_result.TestRunResults(), constants.ERROR_EXIT_CODE)
|
| -
|
| logging.info('Will run %d tests (%s): %s', len(tests), log_string, str(tests))
|
| runners = _CreateRunners(runner_factory, devices, setup_timeout)
|
| try:
|
|
|