0

[Android] Use more specific host platforms for devil.

BUG=566160,566170

Review URL: https://codereview.chromium.org/1501843002

Cr-Commit-Position: refs/heads/master@{#363488}
This commit is contained in:
jbudorick
2015-12-07 07:53:23 -08:00
committed by Commit bot
parent 14957bec25
commit e29693bed4
8 changed files with 63 additions and 24 deletions

1
.gitignore vendored

@ -57,6 +57,7 @@ v8.log
/ash/ash_unittests_run.xml /ash/ash_unittests_run.xml
/base/base_unittests_run.xml /base/base_unittests_run.xml
/breakpad/src/ /breakpad/src/
/build/android/bin
/build/Debug /build/Debug
/build/Debug_x64 /build/Debug_x64
/build/gomacc.lock /build/gomacc.lock

@ -41,6 +41,7 @@ class _BaseCommandFailedError(CommandFailedError):
message = ''.join(message) message = ''.join(message)
super(_BaseCommandFailedError, self).__init__(message, device_serial) super(_BaseCommandFailedError, self).__init__(message, device_serial)
class AdbCommandFailedError(_BaseCommandFailedError): class AdbCommandFailedError(_BaseCommandFailedError):
"""Exception for adb command failures.""" """Exception for adb command failures."""
@ -106,3 +107,11 @@ class NoDevicesError(base_error.BaseError):
def __init__(self): def __init__(self):
super(NoDevicesError, self).__init__( super(NoDevicesError, self).__init__(
'No devices attached.', is_infra_error=True) 'No devices attached.', is_infra_error=True)
class NoAdbError(base_error.BaseError):
"""Exception for being unable to find ADB."""
def __init__(self):
super(NoAdbError, self).__init__(
'Unable to find adb.', is_infra_error=True)

@ -58,7 +58,10 @@ def _FindAdb():
except dependency_manager.NoPathFoundError: except dependency_manager.NoPathFoundError:
pass pass
return devil_env.config.FetchPath('adb') try:
return devil_env.config.FetchPath('adb')
except dependency_manager.NoPathFoundError:
raise device_errors.NoAdbError()
DeviceStat = collections.namedtuple('DeviceStat', DeviceStat = collections.namedtuple('DeviceStat',

@ -5,7 +5,7 @@
"cloud_storage_bucket": "chromium-telemetry", "cloud_storage_bucket": "chromium-telemetry",
"cloud_storage_base_folder": "binary_dependencies", "cloud_storage_base_folder": "binary_dependencies",
"file_info": { "file_info": {
"android_host": { "android_linux2": {
"cloud_storage_hash": "7448de3cb5e834afdedeaad8b40ba63ac53f3dc4", "cloud_storage_hash": "7448de3cb5e834afdedeaad8b40ba63ac53f3dc4",
"download_path": "../bin/aapt" "download_path": "../bin/aapt"
} }
@ -15,7 +15,7 @@
"cloud_storage_bucket": "chromium-telemetry", "cloud_storage_bucket": "chromium-telemetry",
"cloud_storage_base_folder": "binary_dependencies", "cloud_storage_base_folder": "binary_dependencies",
"file_info": { "file_info": {
"android_host": { "android_linux2": {
"cloud_storage_hash": "0c2043552619c8ec8bb5d986ba75703a598611fc", "cloud_storage_hash": "0c2043552619c8ec8bb5d986ba75703a598611fc",
"download_path": "../bin/adb" "download_path": "../bin/adb"
} }
@ -25,7 +25,7 @@
"cloud_storage_bucket": "chromium-telemetry", "cloud_storage_bucket": "chromium-telemetry",
"cloud_storage_base_folder": "binary_dependencies", "cloud_storage_base_folder": "binary_dependencies",
"file_info": { "file_info": {
"android_host": { "android_linux2": {
"cloud_storage_hash": "52d150a7ccde835f38b4337392152f3013d5f303", "cloud_storage_hash": "52d150a7ccde835f38b4337392152f3013d5f303",
"download_path": "../bin/lib/libc++.so" "download_path": "../bin/lib/libc++.so"
} }
@ -35,7 +35,7 @@
"cloud_storage_bucket": "chromium-telemetry", "cloud_storage_bucket": "chromium-telemetry",
"cloud_storage_base_folder": "binary_dependencies", "cloud_storage_base_folder": "binary_dependencies",
"file_info": { "file_info": {
"android_host": { "android_linux2": {
"cloud_storage_hash": "38765b5b358c29003e56b1d214606ea13467b6fe", "cloud_storage_hash": "38765b5b358c29003e56b1d214606ea13467b6fe",
"download_path": "../bin/dexdump" "download_path": "../bin/dexdump"
} }
@ -59,7 +59,7 @@
"cloud_storage_bucket": "chromium-telemetry", "cloud_storage_bucket": "chromium-telemetry",
"cloud_storage_base_folder": "binary_dependencies", "cloud_storage_base_folder": "binary_dependencies",
"file_info": { "file_info": {
"android_host": { "android_linux2": {
"cloud_storage_hash": "b3dda9fbdd4a3fb933b64111c11070aa809c7ed4", "cloud_storage_hash": "b3dda9fbdd4a3fb933b64111c11070aa809c7ed4",
"download_path": "../bin/forwarder_host" "download_path": "../bin/forwarder_host"
} }
@ -87,7 +87,7 @@
"cloud_storage_bucket": "chromium-telemetry", "cloud_storage_bucket": "chromium-telemetry",
"cloud_storage_base_folder": "binary_dependencies", "cloud_storage_base_folder": "binary_dependencies",
"file_info": { "file_info": {
"android_host": { "android_linux2": {
"cloud_storage_hash": "49e36c9c4246cfebef26cbd07436c1a8343254aa", "cloud_storage_hash": "49e36c9c4246cfebef26cbd07436c1a8343254aa",
"download_path": "../bin/md5sum_host" "download_path": "../bin/md5sum_host"
} }
@ -95,7 +95,17 @@
}, },
"pymock": { "pymock": {
"file_info": { "file_info": {
"android_host": { "android_darwin": {
"local_paths": [
"../../../tools/telemetry/third_party/mock"
]
},
"android_linux2": {
"local_paths": [
"../../../tools/telemetry/third_party/mock"
]
},
"android_win32": {
"local_paths": [ "local_paths": [
"../../../tools/telemetry/third_party/mock" "../../../tools/telemetry/third_party/mock"
] ]
@ -106,7 +116,7 @@
"cloud_storage_bucket": "chromium-telemetry", "cloud_storage_bucket": "chromium-telemetry",
"cloud_storage_base_folder": "binary_dependencies", "cloud_storage_base_folder": "binary_dependencies",
"file_info": { "file_info": {
"android_host": { "android_linux2": {
"cloud_storage_hash": "3327881fa3951a503b9467425ea8e781cdffeb9f", "cloud_storage_hash": "3327881fa3951a503b9467425ea8e781cdffeb9f",
"download_path": "../bin/split-select" "download_path": "../bin/split-select"
} }

@ -37,11 +37,11 @@ _DEVIL_DEFAULT_CONFIG = os.path.abspath(os.path.join(
_LEGACY_ENVIRONMENT_VARIABLES = { _LEGACY_ENVIRONMENT_VARIABLES = {
'ADB_PATH': { 'ADB_PATH': {
'dependency_name': 'adb', 'dependency_name': 'adb',
'platform': 'android_host', 'platform': 'android_linux2',
}, },
'ANDROID_SDK_ROOT': { 'ANDROID_SDK_ROOT': {
'dependency_name': 'android_sdk', 'dependency_name': 'android_sdk',
'platform': 'android_host', 'platform': 'android_linux2',
}, },
} }
@ -120,17 +120,17 @@ class _Environment(object):
self.Initialize() self.Initialize()
if dependency in _ANDROID_BUILD_TOOLS: if dependency in _ANDROID_BUILD_TOOLS:
self.FetchPath('android_build_tools_libc++', arch=arch, device=device) self.FetchPath('android_build_tools_libc++', arch=arch, device=device)
return self._dm.FetchPath(dependency, _GetPlatform(arch, device)) return self._dm.FetchPath(dependency, GetPlatform(arch, device))
def LocalPath(self, dependency, arch=None, device=None): def LocalPath(self, dependency, arch=None, device=None):
if self._dm is None: if self._dm is None:
self.Initialize() self.Initialize()
return self._dm.LocalPath(dependency, _GetPlatform(arch, device)) return self._dm.LocalPath(dependency, GetPlatform(arch, device))
def _GetPlatform(arch, device): def GetPlatform(arch=None, device=None):
if not arch: if not arch:
arch = device.product_cpu_abi if device else 'host' arch = device.product_cpu_abi if device else sys.platform
return 'android_%s' % arch return 'android_%s' % arch

@ -3,7 +3,7 @@
"dependencies": { "dependencies": {
"aapt": { "aapt": {
"file_info": { "file_info": {
"android_host": { "android_linux2": {
"local_paths": [ "local_paths": [
"../../third_party/android_tools/sdk/build-tools/23.0.0/aapt" "../../third_party/android_tools/sdk/build-tools/23.0.0/aapt"
] ]
@ -12,7 +12,7 @@
}, },
"adb": { "adb": {
"file_info": { "file_info": {
"android_host": { "android_linux2": {
"local_paths": [ "local_paths": [
"../../third_party/android_tools/sdk/platform-tools/adb" "../../third_party/android_tools/sdk/platform-tools/adb"
] ]
@ -21,7 +21,7 @@
}, },
"android_sdk": { "android_sdk": {
"file_info": { "file_info": {
"android_host": { "android_linux2": {
"local_paths": [ "local_paths": [
"../../third_party/android_tools/sdk" "../../third_party/android_tools/sdk"
] ]
@ -30,7 +30,7 @@
}, },
"dexdump": { "dexdump": {
"file_info": { "file_info": {
"android_host": { "android_linux2": {
"local_paths": [ "local_paths": [
"../../third_party/android_tools/sdk/build-tools/23.0.0/dexdump" "../../third_party/android_tools/sdk/build-tools/23.0.0/dexdump"
] ]
@ -39,7 +39,7 @@
}, },
"split-select": { "split-select": {
"file_info": { "file_info": {
"android_host": { "android_linux2": {
"local_paths": [ "local_paths": [
"../../third_party/android_tools/sdk/build-tools/23.0.0/split-select" "../../third_party/android_tools/sdk/build-tools/23.0.0/split-select"
] ]
@ -48,7 +48,17 @@
}, },
"pymock": { "pymock": {
"file_info": { "file_info": {
"android_host": { "android_darwin": {
"local_paths": [
"../../third_party/pymock"
]
},
"android_linux2": {
"local_paths": [
"../../third_party/pymock"
]
},
"android_win32": {
"local_paths": [ "local_paths": [
"../../third_party/pymock" "../../third_party/pymock"
] ]

@ -19,6 +19,7 @@ import unittest
import devil_chromium import devil_chromium
from devil import base_error from devil import base_error
from devil import devil_env
from devil.android import apk_helper from devil.android import apk_helper
from devil.android import device_blacklist from devil.android import device_blacklist
from devil.android import device_errors from devil.android import device_errors
@ -122,7 +123,7 @@ def ProcessCommonOptions(args):
if args.adb_path: if args.adb_path:
devil_custom_deps = { devil_custom_deps = {
'adb': { 'adb': {
'android_host': [args.adb_path] devil_env.GetPlatform(): [args.adb_path]
} }
} }

@ -13,7 +13,7 @@ from telemetry.internal.platform.profiler import monsoon
from devil.android import device_blacklist from devil.android import device_blacklist
from devil.android import device_errors from devil.android import device_errors
from devil.android import device_utils from devil.android import device_utils
from pylib import constants from devil.android.sdk import adb_wrapper
class AndroidDevice(device.Device): class AndroidDevice(device.Device):
@ -132,9 +132,14 @@ def CanDiscoverDevices():
if os.name != 'posix': if os.name != 'posix':
return False return False
adb_path = constants.GetAdbPath() try:
adb_path = adb_wrapper.AdbWrapper.GetAdbPath()
except device_errors.NoAdbError:
return False
if os.path.isabs(adb_path) and not os.path.exists(adb_path): if os.path.isabs(adb_path) and not os.path.exists(adb_path):
return False return False
try: try:
with open(os.devnull, 'w') as devnull: with open(os.devnull, 'w') as devnull:
adb_process = subprocess.Popen( adb_process = subprocess.Popen(