Index: build/android/pylib/utils/timeout_retry_unittest.py |
diff --git a/build/android/pylib/utils/timeout_retry_unittest.py b/build/android/pylib/utils/timeout_retry_unittest.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b1d4e67175c9d5670fe7aca612090b8915a65954 |
--- /dev/null |
+++ b/build/android/pylib/utils/timeout_retry_unittest.py |
@@ -0,0 +1,52 @@ |
+# 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 |
+ |
+import reraiser_thread |
+import timeout_retry |
+ |
+ |
+class TestException(Exception): |
+ pass |
+ |
+ |
+def _NeverEnding(tries=[0]): |
+ 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() |