diff options
Diffstat (limited to 'infra/scripts/legacy/scripts/slave/crash_utils.py')
-rwxr-xr-x | infra/scripts/legacy/scripts/slave/crash_utils.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/infra/scripts/legacy/scripts/slave/crash_utils.py b/infra/scripts/legacy/scripts/slave/crash_utils.py new file mode 100755 index 0000000..db9d1bd --- /dev/null +++ b/infra/scripts/legacy/scripts/slave/crash_utils.py @@ -0,0 +1,46 @@ +#!/usr/bin/python +# Copyright (c) 2012 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""A utility for crash reporting.""" + +import os +import time + +from common import chromium_utils + + +def print_new_crash_files(new_crash_files): + """Prints all the new crash files.""" + if new_crash_files: + print '\nFound %d new crash file(s), dumping them:' % ( + len(new_crash_files)) + for crash_file in new_crash_files: + print 'File: ' + crash_file + print '=' * (6 + len(crash_file)) + for crash_line in open(crash_file): + print ' ' + crash_line.rstrip() + print '' + + +def list_crash_logs(): + """List all the crash files stored in the user directory.""" + reports_dir = os.path.expanduser('~/Library/Logs/DiagnosticReports') + result = [x for x in chromium_utils.LocateFiles('*.crash', reports_dir)] + return result + + +def wait_for_crash_logs(): + """Sleeps for a while to allow the crash logs to be written. + + The crash reporter runs asynchronously out of process, so when a unittest + crashes nothing says the crash log is written immediately. This method is a + hack to allow time for the crash logs to be written. Ninety seconds is picked + from looking at data on the bots.""" + # TODO(lakshya): Optimize by polling every 10 seconds for a crash log to be + # available instead of waiting for 90 seconds. + print ('\nNote: Test finished with non zero status, sleeping for 90s to ' + 'allow crash files to be written.') + time.sleep(90) + |