Chromium Code Reviews| Index: tools/telemetry/telemetry/core/platform/android_device.py |
| diff --git a/tools/telemetry/telemetry/core/platform/android_device.py b/tools/telemetry/telemetry/core/platform/android_device.py |
| index b5732526fbed68511de562030e4c35bc5ebf88a6..1792e5daf061f88f191be5f053c3c53e87e51dfb 100644 |
| --- a/tools/telemetry/telemetry/core/platform/android_device.py |
| +++ b/tools/telemetry/telemetry/core/platform/android_device.py |
| @@ -10,7 +10,12 @@ import sys |
| from telemetry.core.platform import device |
| from telemetry.core.platform.profiler import monsoon |
| from telemetry.core import util |
| -from telemetry.internal.backends import adb_commands |
| + |
| +util.AddDirToPythonPath(util.GetChromiumSrcDir(), 'build', 'android') |
| +from pylib import constants # pylint: disable=import-error |
| +from pylib.device import adb_wrapper # pylint: disable=import-error |
| +from pylib.device import device_blacklist # pylint: disable=import-error |
| +from pylib.device import device_errors # pylint: disable=import-error |
| class AndroidDevice(device.Device): |
| @@ -26,6 +31,9 @@ class AndroidDevice(device.Device): |
| def __init__(self, device_id, enable_performance_mode=True): |
| super(AndroidDevice, self).__init__( |
| name='Android device %s' % device_id, guid=device_id) |
| + if device_id in device_blacklist.ReadBlacklist(): |
| + logging.warning( |
| + 'Device instance with device id %s is unhealthy.' % device_id) |
| self._device_id = device_id |
| self._enable_performance_mode = enable_performance_mode |
| @@ -43,8 +51,13 @@ class AndroidDevice(device.Device): |
| return self._enable_performance_mode |
| +def _GetAttachedDevicesSerials(): |
| + return [adb.GetDeviceSerial() for adb in adb_wrapper.AdbWrapper.Devices()] |
| + |
| + |
| def GetDeviceSerials(): |
| - device_serials = adb_commands.GetAttachedDevices() |
|
jbudorick
2015/07/02 03:04:54
the old AndroidCommands.GetAttachedDevices uses th
|
| + device_serials = _GetAttachedDevicesSerials() |
| + |
| # The monsoon provides power for the device, so for devices with no |
| # real battery, we need to turn them on after the monsoon enables voltage |
| # output to the device. |
| @@ -65,10 +78,11 @@ The Monsoon's power output has been enabled. Please now ensure that: |
| Waiting for device... |
| """) |
| - util.WaitFor(adb_commands.GetAttachedDevices, 600) |
| - device_serials = adb_commands.GetAttachedDevices() |
| + util.WaitFor(_GetAttachedDevicesSerials, 600) |
| + device_serials = _GetAttachedDevicesSerials() |
| except IOError: |
| return [] |
| + |
| return device_serials |
| @@ -98,10 +112,8 @@ def GetDevice(finder_options): |
| def CanDiscoverDevices(): |
| """Returns true if devices are discoverable via adb.""" |
| - if not adb_commands.IsAndroidSupported(): |
| - logging.info( |
| - 'Android build commands unavailable on this machine. ' |
| - 'Have you installed Android build dependencies?') |
| + adb_path = constants.GetAdbPath() |
| + if os.path.isabs(adb_path) and not os.path.exists(adb_path): |
| return False |
| try: |
| with open(os.devnull, 'w') as devnull: |
| @@ -114,17 +126,17 @@ def CanDiscoverDevices(): |
| 'Consider running adb as root:') |
| logging.warn(' adb kill-server') |
| logging.warn(' sudo `which adb` devices\n\n') |
| - return True |
| except OSError: |
| pass |
| - chromium_adb_path = os.path.join( |
| - util.GetChromiumSrcDir(), 'third_party', 'android_tools', 'sdk', |
| - 'platform-tools', 'adb') |
| - if sys.platform.startswith('linux') and os.path.exists(chromium_adb_path): |
| + if sys.platform.startswith('linux'): |
| os.environ['PATH'] = os.pathsep.join( |
| - [os.path.dirname(chromium_adb_path), os.environ['PATH']]) |
| + [os.path.dirname(adb_path), os.environ['PATH']]) |
| + try: |
| + _GetAttachedDevicesSerials() |
| return True |
| - return False |
| + except (device_errors.CommandFailedError, device_errors.CommandTimeoutError, |
| + OSError): |
| + return False |
| def FindAllAvailableDevices(_): |