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

Unified Diff: build/android/buildbot/bb_device_status_check.py

Issue 38483002: Add sleep after restarting usb ports and before checking for devices. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase (KillAdb before RestartUsb). Created 7 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/buildbot/bb_device_status_check.py
diff --git a/build/android/buildbot/bb_device_status_check.py b/build/android/buildbot/bb_device_status_check.py
index b43ee0a99b9f189d3343639cdd8015bc4b9782a6..a021bfc892b1136e13951f486db1d70ac02802ad 100755
--- a/build/android/buildbot/bb_device_status_check.py
+++ b/build/android/buildbot/bb_device_status_check.py
@@ -9,11 +9,12 @@ import logging
import optparse
import os
import psutil
+import re
import signal
import smtplib
import subprocess
import sys
-import re
+import time
import urllib
import bb_annotations
@@ -111,6 +112,26 @@ def DeviceInfo(serial, options):
return device_type, device_build, battery_level, full_report, errors, True
+def GetLastDevices(out_dir):
+ """Returns a list of devices that have been seen on the bot.
+
+ Args:
+ options: out_dir parameter of options argument is used as the base
+ directory to load and update the cache file.
+
+ Returns: List of device serial numbers that were on the bot.
+ """
+ devices_path = os.path.join(out_dir, '.last_devices')
+ devices = []
+ try:
+ with open(devices_path) as f:
+ devices = f.read().splitlines()
+ except IOError:
+ # Ignore error, file might not exist
+ pass
+ return devices
+
+
def CheckForMissingDevices(options, adb_online_devs):
"""Uses file of previous online devices to detect broken phones.
@@ -127,17 +148,6 @@ def CheckForMissingDevices(options, adb_online_devs):
out_dir = os.path.abspath(options.out_dir)
- def ReadDeviceList(file_name):
- devices_path = os.path.join(out_dir, file_name)
- devices = []
- try:
- with open(devices_path) as f:
- devices = f.read().splitlines()
- except IOError:
- # Ignore error, file might not exist
- pass
- return devices
-
def WriteDeviceList(file_name, device_list):
path = os.path.join(out_dir, file_name)
if not os.path.exists(out_dir):
@@ -147,7 +157,7 @@ def CheckForMissingDevices(options, adb_online_devs):
f.write('\n'.join(set(device_list)))
last_devices_path = os.path.join(out_dir, '.last_devices')
- last_devices = ReadDeviceList('.last_devices')
+ last_devices = GetLastDevices(out_dir)
missing_devs = list(set(last_devices) - set(adb_online_devs))
all_known_devices = list(set(adb_online_devs) | set(last_devices))
@@ -277,10 +287,20 @@ def main():
parser.error('Unknown options %s' % args)
if options.restart_usb:
- KillAllAdb()
- rc = RestartUsb()
- if rc:
- return 1
+ expected_devices = GetLastDevices(os.path.abspath(options.out_dir))
+ devices = android_commands.GetAttachedDevices()
+ # Only restart usb if devices are missing
+ if set(expected_devices) != set(devices):
+ KillAllAdb()
+ if RestartUsb():
+ return 1
+ retries = 5
+ while retries:
+ time.sleep(1)
+ devices = android_commands.GetAttachedDevices()
+ if set(expected_devices) == set(devices):
+ break
+ retries -= 1
devices = android_commands.GetAttachedDevices()
# TODO(navabi): Test to make sure this fails and then fix call
« 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