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

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

Issue 16950029: Turn off devices with low battery and don't fail device status step. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add TODO to use android_commands. Created 7 years, 6 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 | no next file » | 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) 2012 The Chromium Authors. All rights reserved. 3 # Copyright (c) 2012 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 """A class to keep track of devices across builds and report state.""" 7 """A class to keep track of devices across builds and report state."""
8 import logging 8 import logging
9 import optparse 9 import optparse
10 import os 10 import os
(...skipping 15 matching lines...) Expand all
26 26
27 Returns: 27 Returns:
28 Tuple of device type, build id, report as a string, error messages, and 28 Tuple of device type, build id, report as a string, error messages, and
29 boolean indicating whether or not device can be used for testing. 29 boolean indicating whether or not device can be used for testing.
30 """ 30 """
31 31
32 def AdbShellCmd(cmd): 32 def AdbShellCmd(cmd):
33 return GetCmdOutput('adb -s %s shell %s' % (serial, cmd), 33 return GetCmdOutput('adb -s %s shell %s' % (serial, cmd),
34 shell=True).strip() 34 shell=True).strip()
35 35
36 device_adb = android_commands.AndroidCommands(serial)
37
38 # TODO(navabi): Replace AdbShellCmd with device_adb.
36 device_type = AdbShellCmd('getprop ro.build.product') 39 device_type = AdbShellCmd('getprop ro.build.product')
37 device_build = AdbShellCmd('getprop ro.build.id') 40 device_build = AdbShellCmd('getprop ro.build.id')
38 device_build_type = AdbShellCmd('getprop ro.build.type') 41 device_build_type = AdbShellCmd('getprop ro.build.type')
39 device_product_name = AdbShellCmd('getprop ro.product.name') 42 device_product_name = AdbShellCmd('getprop ro.product.name')
40 43
41 setup_wizard_disabled = AdbShellCmd( 44 setup_wizard_disabled = AdbShellCmd(
42 'getprop ro.setupwizard.mode') == 'DISABLED' 45 'getprop ro.setupwizard.mode') == 'DISABLED'
43 battery = AdbShellCmd('dumpsys battery') 46 battery = AdbShellCmd('dumpsys battery')
44 install_output = GetCmdOutput( 47 install_output = GetCmdOutput(
45 ['%s/build/android/adb_install_apk.py' % constants.DIR_SOURCE_ROOT, '--apk', 48 ['%s/build/android/adb_install_apk.py' % constants.DIR_SOURCE_ROOT, '--apk',
(...skipping 18 matching lines...) Expand all
64 ' Battery temp: %s' % battery_temp, 67 ' Battery temp: %s' % battery_temp,
65 ' IMEI slice: %s' % AdbShellCmd('dumpsys iphonesubinfo ' 68 ' IMEI slice: %s' % AdbShellCmd('dumpsys iphonesubinfo '
66 '| grep Device' 69 '| grep Device'
67 "| awk '{print $4}'")[-6:], 70 "| awk '{print $4}'")[-6:],
68 ' Wifi IP: %s' % AdbShellCmd('getprop dhcp.wlan0.ipaddress'), 71 ' Wifi IP: %s' % AdbShellCmd('getprop dhcp.wlan0.ipaddress'),
69 ' Install Speed: %s KB/s' % install_speed, 72 ' Install Speed: %s KB/s' % install_speed,
70 ''] 73 '']
71 74
72 errors = [] 75 errors = []
73 if battery_level < 15: 76 if battery_level < 15:
74 errors += ['Device critically low in battery. Do not use for testing.'] 77 errors += ['Device critically low in battery. Turning off device.']
75 if not setup_wizard_disabled and device_build_type != 'user': 78 if not setup_wizard_disabled and device_build_type != 'user':
76 errors += ['Setup wizard not disabled. Was it provisioned correctly?'] 79 errors += ['Setup wizard not disabled. Was it provisioned correctly?']
77 if device_product_name == 'mantaray' and ac_power != 'true': 80 if device_product_name == 'mantaray' and ac_power != 'true':
78 errors += ['Mantaray device not connected to AC power.'] 81 errors += ['Mantaray device not connected to AC power.']
79 # TODO(navabi): Insert warning once we have a better handle of what install 82 # TODO(navabi): Insert warning once we have a better handle of what install
80 # speeds to expect. The following lines were causing too many alerts. 83 # speeds to expect. The following lines were causing too many alerts.
81 # if install_speed < 500: 84 # if install_speed < 500:
82 # errors += ['Device install speed too low. Do not use for testing.'] 85 # errors += ['Device install speed too low. Do not use for testing.']
83 86
84 # TODO(navabi): Determine if device status check step should fail on slow 87 # Causing the device status check step fail for slow install speed or low
85 # install speed. The original CL caused the step to fail but was reverted 88 # battery currently is too disruptive to the bots (especially try bots).
86 # because it caused too many early failures. Determine if it was just flake. 89 # Turn off devices with low battery and the step does not fail.
87 # Also, do not fail on 'Unknown' caused by offline device, because other 90 if battery_level < 15:
88 # devices can still be used for tests. 91 device_adb.EnableAdbRoot()
89 fail_step = (battery_level == 'Unknown' or battery_level >= 15) 92 AdbShellCmd('reboot -p')
90 return device_type, device_build, '\n'.join(report), errors, fail_step 93 return device_type, device_build, '\n'.join(report), errors, True
91 94
92 95
93 def CheckForMissingDevices(options, adb_online_devs): 96 def CheckForMissingDevices(options, adb_online_devs):
94 """Uses file of previous online devices to detect broken phones. 97 """Uses file of previous online devices to detect broken phones.
95 98
96 Args: 99 Args:
97 options: out_dir parameter of options argument is used as the base 100 options: out_dir parameter of options argument is used as the base
98 directory to load and update the cache file. 101 directory to load and update the cache file.
99 adb_online_devs: A list of serial numbers of the currently visible 102 adb_online_devs: A list of serial numbers of the currently visible
100 and online attached devices. 103 and online attached devices.
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 # devices with critically low battery or install speed. Remove those devices 221 # devices with critically low battery or install speed. Remove those devices
219 # from testing, allowing build to continue with good devices. 222 # from testing, allowing build to continue with good devices.
220 return 1 223 return 1
221 224
222 if not devices: 225 if not devices:
223 return 1 226 return 1
224 227
225 228
226 if __name__ == '__main__': 229 if __name__ == '__main__':
227 sys.exit(main()) 230 sys.exit(main())
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698