Revision 38d1ee54 test/py/ganeti.utils.retry_unittest.py
b/test/py/ganeti.utils.retry_unittest.py | ||
---|---|---|
35 | 35 |
testutils.GanetiTestCase.setUp(self) |
36 | 36 |
self.retries = 0 |
37 | 37 |
self.called = 0 |
38 |
self.time = 1379601882.0 |
|
39 |
|
|
40 |
def _time_fn(self): |
|
41 |
return self.time |
|
42 |
|
|
43 |
def _wait_fn(self, delay): |
|
44 |
self.time += delay |
|
38 | 45 |
|
39 | 46 |
@staticmethod |
40 | 47 |
def _RaiseRetryAgain(): |
... | ... | |
64 | 71 |
|
65 | 72 |
def testRaiseTimeout(self): |
66 | 73 |
self.failUnlessRaises(utils.RetryTimeout, utils.Retry, |
67 |
self._RaiseRetryAgain, 0.01, 0.02) |
|
74 |
self._RaiseRetryAgain, 0.01, 0.02, |
|
75 |
wait_fn = self._wait_fn, _time_fn = self._time_fn) |
|
68 | 76 |
self.failUnlessRaises(utils.RetryTimeout, utils.Retry, |
69 |
self._RetryAndSucceed, 0.01, 0, args=[1]) |
|
77 |
self._RetryAndSucceed, 0.01, 0, args=[1], |
|
78 |
wait_fn = self._wait_fn, _time_fn = self._time_fn) |
|
70 | 79 |
self.failUnlessEqual(self.retries, 1) |
71 | 80 |
|
72 | 81 |
def testComplete(self): |
73 |
self.failUnlessEqual(utils.Retry(lambda: True, 0, 1), True) |
|
74 |
self.failUnlessEqual(utils.Retry(self._RetryAndSucceed, 0, 1, args=[2]), |
|
82 |
self.failUnlessEqual(utils.Retry(lambda: True, 0, 1, |
|
83 |
wait_fn = self._wait_fn, |
|
84 |
_time_fn = self._time_fn), |
|
85 |
True) |
|
86 |
self.failUnlessEqual(utils.Retry(self._RetryAndSucceed, 0, 1, args=[2], |
|
87 |
wait_fn = self._wait_fn, |
|
88 |
_time_fn = self._time_fn), |
|
75 | 89 |
True) |
76 | 90 |
self.failUnlessEqual(self.retries, 2) |
77 | 91 |
|
78 | 92 |
def testNestedLoop(self): |
79 | 93 |
try: |
80 | 94 |
self.failUnlessRaises(errors.ProgrammerError, utils.Retry, |
81 |
self._WrongNestedLoop, 0, 1) |
|
95 |
self._WrongNestedLoop, 0, 1, |
|
96 |
wait_fn = self._wait_fn, _time_fn = self._time_fn) |
|
82 | 97 |
except utils.RetryTimeout: |
83 | 98 |
self.fail("Didn't detect inner loop's exception") |
84 | 99 |
|
85 | 100 |
def testTimeoutArgument(self): |
86 | 101 |
retry_arg="my_important_debugging_message" |
87 | 102 |
try: |
88 |
utils.Retry(self._RaiseRetryAgainWithArg, 0.01, 0.02, args=[[retry_arg]]) |
|
103 |
utils.Retry(self._RaiseRetryAgainWithArg, 0.01, 0.02, args=[[retry_arg]], |
|
104 |
wait_fn = self._wait_fn, _time_fn = self._time_fn) |
|
89 | 105 |
except utils.RetryTimeout, err: |
90 | 106 |
self.failUnlessEqual(err.args, (retry_arg, )) |
91 | 107 |
else: |
... | ... | |
96 | 112 |
try: |
97 | 113 |
try: |
98 | 114 |
utils.Retry(self._RaiseRetryAgainWithArg, 0.01, 0.02, |
99 |
args=[[errors.GenericError(retry_arg, retry_arg)]]) |
|
115 |
args=[[errors.GenericError(retry_arg, retry_arg)]], |
|
116 |
wait_fn = self._wait_fn, _time_fn = self._time_fn) |
|
100 | 117 |
except utils.RetryTimeout, err: |
101 | 118 |
err.RaiseInner() |
102 | 119 |
else: |
... | ... | |
111 | 128 |
try: |
112 | 129 |
try: |
113 | 130 |
utils.Retry(self._RaiseRetryAgainWithArg, 0.01, 0.02, |
114 |
args=[[retry_arg, retry_arg]]) |
|
131 |
args=[[retry_arg, retry_arg]], |
|
132 |
wait_fn = self._wait_fn, _time_fn = self._time_fn) |
|
115 | 133 |
except utils.RetryTimeout, err: |
116 | 134 |
err.RaiseInner() |
117 | 135 |
else: |
... | ... | |
122 | 140 |
self.fail("Expected RetryTimeout didn't happen") |
123 | 141 |
|
124 | 142 |
def testSimpleRetry(self): |
125 |
self.assertFalse(utils.SimpleRetry(True, lambda: False, 0.01, 0.02)) |
|
126 |
self.assertFalse(utils.SimpleRetry(lambda x: x, lambda: False, 0.01, 0.02)) |
|
127 |
self.assertTrue(utils.SimpleRetry(True, lambda: True, 0, 1)) |
|
128 |
self.assertTrue(utils.SimpleRetry(lambda x: x, lambda: True, 0, 1)) |
|
129 |
self.assertTrue(utils.SimpleRetry(True, self._SimpleRetryAndSucceed, |
|
130 |
0, 1, args=[1])) |
|
143 |
self.assertFalse(utils.SimpleRetry(True, lambda: False, 0.01, 0.02, |
|
144 |
wait_fn = self._wait_fn, |
|
145 |
_time_fn = self._time_fn)) |
|
146 |
self.assertFalse(utils.SimpleRetry(lambda x: x, lambda: False, 0.01, 0.02, |
|
147 |
wait_fn = self._wait_fn, |
|
148 |
_time_fn = self._time_fn)) |
|
149 |
self.assertTrue(utils.SimpleRetry(True, lambda: True, 0, 1, |
|
150 |
wait_fn = self._wait_fn, |
|
151 |
_time_fn = self._time_fn)) |
|
152 |
self.assertTrue(utils.SimpleRetry(lambda x: x, lambda: True, 0, 1, |
|
153 |
wait_fn = self._wait_fn, |
|
154 |
_time_fn = self._time_fn)) |
|
155 |
self.assertTrue(utils.SimpleRetry(True, self._SimpleRetryAndSucceed, 0, 1, |
|
156 |
args=[1], wait_fn = self._wait_fn, |
|
157 |
_time_fn = self._time_fn)) |
|
131 | 158 |
self.assertEqual(self.retries, 1) |
132 | 159 |
self.assertEqual(self.called, 2) |
133 | 160 |
self.called = self.retries = 0 |
134 |
self.assertTrue(utils.SimpleRetry(True, self._SimpleRetryAndSucceed, |
|
135 |
0, 1, args=[2])) |
|
161 |
self.assertTrue(utils.SimpleRetry(True, self._SimpleRetryAndSucceed, 0, 1, |
|
162 |
args=[2], wait_fn = self._wait_fn, |
|
163 |
_time_fn = self._time_fn)) |
|
136 | 164 |
self.assertEqual(self.called, 3) |
137 | 165 |
|
138 | 166 |
|
Also available in: Unified diff