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

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

Issue 11232037: Retry tests on other bots if the device is unresponsive/offline (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: small improvement Created 8 years, 2 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 unified diff | Download patch | Annotate | Revision Log
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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 class TestResults(object): 47 class TestResults(object):
48 """Results of a test run.""" 48 """Results of a test run."""
49 49
50 def __init__(self): 50 def __init__(self):
51 self.ok = [] 51 self.ok = []
52 self.failed = [] 52 self.failed = []
53 self.crashed = [] 53 self.crashed = []
54 self.unknown = [] 54 self.unknown = []
55 self.timed_out = False 55 self.timed_out = False
56 self.overall_fail = False 56 self.overall_fail = False
57 self.device_exception = None
57 58
58 @staticmethod 59 @staticmethod
59 def FromRun(ok=None, failed=None, crashed=None, timed_out=False, 60 def FromRun(ok=None, failed=None, crashed=None, timed_out=False,
60 overall_fail=False): 61 overall_fail=False, device_exception=None):
61 ret = TestResults() 62 ret = TestResults()
62 ret.ok = ok or [] 63 ret.ok = ok or []
63 ret.failed = failed or [] 64 ret.failed = failed or []
64 ret.crashed = crashed or [] 65 ret.crashed = crashed or []
65 ret.timed_out = timed_out 66 ret.timed_out = timed_out
66 ret.overall_fail = overall_fail 67 ret.overall_fail = overall_fail
68 ret.device_exception = device_exception
67 return ret 69 return ret
68 70
69 @staticmethod 71 @staticmethod
70 def FromTestResults(results): 72 def FromTestResults(results):
71 """Combines a list of results in a single TestResults object.""" 73 """Combines a list of results in a single TestResults object."""
72 ret = TestResults() 74 ret = TestResults()
73 for t in results: 75 for t in results:
74 ret.ok += t.ok 76 ret.ok += t.ok
75 ret.failed += t.failed 77 ret.failed += t.failed
76 ret.crashed += t.crashed 78 ret.crashed += t.crashed
(...skipping 25 matching lines...) Expand all
102 exc_result = SingleTestResult( 104 exc_result = SingleTestResult(
103 full_name='PythonWrapper#' + test_name, 105 full_name='PythonWrapper#' + test_name,
104 start_date=start_date_ms, 106 start_date=start_date_ms,
105 dur=duration_ms, 107 dur=duration_ms,
106 log=(str(exc_type) + ' ' + log_msg)) 108 log=(str(exc_type) + ' ' + log_msg))
107 109
108 results = TestResults() 110 results = TestResults()
109 results.failed.append(exc_result) 111 results.failed.append(exc_result)
110 return results 112 return results
111 113
114 @staticmethod
115 def DeviceExceptions(results):
116 return set(filter(lambda t: t.device_exception, results))
117
112 def _Log(self, sorted_list): 118 def _Log(self, sorted_list):
113 for t in sorted_list: 119 for t in sorted_list:
114 logging.critical(t.name) 120 logging.critical(t.name)
115 if t.log: 121 if t.log:
116 logging.critical(t.log) 122 logging.critical(t.log)
117 123
118 def GetAllBroken(self): 124 def GetAllBroken(self):
119 """Returns the all broken tests including failed, crashed, unknown.""" 125 """Returns the all broken tests including failed, crashed, unknown."""
120 return self.failed + self.crashed + self.unknown 126 return self.failed + self.crashed + self.unknown
121 127
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 return summary_string 190 return summary_string
185 191
186 def PrintAnnotation(self): 192 def PrintAnnotation(self):
187 """Print buildbot annotations for test results.""" 193 """Print buildbot annotations for test results."""
188 if self.timed_out: 194 if self.timed_out:
189 buildbot_report.PrintWarning() 195 buildbot_report.PrintWarning()
190 elif self.failed or self.crashed or self.overall_fail: 196 elif self.failed or self.crashed or self.overall_fail:
191 buildbot_report.PrintError() 197 buildbot_report.PrintError()
192 else: 198 else:
193 print 'Step success!' # No annotation needed 199 print 'Step success!' # No annotation needed
OLDNEW
« build/android/pylib/base_test_sharder.py ('K') | « build/android/pylib/test_package_apk.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698