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(_): |