def testEscalateExceptions(self): def stress_event(): raise StopThreadForTesting stressor = stress.CountedStressor(stress_event) stressor.start(1) self.assertRaises(StopThreadForTesting, stressor.wait)
def testDontEscalateExceptions(self): event = threading.Event() def stress_event(): event.set() raise StopThreadForTesting stressor = stress.CountedStressor(stress_event, escalate_exceptions=False) stressor.start(1) stressor.wait() self.assertTrue(event.is_set(), 'The stress event did not run')
def testOnExitWithException(self): def stress_event(): raise StopThreadForTesting event = threading.Event() def on_exit(): event.set() stressor = stress.CountedStressor(stress_event, on_exit=on_exit) stressor.start(1) self.assertRaises(StopThreadForTesting, stressor.wait) self.assertTrue(event.is_set())
def testOnExit(self): def stress_event(): pass event = threading.Event() def on_exit(): event.set() stressor = stress.CountedStressor(stress_event, on_exit=on_exit) stressor.start(1) stressor.wait() self.assertTrue(event.is_set())
def testCountedStressorIterations(self): # This is a list to get around scoping rules in Python 2.x. See # 'nonlocal' for the Python 3 remedy. count = [0] def stress_event(): count[0] += 1 stressor = stress.CountedStressor(stress_event) stressor.start(10) stressor.wait() self.assertEqual(10, count[0], 'Stress event did not run the expected ' 'number of iterations')
def testCountedStressorStartCondition(self): event = threading.Event() def start_condition(): if event.is_set(): return True event.set() return False def stress_event(): raise StopThreadForTesting stressor = stress.CountedStressor(stress_event) stressor.start(1, start_condition=start_condition) self.assertRaises(StopThreadForTesting, stressor.wait) self.assertTrue(event.is_set(), 'Stress event ran despite a False start condition')