| OLD | NEW |
| 1 # Copyright 2015 The Chromium Authors. All rights reserved. | 1 # Copyright 2015 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 logging | 5 import logging |
| 6 import os | 6 import os |
| 7 import posixpath | 7 import posixpath |
| 8 import re | 8 import re |
| 9 import time | 9 import time |
| 10 | 10 |
| (...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 340 include_stack_symbols=False, | 340 include_stack_symbols=False, |
| 341 wipe_tombstones=True) | 341 wipe_tombstones=True) |
| 342 result.SetTombstones('\n'.join(resolved_tombstones)) | 342 result.SetTombstones('\n'.join(resolved_tombstones)) |
| 343 return results | 343 return results |
| 344 | 344 |
| 345 #override | 345 #override |
| 346 def _ShouldRetry(self, test): | 346 def _ShouldRetry(self, test): |
| 347 if 'RetryOnFailure' in test.get('annotations', {}): | 347 if 'RetryOnFailure' in test.get('annotations', {}): |
| 348 return True | 348 return True |
| 349 | 349 |
| 350 # TODO(jbudorick): Remove this log message and switch the return value to | 350 # TODO(jbudorick): Remove this log message once @RetryOnFailure has been |
| 351 # False after tests have been annotated with @RetryOnFailure. | 351 # enabled for a while. See crbug.com/619055 for more details. |
| 352 # See crbug.com/619055 for more details. | 352 logging.error('Default retries are being phased out. crbug.com/619055') |
| 353 logging.warning('Default retries are being phased out. crbug.com/619055') | 353 return False |
| 354 return True | |
| 355 | 354 |
| 356 #override | 355 #override |
| 357 def _ShouldShard(self): | 356 def _ShouldShard(self): |
| 358 return True | 357 return True |
| 359 | 358 |
| 360 @classmethod | 359 @classmethod |
| 361 def _GetTimeoutScaleFromAnnotations(cls, annotations): | 360 def _GetTimeoutScaleFromAnnotations(cls, annotations): |
| 362 try: | 361 try: |
| 363 return int(annotations.get('TimeoutScale', 1)) | 362 return int(annotations.get('TimeoutScale', 1)) |
| 364 except ValueError as e: | 363 except ValueError as e: |
| 365 logging.warning("Non-integer value of TimeoutScale ignored. (%s)", str(e)) | 364 logging.warning("Non-integer value of TimeoutScale ignored. (%s)", str(e)) |
| 366 return 1 | 365 return 1 |
| 367 | 366 |
| 368 @classmethod | 367 @classmethod |
| 369 def _GetTimeoutFromAnnotations(cls, annotations, test_name): | 368 def _GetTimeoutFromAnnotations(cls, annotations, test_name): |
| 370 for k, v in TIMEOUT_ANNOTATIONS: | 369 for k, v in TIMEOUT_ANNOTATIONS: |
| 371 if k in annotations: | 370 if k in annotations: |
| 372 timeout = v | 371 timeout = v |
| 373 break | 372 break |
| 374 else: | 373 else: |
| 375 logging.warning('Using default 1 minute timeout for %s', test_name) | 374 logging.warning('Using default 1 minute timeout for %s', test_name) |
| 376 timeout = 60 | 375 timeout = 60 |
| 377 | 376 |
| 378 timeout *= cls._GetTimeoutScaleFromAnnotations(annotations) | 377 timeout *= cls._GetTimeoutScaleFromAnnotations(annotations) |
| 379 | 378 |
| 380 return timeout | 379 return timeout |
| 381 | 380 |
| OLD | NEW |