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

Side by Side Diff: build/android/pylib/test_result.py

Issue 11363088: Android: Report step failure when tests time out. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | build/android/run_tests.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 5
6 import json 6 import json
7 import logging 7 import logging
8 import os 8 import os
9 import time 9 import time
10 import traceback 10 import traceback
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 def _Log(self, sorted_list): 118 def _Log(self, sorted_list):
119 for t in sorted_list: 119 for t in sorted_list:
120 logging.critical(t.name) 120 logging.critical(t.name)
121 if t.log: 121 if t.log:
122 logging.critical(t.log) 122 logging.critical(t.log)
123 123
124 def GetAllBroken(self): 124 def GetAllBroken(self):
125 """Returns the all broken tests including failed, crashed, unknown.""" 125 """Returns the all broken tests including failed, crashed, unknown."""
126 return self.failed + self.crashed + self.unknown 126 return self.failed + self.crashed + self.unknown
127 127
128 def LogFull(self, test_group, test_suite, build_type): 128 def LogFull(self, test_group, test_suite, build_type, tests_to_run):
129 """Output broken test logs, summarize in a log file and the test output.""" 129 """Output broken test logs, summarize in a log file and the test output."""
130 # Output all broken tests or 'passed' if none broken. 130 # Output all broken tests or 'passed' if none broken.
131 logging.critical('*' * 80) 131 logging.critical('*' * 80)
132 logging.critical('Final result') 132 logging.critical('Final result')
133 if self.failed: 133 if self.failed:
134 logging.critical('Failed:') 134 logging.critical('Failed:')
135 self._Log(sorted(self.failed)) 135 self._Log(sorted(self.failed))
136 if self.crashed: 136 if self.crashed:
137 logging.critical('Crashed:') 137 logging.critical('Crashed:')
138 self._Log(sorted(self.crashed)) 138 self._Log(sorted(self.crashed))
(...skipping 30 matching lines...) Expand all
169 print >> log_file, ''.join(log_contents) 169 print >> log_file, ''.join(log_contents)
170 content = {'test_group': test_group, 170 content = {'test_group': test_group,
171 'ok': [t.name for t in self.ok], 171 'ok': [t.name for t in self.ok],
172 'failed': [t.name for t in self.failed], 172 'failed': [t.name for t in self.failed],
173 'crashed': [t.name for t in self.failed], 173 'crashed': [t.name for t in self.failed],
174 'unknown': [t.name for t in self.unknown],} 174 'unknown': [t.name for t in self.unknown],}
175 with open(os.path.join(log_file_path, 'results.json'), 'a') as json_file: 175 with open(os.path.join(log_file_path, 'results.json'), 'a') as json_file:
176 print >> json_file, json.dumps(content) 176 print >> json_file, json.dumps(content)
177 177
178 # Summarize in the test output. 178 # Summarize in the test output.
179 summary_string = 'Summary:\n' 179 summary = ['Summary:\n']
180 summary_string += 'RAN=%d\n' % (len(self.ok) + len(self.failed) + 180 summary += ['TESTS_TO_RUN=%d\n' % (len(tests_to_run))]
181 len(self.crashed) + len(self.unknown)) 181 num_tests_ran = (len(self.ok) + len(self.failed) +
182 summary_string += 'PASSED=%d\n' % (len(self.ok)) 182 len(self.crashed) + len(self.unknown))
183 summary_string += 'FAILED=%d %s\n' % (len(self.failed), 183 tests_passed = [t.name for t in self.ok]
184 [t.name for t in self.failed]) 184 tests_failed = [t.name for t in self.failed]
185 summary_string += 'CRASHED=%d %s\n' % (len(self.crashed), 185 tests_crashed = [t.name for t in self.crashed]
186 [t.name for t in self.crashed]) 186 tests_unknown = [t.name for t in self.unknown]
187 summary_string += 'UNKNOWN=%d %s\n' % (len(self.unknown), 187 summary += ['RAN=%d\n' % (num_tests_ran),
188 [t.name for t in self.unknown]) 188 'PASSED=%d\n' % len(tests_passed),
189 'FAILED=%d %s\n' % (len(tests_failed), tests_failed),
190 'CRASHED=%d %s\n' % (len(tests_crashed), tests_crashed),
191 'UNKNOWN=%d %s\n' % (len(tests_unknown), tests_unknown)]
192 if num_tests_ran != len(tests_to_run):
193 # Add the list of tests we failed to run.
194 tests_failed_to_run = list(set(tests_to_run) - set(tests_passed) -
195 set(tests_failed) - set(tests_crashed) -
196 set(tests_unknown))
197 summary += ['FAILED_TO_RUN=%d %s\n' % (len(tests_failed_to_run),
198 tests_failed_to_run)]
199 summary_string = ''.join(summary)
189 logging.critical(summary_string) 200 logging.critical(summary_string)
190 return summary_string 201 return summary_string
191 202
192 def PrintAnnotation(self): 203 def PrintAnnotation(self):
193 """Print buildbot annotations for test results.""" 204 """Print buildbot annotations for test results."""
194 if self.timed_out: 205 if self.failed or self.crashed or self.overall_fail or self.timed_out:
195 buildbot_report.PrintWarning()
196 elif self.failed or self.crashed or self.overall_fail:
197 buildbot_report.PrintError() 206 buildbot_report.PrintError()
198 else: 207 else:
199 print 'Step success!' # No annotation needed 208 print 'Step success!' # No annotation needed
OLDNEW
« no previous file with comments | « no previous file | build/android/run_tests.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698