Home | History | Annotate | Download | only in dummy_Fail
      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 
      5 import logging
      6 from autotest_lib.client.bin import test
      7 from autotest_lib.client.common_lib import error
      8 
      9 # A global variable to track how many times the test has been run.
     10 global retry_count
     11 retry_count = 0
     12 
     13 class 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