Index: infra/scripts/legacy/scripts/slave/crash_utils.py |
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 0000000000000000000000000000000000000000..db9d1bd8f496440114c3c8e18f6ad7a84d374749 |
--- /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) |
+ |