Skip to content

Commit

Permalink
Make the status reporting of devices in status_check more verbose.
Browse files Browse the repository at this point in the history
Replaces the unknowns we keep seeing with either usb_failure, missing,
or offline.

missing: Shows up in lsusb but not adb.
usb_failure: Shows up in lsusb but can't reset the device via /dev/bus.
offline: Doesn't show up in lsusb or adb.

BUG=592666

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

Cr-Commit-Position: refs/heads/master@{#380028}
  • Loading branch information
bpastene authored and Commit bot committed Mar 9, 2016
1 parent 8aef985 commit b77e46b
Showing 1 changed file with 18 additions and 9 deletions.
27 changes: 18 additions & 9 deletions build/android/buildbot/bb_device_status_check.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ def blacklisting_device_status(device):
serial = device.adb.GetDeviceSerial()
adb_status = (
adb_devices[serial][1] if serial in adb_devices
else 'unknown')
else 'missing')
usb_status = bool(serial in usb_devices)

device_status = {
Expand All @@ -144,8 +144,8 @@ def blacklisting_device_status(device):
'usb_status': usb_status,
}

if adb_status == 'device':
if not _IsBlacklisted(serial, blacklist):
if not _IsBlacklisted(serial, blacklist):
if adb_status == 'device':
try:
build_product = device.build_product
build_id = device.build_id
Expand Down Expand Up @@ -184,8 +184,9 @@ def blacklisting_device_status(device):
if blacklist:
blacklist.Extend([serial], reason='status_check_timeout')

elif blacklist:
blacklist.Extend([serial], reason=adb_status)
elif blacklist:
blacklist.Extend([serial],
reason=adb_status if usb_status else 'offline')

device_status['blacklisted'] = _IsBlacklisted(serial, blacklist)

Expand All @@ -212,7 +213,7 @@ def RecoverDevices(devices, blacklist):
should_restart_usb = set(
status['serial'] for status in statuses
if (not status['usb_status']
or status['adb_status'] in ('offline', 'unknown')))
or status['adb_status'] in ('offline', 'missing')))
should_restart_adb = should_restart_usb.union(set(
status['serial'] for status in statuses
if status['adb_status'] == 'unauthorized'))
Expand All @@ -238,10 +239,14 @@ def RecoverDevices(devices, blacklist):
for serial in should_restart_usb:
try:
reset_usb.reset_android_usb(serial)
except (IOError, device_errors.DeviceUnreachableError):
except IOError:
logging.exception('Unable to reset USB for %s.', serial)
if blacklist:
blacklist.Extend([serial], reason='usb_failure')
except device_errors.DeviceUnreachableError:
logging.exception('Unable to reset USB for %s.', serial)
if blacklist:
blacklist.Extend([serial], reason='offline')

def blacklisting_recovery(device):
if _IsBlacklisted(device.adb.GetDeviceSerial(), blacklist):
Expand Down Expand Up @@ -395,11 +400,15 @@ def main():
temperature=float(status['battery']['temperature']) / 10,
level=status['battery']['level']
))
else:
f.write('{serial} {adb_status}'.format(
elif status.get('usb_status', False):
f.write('{serial} {adb_status}\n'.format(
serial=status['serial'],
adb_status=status['adb_status']
))
else:
f.write('{serial} offline\n'.format(
serial=status['serial']
))
except Exception: # pylint: disable=broad-except
pass

Expand Down

0 comments on commit b77e46b

Please sign in to comment.