# Copyright 2013 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """Unittests for timeout_and_retry.py.""" import unittest from pylib.utils import reraiser_thread from pylib.utils import timeout_retry class TestException(Exception): pass def _NeverEnding(tries): tries[0] += 1 while True: pass def _CountTries(tries): tries[0] += 1 raise TestException class TestRun(unittest.TestCase): """Tests for timeout_retry.Run.""" def testRun(self): self.assertTrue(timeout_retry.Run( lambda x: x, 30, 3, [True], {})) def testTimeout(self): tries = [0] self.assertRaises(reraiser_thread.TimeoutError, timeout_retry.Run, lambda: _NeverEnding(tries), 0, 3) self.assertEqual(tries[0], 4) def testRetries(self): tries = [0] self.assertRaises(TestException, timeout_retry.Run, lambda: _CountTries(tries), 30, 3) self.assertEqual(tries[0], 4) def testReturnValue(self): self.assertTrue(timeout_retry.Run(lambda: True, 30, 3)) if __name__ == '__main__': unittest.main()