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

Unified Diff: build/android/tombstones.py

Issue 2237553003: (Reland) Added tombstones in instrumentation tests results. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/android/test_runner.pydeps ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/tombstones.py
diff --git a/build/android/tombstones.py b/build/android/tombstones.py
index 712f90fac81dd3f51d2e6906f684388c1b2bd896..cba1e5a9f511da27af7e1b8c43e1df046118e81a 100755
--- a/build/android/tombstones.py
+++ b/build/android/tombstones.py
@@ -159,23 +159,27 @@ def _ResolveTombstones(jobs, tombstones):
"""
if not tombstones:
logging.warning('No tombstones to resolve.')
- return
+ return []
if len(tombstones) == 1:
data = [_ResolveTombstone(tombstones[0])]
else:
pool = multiprocessing.Pool(processes=jobs)
data = pool.map(_ResolveTombstone, tombstones)
+ resolved_tombstones = []
for tombstone in data:
- for line in tombstone:
- logging.info(line)
-
+ resolved_tombstones.extend(tombstone)
+ return resolved_tombstones
-def _GetTombstonesForDevice(device, args):
+def _GetTombstonesForDevice(device, resolve_all_tombstones,
+ include_stack_symbols,
+ wipe_tombstones):
"""Returns a list of tombstones on a given device.
Args:
device: An instance of DeviceUtils.
- args: command line arguments
+ resolve_all_tombstone: Whether to resolve every tombstone.
+ include_stack_symbols: Whether to include symbols for stack data.
+ wipe_tombstones: Whether to wipe tombstones.
"""
ret = []
all_tombstones = list(_ListTombstones(device))
@@ -187,7 +191,7 @@ def _GetTombstonesForDevice(device, args):
all_tombstones.sort(cmp=lambda a, b: cmp(b[1], a[1]))
# Only resolve the most recent unless --all-tombstones given.
- tombstones = all_tombstones if args.all_tombstones else [all_tombstones[0]]
+ tombstones = all_tombstones if resolve_all_tombstones else [all_tombstones[0]]
device_now = _GetDeviceDateTime(device)
try:
@@ -197,7 +201,7 @@ def _GetTombstonesForDevice(device, args):
'device_now': device_now,
'time': tombstone_time,
'file': tombstone_file,
- 'stack': args.stack,
+ 'stack': include_stack_symbols,
'data': _GetTombstoneData(device, tombstone_file)}]
except device_errors.CommandFailedError:
for entry in device.StatDirectory(
@@ -206,12 +210,41 @@ def _GetTombstonesForDevice(device, args):
raise
# Erase all the tombstones if desired.
- if args.wipe_tombstones:
+ if wipe_tombstones:
for tombstone_file, _ in all_tombstones:
_EraseTombstone(device, tombstone_file)
return ret
+def ClearAllTombstones(device):
+ """Clear all tombstones in the device.
+
+ Args:
+ device: An instance of DeviceUtils.
+ """
+ all_tombstones = list(_ListTombstones(device))
+ if not all_tombstones:
+ logging.warning('No tombstones to clear.')
+
+ for tombstone_file, _ in all_tombstones:
+ _EraseTombstone(device, tombstone_file)
+
+def ResolveTombstones(device, resolve_all_tombstones, include_stack_symbols,
+ wipe_tombstones, jobs=4):
+ """Resolve tombstones in the device.
+
+ Args:
+ device: An instance of DeviceUtils.
+ resolve_all_tombstone: Whether to resolve every tombstone.
+ include_stack_symbols: Whether to include symbols for stack data.
+ wipe_tombstones: Whether to wipe tombstones.
+ jobs: Number of jobs to use when processing multiple crash stacks.
+ """
+ return _ResolveTombstones(jobs,
+ _GetTombstonesForDevice(device,
+ resolve_all_tombstones,
+ include_stack_symbols,
+ wipe_tombstones))
def main():
custom_handler = logging.StreamHandler(sys.stdout)
@@ -260,12 +293,12 @@ def main():
# This must be done serially because strptime can hit a race condition if
# used for the first time in a multithreaded environment.
# http://bugs.python.org/issue7980
- tombstones = []
for device in devices:
- tombstones += _GetTombstonesForDevice(device, args)
-
- _ResolveTombstones(args.jobs, tombstones)
-
+ resolved_tombstones = ResolveTombstones(
+ device, args.all_tombstones,
+ args.stack, args.wipe_tombstones, args.jobs)
+ for line in resolved_tombstones:
+ logging.info(line)
if __name__ == '__main__':
sys.exit(main())
« no previous file with comments | « build/android/test_runner.pydeps ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698