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 a3b83415b3c21b90a1c90898818cd95517540125..9290456fa4cec08df61cf978224637c6dc9790fd 100755 |
--- a/build/android/buildbot/bb_device_status_check.py |
+++ b/build/android/buildbot/bb_device_status_check.py |
@@ -125,19 +125,40 @@ def CheckForMissingDevices(options, adb_online_devs): |
out_dir = os.path.abspath(options.out_dir) |
+ # last_devices denotes all known devices prior to this run |
last_devices_path = os.path.join(out_dir, device_list.LAST_DEVICES_FILENAME) |
+ last_missing_devices_path = os.path.join(out_dir, |
+ device_list.LAST_MISSING_DEVICES_FILENAME) |
try: |
last_devices = device_list.GetPersistentDeviceList(last_devices_path) |
except IOError: |
# Ignore error, file might not exist |
last_devices = [] |
+ |
+ try: |
+ last_missing_devices = device_list.GetPersistentDeviceList( |
+ last_missing_devices_path) |
+ except IOError: |
+ last_missing_devices = [] |
+ |
missing_devs = list(set(last_devices) - set(adb_online_devs)) |
friedman1
2014/06/13 00:31:55
If you keep these as a set you can use better oper
|
+ new_missing_devs = list(set(missing_devs) - set(last_missing_devices)) |
+ |
+ if new_missing_devs: |
+ logging.info('new_missing_devs %s' % new_missing_devs) |
+ devices_missing_msg = '%d devices not detected.' % len(missing_devs) |
+ bb_annotations.PrintSummaryText(devices_missing_msg) |
+ |
+ from_address = 'chrome-bot@google.com' |
+ to_address = 'chrome-labs-tech-ticket@google.com' |
+ subject = 'Devices offline on %s' % os.environ.get('BUILDBOT_SLAVENAME') |
+ msg = ('Please reboot the following devices:\n%s' % |
+ '\n'.join(map(str,new_missing_devs))) |
+ SendEmail(from_address, to_address, subject, msg) |
all_known_devices = list(set(adb_online_devs) | set(last_devices)) |
device_list.WritePersistentDeviceList(last_devices_path, all_known_devices) |
- device_list.WritePersistentDeviceList( |
- os.path.join(out_dir, device_list.LAST_MISSING_DEVICES_FILENAME), |
- missing_devs) |
+ device_list.WritePersistentDeviceList(last_missing_devices_path, missing_devs) |
if not all_known_devices: |
# This can happen if for some reason the .last_devices file is not |
@@ -176,12 +197,7 @@ def CheckForMissingDevices(options, adb_online_devs): |
'regularly scheduled program.' % list(new_devs)) |
-def SendDeviceStatusAlert(msg): |
- from_address = 'buildbot@chromium.org' |
- to_address = 'chromium-android-device-alerts@google.com' |
- bot_name = os.environ.get('BUILDBOT_BUILDERNAME') |
- slave_name = os.environ.get('BUILDBOT_SLAVENAME') |
- subject = 'Device status check errors on %s, %s.' % (slave_name, bot_name) |
+def SendEmail(from_address, to_address, subject, msg): |
msg_body = '\r\n'.join(['From: %s' % from_address, 'To: %s' % to_address, |
'Subject: %s' % subject, '', msg]) |
try: |
@@ -324,7 +340,12 @@ def main(): |
bb_annotations.PrintWarning() |
msg = '\n'.join(err_msg) |
print msg |
- SendDeviceStatusAlert(msg) |
+ from_address = 'buildbot@chromium.org' |
+ to_address = 'chromium-android-device-alerts@google.com' |
+ bot_name = os.environ.get('BUILDBOT_BUILDERNAME') |
+ slave_name = os.environ.get('BUILDBOT_SLAVENAME') |
+ subject = 'Device status check errors on %s, %s.' % (slave_name, bot_name) |
+ SendEmail(from_address, to_address, subject, msg) |
if options.device_status_dashboard: |
perf_tests_results_helper.PrintPerfResult('BotDevices', 'OnlineDevices', |