Index: build/android/test_runner.py |
diff --git a/build/android/test_runner.py b/build/android/test_runner.py |
index 7b49c9e69a1f2c181d268393487c3e0aeebdecb4..8bae397f261112ebac8721402035fd58a475d08f 100755 |
--- a/build/android/test_runner.py |
+++ b/build/android/test_runner.py |
@@ -24,6 +24,7 @@ from pylib.base import environment_factory |
from pylib.base import test_dispatcher |
from pylib.base import test_instance_factory |
from pylib.base import test_run_factory |
+from pylib.device import device_blacklist |
from pylib.device import device_errors |
from pylib.device import device_utils |
from pylib.gtest import gtest_config |
@@ -188,6 +189,7 @@ def AddDeviceOptions(parser): |
group.add_argument('-d', '--device', dest='test_device', |
help=('Target device for the test suite ' |
'to run on.')) |
+ group.add_argument('--blacklist-file', help='Device blacklist file.') |
def AddGTestOptions(parser): |
@@ -767,7 +769,7 @@ def _RunUIAutomatorTests(args, devices): |
"""Subcommand of RunTestsCommands which runs uiautomator tests.""" |
uiautomator_options = ProcessUIAutomatorOptions(args) |
- runner_factory, tests = uiautomator_setup.Setup(uiautomator_options) |
+ runner_factory, tests = uiautomator_setup.Setup(uiautomator_options, devices) |
results, exit_code = test_dispatcher.RunTests( |
tests, runner_factory, devices, shard=True, test_timeout=None, |
@@ -823,7 +825,7 @@ def _RunMonkeyTests(args, devices): |
return exit_code |
-def _RunPerfTests(args): |
+def _RunPerfTests(args, active_devices): |
"""Subcommand of RunTestsCommands which runs perf tests.""" |
perf_options = ProcessPerfTestOptions(args) |
@@ -837,7 +839,8 @@ def _RunPerfTests(args): |
return perf_test_runner.PrintTestOutput( |
perf_options.print_step, perf_options.output_chartjson_data) |
- runner_factory, tests, devices = perf_setup.Setup(perf_options) |
+ runner_factory, tests, devices = perf_setup.Setup( |
+ perf_options, active_devices) |
# shard=False means that each device will get the full list of tests |
# and then each one will decide their own affinity. |
@@ -882,7 +885,7 @@ def _RunPythonTests(args): |
sys.path = sys.path[1:] |
-def _GetAttachedDevices(test_device=None): |
+def _GetAttachedDevices(blacklist_file, test_device): |
"""Get all attached devices. |
Args: |
@@ -891,7 +894,14 @@ def _GetAttachedDevices(test_device=None): |
Returns: |
A list of attached devices. |
""" |
- attached_devices = device_utils.DeviceUtils.HealthyDevices() |
+ if not blacklist_file: |
+ # TODO(jbudorick): Remove this once bots pass the blacklist file. |
+ blacklist_file = device_blacklist.BLACKLIST_JSON |
+ logging.warning('Using default device blacklist %s', |
+ device_blacklist.BLACKLIST_JSON) |
+ |
+ blacklist = device_blacklist.Blacklist(blacklist_file) |
+ attached_devices = device_utils.DeviceUtils.HealthyDevices(blacklist) |
if test_device: |
test_device = [d for d in attached_devices if d == test_device] |
if not test_device: |
@@ -930,7 +940,7 @@ def RunTestsCommand(args, parser): |
if command in constants.LOCAL_MACHINE_TESTS: |
devices = [] |
else: |
- devices = _GetAttachedDevices(args.test_device) |
+ devices = _GetAttachedDevices(args.blacklist_file, args.test_device) |
forwarder.Forwarder.RemoveHostLog() |
if not ports.ResetTestServerPortAllocation(): |
@@ -951,7 +961,7 @@ def RunTestsCommand(args, parser): |
elif command == 'monkey': |
return _RunMonkeyTests(args, devices) |
elif command == 'perf': |
- return _RunPerfTests(args) |
+ return _RunPerfTests(args, devices) |
elif command == 'python': |
return _RunPythonTests(args) |
else: |