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

Side by Side Diff: build/android/provision_devices.py

Issue 945883003: [Android] Convert battery utilities to DeviceUtils. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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
« no previous file with comments | « no previous file | build/android/pylib/device/device_utils.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright (c) 2013 The Chromium Authors. All rights reserved. 3 # Copyright (c) 2013 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 """Provisions Android devices with settings required for bots. 7 """Provisions Android devices with settings required for bots.
8 8
9 Usage: 9 Usage:
10 ./provision_devices.py [-d <device serial number>] 10 ./provision_devices.py [-d <device serial number>]
11 """ 11 """
12 12
13 import argparse 13 import argparse
14 import logging 14 import logging
15 import os 15 import os
16 import re 16 import re
17 import subprocess 17 import subprocess
18 import sys 18 import sys
19 import time 19 import time
20 20
21 from pylib import android_commands 21 from pylib import android_commands
22 from pylib import constants 22 from pylib import constants
23 from pylib import device_settings 23 from pylib import device_settings
24 from pylib.device import device_blacklist 24 from pylib.device import device_blacklist
25 from pylib.device import device_errors 25 from pylib.device import device_errors
26 from pylib.device import device_utils 26 from pylib.device import device_utils
27 from pylib.utils import run_tests_helper 27 from pylib.utils import run_tests_helper
28 from pylib.utils import timeout_retry
28 29
29 sys.path.append(os.path.join(constants.DIR_SOURCE_ROOT, 30 sys.path.append(os.path.join(constants.DIR_SOURCE_ROOT,
30 'third_party', 'android_testrunner')) 31 'third_party', 'android_testrunner'))
31 import errors 32 import errors
32 33
33 34
34 class _DEFAULT_TIMEOUTS(object): 35 class _DEFAULT_TIMEOUTS(object):
35 # L can take a while to reboot after a wipe. 36 # L can take a while to reboot after a wipe.
36 LOLLIPOP = 600 37 LOLLIPOP = 600
37 PRE_LOLLIPOP = 180 38 PRE_LOLLIPOP = 180
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 # We can safely ignore the exception because we don't expect adb_reboot 78 # We can safely ignore the exception because we don't expect adb_reboot
78 # to be running. 79 # to be running.
79 pass 80 pass
80 # Push adb_reboot 81 # Push adb_reboot
81 logging.info(' Pushing adb_reboot ...') 82 logging.info(' Pushing adb_reboot ...')
82 adb_reboot = os.path.join(constants.DIR_SOURCE_ROOT, 83 adb_reboot = os.path.join(constants.DIR_SOURCE_ROOT,
83 'out/%s/adb_reboot' % target) 84 'out/%s/adb_reboot' % target)
84 device.PushChangedFiles([(adb_reboot, '/data/local/tmp/')]) 85 device.PushChangedFiles([(adb_reboot, '/data/local/tmp/')])
85 # Launch adb_reboot 86 # Launch adb_reboot
86 logging.info(' Launching adb_reboot ...') 87 logging.info(' Launching adb_reboot ...')
87 device.old_interface.GetAndroidToolStatusAndOutput( 88 device.RunShellCommand([
88 '/data/local/tmp/adb_reboot') 89 device.GetDevicePieWrapper(),
90 '/data/local/tmp/adb_reboot'])
89 91
90 92
91 def _ConfigureLocalProperties(device, java_debug=True): 93 def _ConfigureLocalProperties(device, java_debug=True):
92 """Set standard readonly testing device properties prior to reboot.""" 94 """Set standard readonly testing device properties prior to reboot."""
93 local_props = [ 95 local_props = [
94 'persist.sys.usb.config=adb', 96 'persist.sys.usb.config=adb',
95 'ro.monkey=1', 97 'ro.monkey=1',
96 'ro.test_harness=1', 98 'ro.test_harness=1',
97 'ro.audio.silent=1', 99 'ro.audio.silent=1',
98 'ro.setupwizard.mode=DISABLED', 100 'ro.setupwizard.mode=DISABLED',
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 144
143 def WipeDeviceIfPossible(device, timeout): 145 def WipeDeviceIfPossible(device, timeout):
144 try: 146 try:
145 device.EnableRoot() 147 device.EnableRoot()
146 WipeDeviceData(device) 148 WipeDeviceData(device)
147 device.Reboot(True, timeout=timeout, retries=0) 149 device.Reboot(True, timeout=timeout, retries=0)
148 except (errors.DeviceUnresponsiveError, device_errors.CommandFailedError): 150 except (errors.DeviceUnresponsiveError, device_errors.CommandFailedError):
149 pass 151 pass
150 152
151 153
154 def ChargeDeviceToLevel(device, level):
155 def device_charged():
156 battery_level = device.GetBatteryInfo().get('level')
157 if battery_level is None:
158 logging.warning('Unable to find current battery level.')
159 battery_level = 100
160 else:
161 logging.info('current battery level: %d', battery_level)
162 battery_level = int(battery_level)
163 return battery_level >= level
164
165 timeout_retry.WaitFor(device_charged, wait_period=60)
166
167
152 def ProvisionDevice(device, options): 168 def ProvisionDevice(device, options):
153 if options.reboot_timeout: 169 if options.reboot_timeout:
154 reboot_timeout = options.reboot_timeout 170 reboot_timeout = options.reboot_timeout
155 elif (device.build_version_sdk >= 171 elif (device.build_version_sdk >=
156 constants.ANDROID_SDK_VERSION_CODES.LOLLIPOP): 172 constants.ANDROID_SDK_VERSION_CODES.LOLLIPOP):
157 reboot_timeout = _DEFAULT_TIMEOUTS.LOLLIPOP 173 reboot_timeout = _DEFAULT_TIMEOUTS.LOLLIPOP
158 else: 174 else:
159 reboot_timeout = _DEFAULT_TIMEOUTS.PRE_LOLLIPOP 175 reboot_timeout = _DEFAULT_TIMEOUTS.PRE_LOLLIPOP
160 176
161 try: 177 try:
(...skipping 11 matching lines...) Expand all
173 device, device_settings.DISABLE_LOCATION_SETTINGS) 189 device, device_settings.DISABLE_LOCATION_SETTINGS)
174 else: 190 else:
175 device_settings.ConfigureContentSettings( 191 device_settings.ConfigureContentSettings(
176 device, device_settings.ENABLE_LOCATION_SETTINGS) 192 device, device_settings.ENABLE_LOCATION_SETTINGS)
177 device_settings.SetLockScreenSettings(device) 193 device_settings.SetLockScreenSettings(device)
178 if options.disable_network: 194 if options.disable_network:
179 device_settings.ConfigureContentSettings( 195 device_settings.ConfigureContentSettings(
180 device, device_settings.NETWORK_DISABLED_SETTINGS) 196 device, device_settings.NETWORK_DISABLED_SETTINGS)
181 if options.min_battery_level is not None: 197 if options.min_battery_level is not None:
182 try: 198 try:
183 battery_info = device.old_interface.GetBatteryInfo() 199 device.SetUsbCharging(True)
184 except Exception as e: 200 ChargeDeviceToLevel(device, options.min_battery_level)
185 battery_info = {} 201 except device_errors.CommandFailedError as e:
186 logging.error('Unable to obtain battery info for %s, %s', 202 logging.exception('Unable to charge device to specified level.')
187 str(device), e)
188 203
189 while int(battery_info.get('level', 100)) < options.min_battery_level:
190 if not device.old_interface.IsDeviceCharging():
191 if device.old_interface.CanControlUsbCharging():
192 device.old_interface.EnableUsbCharging()
193 else:
194 logging.error('Device is not charging')
195 break
196 logging.info('Waiting for device to charge. Current level=%s',
197 battery_info.get('level', 0))
198 time.sleep(60)
199 battery_info = device.old_interface.GetBatteryInfo()
200 if not options.skip_wipe: 204 if not options.skip_wipe:
201 device.Reboot(True, timeout=reboot_timeout, retries=0) 205 device.Reboot(True, timeout=reboot_timeout, retries=0)
202 device.RunShellCommand('date -s %s' % time.strftime('%Y%m%d.%H%M%S', 206 device.RunShellCommand('date -s %s' % time.strftime('%Y%m%d.%H%M%S',
203 time.gmtime()), 207 time.gmtime()),
204 as_root=True) 208 as_root=True)
205 props = device.RunShellCommand('getprop') 209 props = device.RunShellCommand('getprop')
206 for prop in props: 210 for prop in props:
207 logging.info(' %s' % prop) 211 logging.info(' %s' % prop)
208 if options.auto_reconnect: 212 if options.auto_reconnect:
209 PushAndLaunchAdbReboot(device, options.target) 213 PushAndLaunchAdbReboot(device, options.target)
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 help='push binary which will reboot the device on adb' 281 help='push binary which will reboot the device on adb'
278 ' disconnections') 282 ' disconnections')
279 args = parser.parse_args() 283 args = parser.parse_args()
280 constants.SetBuildType(args.target) 284 constants.SetBuildType(args.target)
281 285
282 return ProvisionDevices(args) 286 return ProvisionDevices(args)
283 287
284 288
285 if __name__ == '__main__': 289 if __name__ == '__main__':
286 sys.exit(main()) 290 sys.exit(main())
OLDNEW
« no previous file with comments | « no previous file | build/android/pylib/device/device_utils.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698