Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(555)

Side by Side Diff: tools/telemetry/telemetry/internal/platform/android_device.py

Issue 1292053006: Revert of [Android] Add --blacklist-file as a command-line option. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 import logging 4 import logging
5 import os 5 import os
6 import re 6 import re
7 import subprocess 7 import subprocess
8 8
9 from telemetry.core import util 9 from telemetry.core import util
10 from telemetry.internal.platform import device 10 from telemetry.internal.platform import device
11 from telemetry.internal.platform.profiler import monsoon 11 from telemetry.internal.platform.profiler import monsoon
12 12
13 util.AddDirToPythonPath(util.GetChromiumSrcDir(), 'build', 'android') 13 util.AddDirToPythonPath(util.GetChromiumSrcDir(), 'build', 'android')
14 from pylib import constants 14 from pylib import constants
15 from pylib.device import device_blacklist
16 from pylib.device import device_errors 15 from pylib.device import device_errors
17 from pylib.device import device_utils 16 from pylib.device import device_utils
18 17
19 18
20 class AndroidDevice(device.Device): 19 class AndroidDevice(device.Device):
21 """ Class represents information for connecting to an android device. 20 """ Class represents information for connecting to an android device.
22 21
23 Attributes: 22 Attributes:
24 device_id: the device's serial string created by adb to uniquely 23 device_id: the device's serial string created by adb to uniquely
25 identify an emulator/device instance. This string can be found by running 24 identify an emulator/device instance. This string can be found by running
26 'adb devices' command 25 'adb devices' command
27 enable_performance_mode: when this is set to True, android platform will be 26 enable_performance_mode: when this is set to True, android platform will be
28 set to high performance mode after browser is started. 27 set to high performance mode after browser is started.
29 """ 28 """
30 def __init__(self, device_id, enable_performance_mode=True): 29 def __init__(self, device_id, enable_performance_mode=True):
31 super(AndroidDevice, self).__init__( 30 super(AndroidDevice, self).__init__(
32 name='Android device %s' % device_id, guid=device_id) 31 name='Android device %s' % device_id, guid=device_id)
33 self._device_id = device_id 32 self._device_id = device_id
34 self._enable_performance_mode = enable_performance_mode 33 self._enable_performance_mode = enable_performance_mode
35 34
36 @classmethod 35 @classmethod
37 def GetAllConnectedDevices(cls, blacklist): 36 def GetAllConnectedDevices(cls):
38 device_serials = GetDeviceSerials(blacklist) 37 device_serials = GetDeviceSerials()
39 return [cls(s) for s in device_serials] 38 return [cls(s) for s in device_serials]
40 39
41 @property 40 @property
42 def device_id(self): 41 def device_id(self):
43 return self._device_id 42 return self._device_id
44 43
45 @property 44 @property
46 def enable_performance_mode(self): 45 def enable_performance_mode(self):
47 return self._enable_performance_mode 46 return self._enable_performance_mode
48 47
49 48
50 def _ListSerialsOfHealthyOnlineDevices(blacklist): 49 def _ListSerialsOfHealthyOnlineDevices():
51 return [d.adb.GetDeviceSerial() 50 return [d.adb.GetDeviceSerial()
52 for d in device_utils.DeviceUtils.HealthyDevices(blacklist) 51 for d in device_utils.DeviceUtils.HealthyDevices() if
53 if d.IsOnline()] 52 d.IsOnline()]
54 53
55 54
56 def GetDeviceSerials(blacklist): 55 def GetDeviceSerials():
57 """Return the list of device serials of healthy devices. 56 """Return the list of device serials of healthy devices.
58 57
59 If a preferred device has been set with ANDROID_SERIAL, it will be first in 58 If a preferred device has been set with ANDROID_SERIAL, it will be first in
60 the returned list. The arguments specify what devices to include in the list. 59 the returned list. The arguments specify what devices to include in the list.
61 """ 60 """
62 61
63 device_serials = _ListSerialsOfHealthyOnlineDevices(blacklist) 62 device_serials = _ListSerialsOfHealthyOnlineDevices()
64 63
65 # The monsoon provides power for the device, so for devices with no 64 # The monsoon provides power for the device, so for devices with no
66 # real battery, we need to turn them on after the monsoon enables voltage 65 # real battery, we need to turn them on after the monsoon enables voltage
67 # output to the device. 66 # output to the device.
68 if not device_serials: 67 if not device_serials:
69 try: 68 try:
70 m = monsoon.Monsoon(wait=False) 69 m = monsoon.Monsoon(wait=False)
71 m.SetUsbPassthrough(1) 70 m.SetUsbPassthrough(1)
72 m.SetVoltage(3.8) 71 m.SetVoltage(3.8)
73 m.SetMaxCurrent(8) 72 m.SetMaxCurrent(8)
74 logging.warn(""" 73 logging.warn("""
75 Monsoon power monitor detected, but no Android devices. 74 Monsoon power monitor detected, but no Android devices.
76 75
77 The Monsoon's power output has been enabled. Please now ensure that: 76 The Monsoon's power output has been enabled. Please now ensure that:
78 77
79 1. The Monsoon's front and back USB are connected to the host. 78 1. The Monsoon's front and back USB are connected to the host.
80 2. The device is connected to the Monsoon's main and USB channels. 79 2. The device is connected to the Monsoon's main and USB channels.
81 3. The device is turned on. 80 3. The device is turned on.
82 81
83 Waiting for device... 82 Waiting for device...
84 """) 83 """)
85 util.WaitFor(_ListSerialsOfHealthyOnlineDevices(blacklist), 600) 84 util.WaitFor(_ListSerialsOfHealthyOnlineDevices(), 600)
86 device_serials = _ListSerialsOfHealthyOnlineDevices(blacklist) 85 device_serials = _ListSerialsOfHealthyOnlineDevices()
87 except IOError: 86 except IOError:
88 return [] 87 return []
89 88
90 preferred_device = os.environ.get('ANDROID_SERIAL') 89 preferred_device = os.environ.get('ANDROID_SERIAL')
91 if preferred_device in device_serials: 90 if preferred_device in device_serials:
92 logging.warn( 91 logging.warn(
93 'ANDROID_SERIAL is defined. Put %s in the first of the' 92 'ANDROID_SERIAL is defined. Put %s in the first of the'
94 'discovered devices list.' % preferred_device) 93 'discovered devices list.' % preferred_device)
95 device_serials.remove(preferred_device) 94 device_serials.remove(preferred_device)
96 device_serials.insert(0, preferred_device) 95 device_serials.insert(0, preferred_device)
97 return device_serials 96 return device_serials
98 97
99 98
100 def GetDevice(finder_options): 99 def GetDevice(finder_options):
101 """Return a Platform instance for the device specified by |finder_options|.""" 100 """Return a Platform instance for the device specified by |finder_options|."""
102 if not CanDiscoverDevices(): 101 if not CanDiscoverDevices():
103 logging.info( 102 logging.info(
104 'No adb command found. Will not try searching for Android browsers.') 103 'No adb command found. Will not try searching for Android browsers.')
105 return None 104 return None
106 105
107 if (finder_options.device 106 if finder_options.device and finder_options.device in GetDeviceSerials():
108 and finder_options.device in GetDeviceSerials(finder_options)):
109 return AndroidDevice( 107 return AndroidDevice(
110 finder_options.device, 108 finder_options.device,
111 enable_performance_mode=not finder_options.no_performance_mode) 109 enable_performance_mode=not finder_options.no_performance_mode)
112 110
113 if finder_options.android_blacklist_file: 111 devices = AndroidDevice.GetAllConnectedDevices()
114 blacklist = device_blacklist.Blacklist(
115 finder_options.android_blacklist_file)
116 else:
117 blacklist = None
118
119 devices = AndroidDevice.GetAllConnectedDevices(blacklist)
120 if len(devices) == 0: 112 if len(devices) == 0:
121 logging.info('No android devices found.') 113 logging.info('No android devices found.')
122 return None 114 return None
123 if len(devices) > 1: 115 if len(devices) > 1:
124 logging.warn( 116 logging.warn(
125 'Multiple devices attached. Please specify one of the following:\n' + 117 'Multiple devices attached. Please specify one of the following:\n' +
126 '\n'.join([' --device=%s' % d.device_id for d in devices])) 118 '\n'.join([' --device=%s' % d.device_id for d in devices]))
127 return None 119 return None
128 return devices[0] 120 return devices[0]
129 121
(...skipping 13 matching lines...) Expand all
143 logging.warn('adb devices gave a permissions error. ' 135 logging.warn('adb devices gave a permissions error. '
144 'Consider running adb as root:') 136 'Consider running adb as root:')
145 logging.warn(' adb kill-server') 137 logging.warn(' adb kill-server')
146 logging.warn(' sudo `which adb` devices\n\n') 138 logging.warn(' sudo `which adb` devices\n\n')
147 return True 139 return True
148 except OSError: 140 except OSError:
149 pass 141 pass
150 try: 142 try:
151 os.environ['PATH'] = os.pathsep.join( 143 os.environ['PATH'] = os.pathsep.join(
152 [os.path.dirname(adb_path), os.environ['PATH']]) 144 [os.path.dirname(adb_path), os.environ['PATH']])
153 device_utils.DeviceUtils.HealthyDevices(None) 145 device_utils.DeviceUtils.HealthyDevices()
154 return True 146 return True
155 except (device_errors.CommandFailedError, device_errors.CommandTimeoutError, 147 except (device_errors.CommandFailedError, device_errors.CommandTimeoutError,
156 OSError): 148 OSError):
157 return False 149 return False
158 150
159 151
160 def FindAllAvailableDevices(options): 152 def FindAllAvailableDevices(_):
161 """Returns a list of available devices. 153 """Returns a list of available devices.
162 """ 154 """
163 if options.android_blacklist_file:
164 blacklist = device_blacklist.Blacklist(options.android_blacklist_file)
165 else:
166 blacklist = None
167
168 if not CanDiscoverDevices(): 155 if not CanDiscoverDevices():
169 return [] 156 return []
170 else: 157 else:
171 return AndroidDevice.GetAllConnectedDevices(blacklist) 158 return AndroidDevice.GetAllConnectedDevices()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698