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

Side by Side Diff: build/android/pylib/local/device/local_device_test_run.py

Issue 2099323002: [Android] Prepare the test runner for @RetryOnFailure. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 5 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
« no previous file with comments | « build/android/pylib/local/device/local_device_instrumentation_test_run.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 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 import fnmatch 5 import fnmatch
6 import functools 6 import functools
7 import imp 7 import imp
8 import logging 8 import logging
9 import signal 9 import signal
10 import thread 10 import thread
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 logging.info('%d failed tests remain.', len(tests)) 169 logging.info('%d failed tests remain.', len(tests))
170 else: 170 else:
171 logging.info('All tests completed.') 171 logging.info('All tests completed.')
172 except TestsTerminated: 172 except TestsTerminated:
173 pass 173 pass
174 174
175 return results 175 return results
176 176
177 def _GetTestsToRetry(self, tests, try_results): 177 def _GetTestsToRetry(self, tests, try_results):
178 178
179 def is_failure(test_result): 179 def is_failure_result(test_result):
180 return ( 180 return (
181 test_result is None 181 test_result is None
182 or test_result.GetType() not in ( 182 or test_result.GetType() not in (
183 base_test_result.ResultType.PASS, 183 base_test_result.ResultType.PASS,
184 base_test_result.ResultType.SKIP)) 184 base_test_result.ResultType.SKIP))
185 185
186 all_test_results = {r.GetName(): r for r in try_results.GetAll()} 186 all_test_results = {r.GetName(): r for r in try_results.GetAll()}
187 187
188 def should_retry(name): 188 def test_failed(name):
189 # When specifying a test filter, names can contain trailing wildcards. 189 # When specifying a test filter, names can contain trailing wildcards.
190 # See local_device_gtest_run._ExtractTestsFromFilter() 190 # See local_device_gtest_run._ExtractTestsFromFilter()
191 if name.endswith('*'): 191 if name.endswith('*'):
192 return any(fnmatch.fnmatch(n, name) and is_failure(t) 192 return any(fnmatch.fnmatch(n, name) and is_failure_result(t)
193 for n, t in all_test_results.iteritems()) 193 for n, t in all_test_results.iteritems())
194 return is_failure(all_test_results.get(name)) 194 return is_failure_result(all_test_results.get(name))
195 195
196 return [t for t in tests if should_retry(self._GetUniqueTestName(t))] 196 failed_tests = (t for t in tests if test_failed(self._GetUniqueTestName(t)))
197
198 return [t for t in failed_tests if self._ShouldRetry(t)]
197 199
198 def GetTool(self, device): 200 def GetTool(self, device):
199 if not str(device) in self._tools: 201 if not str(device) in self._tools:
200 self._tools[str(device)] = valgrind_tools.CreateTool( 202 self._tools[str(device)] = valgrind_tools.CreateTool(
201 self._env.tool, device) 203 self._env.tool, device)
202 return self._tools[str(device)] 204 return self._tools[str(device)]
203 205
204 def _CreateShards(self, tests): 206 def _CreateShards(self, tests):
205 raise NotImplementedError 207 raise NotImplementedError
206 208
207 # pylint: disable=no-self-use
208 def _GetUniqueTestName(self, test): 209 def _GetUniqueTestName(self, test):
210 # pylint: disable=no-self-use
209 return test 211 return test
210 212
213 def _ShouldRetry(self, test):
214 # pylint: disable=no-self-use,unused-argument
215 return True
216
211 def _GetTests(self): 217 def _GetTests(self):
212 raise NotImplementedError 218 raise NotImplementedError
213 219
214 def _RunTest(self, device, test): 220 def _RunTest(self, device, test):
215 raise NotImplementedError 221 raise NotImplementedError
216 222
217 def _ShouldShard(self): 223 def _ShouldShard(self):
218 raise NotImplementedError 224 raise NotImplementedError
OLDNEW
« no previous file with comments | « build/android/pylib/local/device/local_device_instrumentation_test_run.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698