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

Side by Side Diff: build/android/tombstones.py

Issue 1281923003: [Android] Add --blacklist-file as a command-line option. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 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
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 # Find the most recent tombstone file(s) on all connected devices 7 # Find the most recent tombstone file(s) on all connected devices
8 # and prints their stacks. 8 # and prints their stacks.
9 # 9 #
10 # Assumes tombstone file was created with current symbols. 10 # Assumes tombstone file was created with current symbols.
11 11
12 import datetime 12 import datetime
13 import itertools 13 import itertools
14 import logging 14 import logging
15 import multiprocessing 15 import multiprocessing
16 import os 16 import os
17 import re 17 import re
18 import subprocess 18 import subprocess
19 import sys 19 import sys
20 import optparse 20 import optparse
21 21
22 from pylib.device import adb_wrapper 22 from pylib.device import adb_wrapper
23 from pylib.device import device_blacklist
23 from pylib.device import device_errors 24 from pylib.device import device_errors
24 from pylib.device import device_utils 25 from pylib.device import device_utils
25 from pylib.utils import run_tests_helper 26 from pylib.utils import run_tests_helper
26 27
27 28
28 _TZ_UTC = {'TZ': 'UTC'} 29 _TZ_UTC = {'TZ': 'UTC'}
29 30
30 def _ListTombstones(device): 31 def _ListTombstones(device):
31 """List the tombstone files on the device. 32 """List the tombstone files on the device.
32 33
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 def main(): 214 def main():
214 custom_handler = logging.StreamHandler(sys.stdout) 215 custom_handler = logging.StreamHandler(sys.stdout)
215 custom_handler.setFormatter(run_tests_helper.CustomFormatter()) 216 custom_handler.setFormatter(run_tests_helper.CustomFormatter())
216 logging.getLogger().addHandler(custom_handler) 217 logging.getLogger().addHandler(custom_handler)
217 logging.getLogger().setLevel(logging.INFO) 218 logging.getLogger().setLevel(logging.INFO)
218 219
219 parser = optparse.OptionParser() 220 parser = optparse.OptionParser()
220 parser.add_option('--device', 221 parser.add_option('--device',
221 help='The serial number of the device. If not specified ' 222 help='The serial number of the device. If not specified '
222 'will use all devices.') 223 'will use all devices.')
224 parser.add_option('--blacklist-file', help='Device blacklist JSON file.')
223 parser.add_option('-a', '--all-tombstones', action='store_true', 225 parser.add_option('-a', '--all-tombstones', action='store_true',
224 help="""Resolve symbols for all tombstones, rather than just 226 help="""Resolve symbols for all tombstones, rather than just
225 the most recent""") 227 the most recent""")
226 parser.add_option('-s', '--stack', action='store_true', 228 parser.add_option('-s', '--stack', action='store_true',
227 help='Also include symbols for stack data') 229 help='Also include symbols for stack data')
228 parser.add_option('-w', '--wipe-tombstones', action='store_true', 230 parser.add_option('-w', '--wipe-tombstones', action='store_true',
229 help='Erase all tombstones from device after processing') 231 help='Erase all tombstones from device after processing')
230 parser.add_option('-j', '--jobs', type='int', 232 parser.add_option('-j', '--jobs', type='int',
231 default=4, 233 default=4,
232 help='Number of jobs to use when processing multiple ' 234 help='Number of jobs to use when processing multiple '
233 'crash stacks.') 235 'crash stacks.')
234 options, _ = parser.parse_args() 236 options, _ = parser.parse_args()
235 237
238 if options.blacklist_file:
239 blacklist = device_blacklist.Blacklist(options.blacklist_file)
240 else:
241 blacklist = None
242
236 if options.device: 243 if options.device:
237 devices = [device_utils.DeviceUtils(options.device)] 244 devices = [device_utils.DeviceUtils(options.device)]
238 else: 245 else:
239 devices = device_utils.DeviceUtils.HealthyDevices() 246 devices = device_utils.DeviceUtils.HealthyDevices(blacklist)
240 247
241 # This must be done serially because strptime can hit a race condition if 248 # This must be done serially because strptime can hit a race condition if
242 # used for the first time in a multithreaded environment. 249 # used for the first time in a multithreaded environment.
243 # http://bugs.python.org/issue7980 250 # http://bugs.python.org/issue7980
244 tombstones = [] 251 tombstones = []
245 for device in devices: 252 for device in devices:
246 tombstones += _GetTombstonesForDevice(device, options) 253 tombstones += _GetTombstonesForDevice(device, options)
247 254
248 _ResolveTombstones(options.jobs, tombstones) 255 _ResolveTombstones(options.jobs, tombstones)
249 256
250 257
251 if __name__ == '__main__': 258 if __name__ == '__main__':
252 sys.exit(main()) 259 sys.exit(main())
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698