blob: dc36c42ba5cea70edd93c84c078573af3291b6c5 [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
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()