blob: 49e6ad3a4f564c59435b0538cccd3e78c8909e12 [file] [log] [blame]
Chris Masone8ac66712012-02-15 14:21:02 -08001# Copyright (c) 2012 The Chromium OS 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.
4
5"""Unit tests for server/cros/frontend_wrappers.py."""
6
7import logging
8import mox
9import time
10import unittest
11
Chris Masone6f109082012-07-18 14:21:38 -070012from autotest_lib.client.common_lib.cros import retry
Chris Masone8ac66712012-02-15 14:21:02 -080013from autotest_lib.server.cros import frontend_wrappers
14from autotest_lib.server import frontend
15
16class FrontendWrappersTest(mox.MoxTestBase):
17 """Unit tests for dynamic_suite.Reimager.
18
19 @var _FLAKY_FLAG: for use in tests that need to simulate random failures.
20 """
21
22 _FLAKY_FLAG = None
23
24 def setUp(self):
25 super(FrontendWrappersTest, self).setUp()
26 self._FLAKY_FLAG = False
27
28
29 def testRetryDecoratorSucceeds(self):
30 """Tests that a wrapped function succeeds without retrying."""
31 timeout_min = .1
32 timeout_sec = timeout_min * 60
Chris Masone6f109082012-07-18 14:21:38 -070033 @retry.retry(Exception, timeout_min=timeout_min, delay_sec=1)
Chris Masone8ac66712012-02-15 14:21:02 -080034 def succeed():
35 return True
36
37 deadline = time.time() + timeout_sec
38 self.assertTrue(succeed())
39 self.assertTrue(time.time() < deadline)
40
41
42 def testRetryDecoratorFlakySucceeds(self):
43 """Tests that a wrapped function can retry and succeed."""
44 timeout_min = .1
45 timeout_sec = timeout_min * 60
Chris Masone6f109082012-07-18 14:21:38 -070046 @retry.retry(Exception, timeout_min=timeout_min, delay_sec=1)
Chris Masone8ac66712012-02-15 14:21:02 -080047 def flaky_succeed():
48 if self._FLAKY_FLAG:
49 return True
50 self._FLAKY_FLAG = True
51 raise Exception
52
53 deadline = time.time() + timeout_sec
54 self.assertTrue(flaky_succeed())
55 self.assertTrue(time.time() < deadline)
56
57
Chris Masonec905a322012-04-10 10:14:27 -070058 def testRetryDecoratorFails(self):
Chris Masone8ac66712012-02-15 14:21:02 -080059 """Tests that a wrapped function retries til the timeout, then fails."""
60 timeout_min = .01
61 timeout_sec = timeout_min * 60
Chris Masone6f109082012-07-18 14:21:38 -070062 @retry.retry(Exception, timeout_min=timeout_min, delay_sec=1)
Chris Masone8ac66712012-02-15 14:21:02 -080063 def fail():
64 raise Exception()
65
66 deadline = time.time() + timeout_sec
67 self.assertRaises(Exception, fail)
68 self.assertTrue(time.time() >= deadline)