Chromium Code Reviews| Index: build/android/tombstones.py |
| diff --git a/build/android/tombstones.py b/build/android/tombstones.py |
| index 712f90fac81dd3f51d2e6906f684388c1b2bd896..42a7e62af259d70ac805fa542ebb5556abe26c70 100755 |
| --- a/build/android/tombstones.py |
| +++ b/build/android/tombstones.py |
| @@ -165,17 +165,21 @@ def _ResolveTombstones(jobs, tombstones): |
| 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 '\n'.join(resolved_tombstones) |
|
jbudorick
2016/08/09 22:28:47
This should return the list of lines, not the join
BigBossZhiling
2016/08/09 23:49:26
Done.
|
| - |
| -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,11 @@ 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) |
| + logging.info(resolved_tombstones) |
|
jbudorick
2016/08/09 22:28:47
w/ ResolveTombstones returning a list, you can loo
BigBossZhiling
2016/08/09 23:49:26
Done.
|
| if __name__ == '__main__': |
| sys.exit(main()) |