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

Side by Side Diff: build/android/buildbot/bb_device_status_check.py

Issue 383933003: Add option to output device status to a JSON file. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 5 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 2013 The Chromium Authors. All rights reserved. 3 # Copyright 2013 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 json
8 import logging 9 import logging
9 import optparse 10 import optparse
10 import os 11 import os
11 import psutil 12 import psutil
12 import re 13 import re
13 import signal 14 import signal
14 import smtplib 15 import smtplib
15 import subprocess 16 import subprocess
16 import sys 17 import sys
17 import time 18 import time
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 parser = optparse.OptionParser() 269 parser = optparse.OptionParser()
269 parser.add_option('', '--out-dir', 270 parser.add_option('', '--out-dir',
270 help='Directory where the device path is stored', 271 help='Directory where the device path is stored',
271 default=os.path.join(constants.DIR_SOURCE_ROOT, 'out')) 272 default=os.path.join(constants.DIR_SOURCE_ROOT, 'out'))
272 parser.add_option('--no-provisioning-check', action='store_true', 273 parser.add_option('--no-provisioning-check', action='store_true',
273 help='Will not check if devices are provisioned properly.') 274 help='Will not check if devices are provisioned properly.')
274 parser.add_option('--device-status-dashboard', action='store_true', 275 parser.add_option('--device-status-dashboard', action='store_true',
275 help='Output device status data for dashboard.') 276 help='Output device status data for dashboard.')
276 parser.add_option('--restart-usb', action='store_true', 277 parser.add_option('--restart-usb', action='store_true',
277 help='Restart USB ports before running device check.') 278 help='Restart USB ports before running device check.')
279 parser.add_option('--json-output',
280 help='Output JSON information into a specified file.')
tonyg 2014/07/11 02:19:15 We should document the format somewhere.
278 281
279 options, args = parser.parse_args() 282 options, args = parser.parse_args()
280 if args: 283 if args:
281 parser.error('Unknown options %s' % args) 284 parser.error('Unknown options %s' % args)
282 285
283 # Remove the last build's "bad devices" before checking device statuses. 286 # Remove the last build's "bad devices" before checking device statuses.
284 device_blacklist.ResetBlacklist() 287 device_blacklist.ResetBlacklist()
285 288
286 try: 289 try:
287 expected_devices = device_list.GetPersistentDeviceList( 290 expected_devices = device_list.GetPersistentDeviceList(
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 perf_tests_results_helper.PrintPerfResult('BotDevices', 'OnlineDevices', 355 perf_tests_results_helper.PrintPerfResult('BotDevices', 'OnlineDevices',
353 [len(devices)], 'devices') 356 [len(devices)], 'devices')
354 perf_tests_results_helper.PrintPerfResult('BotDevices', 'OfflineDevices', 357 perf_tests_results_helper.PrintPerfResult('BotDevices', 'OfflineDevices',
355 [len(offline_devices)], 'devices', 358 [len(offline_devices)], 'devices',
356 'unimportant') 359 'unimportant')
357 for serial, battery in zip(devices, batteries): 360 for serial, battery in zip(devices, batteries):
358 perf_tests_results_helper.PrintPerfResult('DeviceBattery', serial, 361 perf_tests_results_helper.PrintPerfResult('DeviceBattery', serial,
359 [battery], '%', 362 [battery], '%',
360 'unimportant') 363 'unimportant')
361 364
365 if options.json_output:
366 with open(options.json_output, 'wb') as f:
367 f.write(json.dumps({
368 'online_devices': devices,
tonyg 2014/07/11 02:19:15 Let's add expected_devices too. Also, prior to re
zty 2014/07/11 18:58:30 Acknowledged.
369 'offline_devices': offline_devices
370 }))
371
362 if False in fail_step_lst: 372 if False in fail_step_lst:
363 # TODO(navabi): Build fails on device status check step if there exists any 373 # TODO(navabi): Build fails on device status check step if there exists any
364 # devices with critically low battery. Remove those devices from testing, 374 # devices with critically low battery. Remove those devices from testing,
365 # allowing build to continue with good devices. 375 # allowing build to continue with good devices.
366 return 2 376 return 2
367 377
368 if not devices: 378 if not devices:
369 return 1 379 return 1
370 380
371 381
372 if __name__ == '__main__': 382 if __name__ == '__main__':
373 sys.exit(main()) 383 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