Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / build / android / devil / utils / timeout_retry_unittest.py
blobc48deb61a11b355ab08ec27c9e1aa7feae16fae7
1 # Copyright 2013 The Chromium 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.
5 """Unittests for timeout_and_retry.py."""
7 import unittest
9 from devil.utils import reraiser_thread
10 from devil.utils import timeout_retry
13 class TestException(Exception):
14 pass
17 def _NeverEnding(tries):
18 tries[0] += 1
19 while True:
20 pass
23 def _CountTries(tries):
24 tries[0] += 1
25 raise TestException
28 class TestRun(unittest.TestCase):
29 """Tests for timeout_retry.Run."""
31 def testRun(self):
32 self.assertTrue(timeout_retry.Run(
33 lambda x: x, 30, 3, [True], {}))
35 def testTimeout(self):
36 tries = [0]
37 self.assertRaises(reraiser_thread.TimeoutError,
38 timeout_retry.Run, lambda: _NeverEnding(tries), 0, 3)
39 self.assertEqual(tries[0], 4)
41 def testRetries(self):
42 tries = [0]
43 self.assertRaises(TestException,
44 timeout_retry.Run, lambda: _CountTries(tries), 30, 3)
45 self.assertEqual(tries[0], 4)
47 def testReturnValue(self):
48 self.assertTrue(timeout_retry.Run(lambda: True, 30, 3))
51 if __name__ == '__main__':
52 unittest.main()