1# Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5import logging 6from autotest_lib.client.bin import test 7from autotest_lib.client.common_lib import error 8 9# A global variable to track how many times the test has been run. 10global retry_count 11retry_count = 0 12 13class dummy_Fail(test.test): 14 """The test fails by raising given exception, or succeeds at given retry.""" 15 version = 1 16 17 def run_once(self, to_throw=None, retry_success_count=0): 18 """Run test with argument to_throw, retry_count and retry_success_count. 19 20 @param to_throw: Exception to throw in the test. 21 @param retry_success_count: The number of times to fail before test is 22 completed successfully. 0 means the test will never complete 23 successfully with reties. 24 25 """ 26 global retry_count 27 retry_count += 1 28 if retry_count == retry_success_count: 29 return 30 if to_throw: 31 if to_throw == 'TestFail': logging.error('It is an error!') 32 raise getattr(error, to_throw)('always fail') 33 else: # Generate a crash to test that behavior. 34 self.write_perf_keyval({'perf_key': 102.7}) 35 self.job.record('INFO', self.tagged_testname, 36 'Received crash notification for sleep[273] sig 6') 37