blob: b1d4e67175c9d5670fe7aca612090b8915a65954 [file] [log] [blame]
# 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()