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

Unified Diff: build/android/device_status_check.py

Issue 11021004: Make device_status_check.py email clank-infra if devices go offline. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Nits and write .last_devices outside of if/else block. Created 8 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/device_status_check.py
diff --git a/build/android/device_status_check.py b/build/android/device_status_check.py
index b3447cae0f42bbb3e6bd1521baf13c48e5b7b8e8..8b34a905396822adf9c70f2df9e1ec1a70c1e0fd 100755
--- a/build/android/device_status_check.py
+++ b/build/android/device_status_check.py
@@ -8,6 +8,7 @@
import optparse
import os
+import smtplib
import sys
from pylib import buildbot_report
@@ -59,26 +60,65 @@ def CheckForMissingDevices(options, adb_online_devs):
and online attached devices.
"""
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):
+ os.makedirs(out_dir)
+ with open(path, 'w') as f:
+ # Write devices currently visible plus devices previously seen.
+ f.write('\n'.join(set(device_list)))
+
last_devices_path = os.path.join(out_dir, '.last_devices')
- last_devices = []
- try:
- with open(last_devices_path) as f:
- last_devices = f.read().splitlines()
- except IOError:
- # Ignore error, file might not exist
- pass
+ last_devices = ReadDeviceList('.last_devices')
missing_devs = list(set(last_devices) - set(adb_online_devs))
if missing_devs:
+ from_address = 'buildbot@chromium.org'
+ to_address = 'chromium-android-device-alerts@google.com'
+ bot_name = os.environ['BUILDBOT_BUILDERNAME']
+ slave_name = os.environ['BUILDBOT_SLAVENAME']
+ num_online_devs = len(adb_online_devs)
+ subject = 'Devices offline on %s, %s (%d remaining).' % (slave_name,
+ bot_name,
+ num_online_devs)
buildbot_report.PrintWarning()
- buildbot_report.PrintSummaryText(
- '%d devices not detected.' % len(missing_devs))
- print 'Current online devices: %s' % adb_online_devs
- print '%s are no longer visible. Were they removed?\n' % missing_devs
- print 'SHERIFF: See go/chrome_device_monitor'
- print 'Cache file: %s\n\n' % last_devices_path
- print 'adb devices'
- print GetCmdOutput(['adb', 'devices'])
+ devices_missing_msg = '%d devices not detected.' % len(missing_devs)
+ buildbot_report.PrintSummaryText(devices_missing_msg)
+
+ body = '\n'.join(
+ ['Current online devices: %s' % adb_online_devs,
+ '%s are no longer visible. Were they removed?\n' % missing_devs,
+ 'SHERIFF: See go/clank/engineering/buildbots/troubleshooting',
Isaac (away) 2012/10/03 06:39:50 Why did you change this link? Please fix this, to
+ 'Cache file: %s\n\n' % last_devices_path,
+ 'adb devices: %s' % GetCmdOutput(['adb', 'devices'])])
+
+ print body
+
+ # Only send email if the first time a particular device goes offline
+ last_missing = ReadDeviceList('.last_missing')
+ new_missing_devs = set(missing_devs) - set(last_missing)
+
+ if new_missing_devs:
+ msg_body = '\r\n'.join(
+ ['From: %s' % from_address,
+ 'To: %s' % to_address,
+ 'Subject: %s' % subject,
+ '', body])
+ server = smtplib.SMTP('localhost')
+ server.sendmail(from_address, [to_address], msg_body)
+ server.quit()
else:
new_devs = set(adb_online_devs) - set(last_devices)
if new_devs and os.path.exists(last_devices_path):
@@ -87,12 +127,8 @@ def CheckForMissingDevices(options, adb_online_devs):
'%d new devices detected' % len(new_devs))
print ('New devices detected %s. And now back to your '
'regularly scheduled program.' % list(new_devs))
-
- if not os.path.exists(out_dir):
- os.makedirs(out_dir)
- with open(last_devices_path, 'w') as f:
- # Write devices currently visible plus devices previously seen.
- f.write('\n'.join(set(adb_online_devs + last_devices)))
+ WriteDeviceList('.last_devices', (adb_online_devs + last_devices))
+ WriteDeviceList('.last_missing', missing_devs)
def main():
« 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