|
13 | 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
14 | 14 | # See the License for the specific language governing permissions and |
15 | 15 | # limitations under the License. |
| 16 | +import datetime |
16 | 17 | import logging |
17 | 18 | import re |
18 | 19 | import sys |
|
29 | 30 | import tenacity |
30 | 31 | from tenacity import RetryCallState, RetryError, Retrying, retry |
31 | 32 |
|
32 | | - |
33 | 33 | _unset = object() |
34 | 34 |
|
35 | 35 |
|
@@ -180,28 +180,34 @@ def test_no_sleep(self): |
180 | 180 | self.assertEqual(0, r.wait(make_retry_state(18, 9879))) |
181 | 181 |
|
182 | 182 | def test_fixed_sleep(self): |
183 | | - r = Retrying(wait=tenacity.wait_fixed(1)) |
184 | | - self.assertEqual(1, r.wait(make_retry_state(12, 6546))) |
| 183 | + for wait in (1, datetime.timedelta(seconds=1)): |
| 184 | + with self.subTest(): |
| 185 | + r = Retrying(wait=tenacity.wait_fixed(wait)) |
| 186 | + self.assertEqual(1, r.wait(make_retry_state(12, 6546))) |
185 | 187 |
|
186 | 188 | def test_incrementing_sleep(self): |
187 | | - r = Retrying(wait=tenacity.wait_incrementing(start=500, increment=100)) |
188 | | - self.assertEqual(500, r.wait(make_retry_state(1, 6546))) |
189 | | - self.assertEqual(600, r.wait(make_retry_state(2, 6546))) |
190 | | - self.assertEqual(700, r.wait(make_retry_state(3, 6546))) |
| 189 | + for start, increment in ((500, 100), (datetime.timedelta(seconds=500), datetime.timedelta(seconds=100))): |
| 190 | + with self.subTest(): |
| 191 | + r = Retrying(wait=tenacity.wait_incrementing(start=start, increment=increment)) |
| 192 | + self.assertEqual(500, r.wait(make_retry_state(1, 6546))) |
| 193 | + self.assertEqual(600, r.wait(make_retry_state(2, 6546))) |
| 194 | + self.assertEqual(700, r.wait(make_retry_state(3, 6546))) |
191 | 195 |
|
192 | 196 | def test_random_sleep(self): |
193 | | - r = Retrying(wait=tenacity.wait_random(min=1, max=20)) |
194 | | - times = set() |
195 | | - for x in range(1000): |
196 | | - times.add(r.wait(make_retry_state(1, 6546))) |
197 | | - |
198 | | - # this is kind of non-deterministic... |
199 | | - self.assertTrue(len(times) > 1) |
200 | | - for t in times: |
201 | | - self.assertTrue(t >= 1) |
202 | | - self.assertTrue(t < 20) |
203 | | - |
204 | | - def test_random_sleep_without_min(self): |
| 197 | + for min_, max_ in ((1, 20), (datetime.timedelta(seconds=1), datetime.timedelta(seconds=20))): |
| 198 | + with self.subTest(): |
| 199 | + r = Retrying(wait=tenacity.wait_random(min=min_, max=max_)) |
| 200 | + times = set() |
| 201 | + for _ in range(1000): |
| 202 | + times.add(r.wait(make_retry_state(1, 6546))) |
| 203 | + |
| 204 | + # this is kind of non-deterministic... |
| 205 | + self.assertTrue(len(times) > 1) |
| 206 | + for t in times: |
| 207 | + self.assertTrue(t >= 1) |
| 208 | + self.assertTrue(t < 20) |
| 209 | + |
| 210 | + def test_random_sleep_withoutmin_(self): |
205 | 211 | r = Retrying(wait=tenacity.wait_random(max=2)) |
206 | 212 | times = set() |
207 | 213 | times.add(r.wait(make_retry_state(1, 6546))) |
@@ -274,18 +280,20 @@ def test_exponential_with_min_wait_and_multiplier(self): |
274 | 280 | self.assertEqual(r.wait(make_retry_state(8, 0)), 256) |
275 | 281 | self.assertEqual(r.wait(make_retry_state(20, 0)), 1048576) |
276 | 282 |
|
277 | | - def test_exponential_with_min_wait_and_max_wait(self): |
278 | | - r = Retrying(wait=tenacity.wait_exponential(min=10, max=100)) |
279 | | - self.assertEqual(r.wait(make_retry_state(1, 0)), 10) |
280 | | - self.assertEqual(r.wait(make_retry_state(2, 0)), 10) |
281 | | - self.assertEqual(r.wait(make_retry_state(3, 0)), 10) |
282 | | - self.assertEqual(r.wait(make_retry_state(4, 0)), 10) |
283 | | - self.assertEqual(r.wait(make_retry_state(5, 0)), 16) |
284 | | - self.assertEqual(r.wait(make_retry_state(6, 0)), 32) |
285 | | - self.assertEqual(r.wait(make_retry_state(7, 0)), 64) |
286 | | - self.assertEqual(r.wait(make_retry_state(8, 0)), 100) |
287 | | - self.assertEqual(r.wait(make_retry_state(9, 0)), 100) |
288 | | - self.assertEqual(r.wait(make_retry_state(20, 0)), 100) |
| 283 | + def test_exponential_with_min_wait_andmax__wait(self): |
| 284 | + for min_, max_ in ((10, 100), (datetime.timedelta(seconds=10), datetime.timedelta(seconds=100))): |
| 285 | + with self.subTest(): |
| 286 | + r = Retrying(wait=tenacity.wait_exponential(min=min_, max=max_)) |
| 287 | + self.assertEqual(r.wait(make_retry_state(1, 0)), 10) |
| 288 | + self.assertEqual(r.wait(make_retry_state(2, 0)), 10) |
| 289 | + self.assertEqual(r.wait(make_retry_state(3, 0)), 10) |
| 290 | + self.assertEqual(r.wait(make_retry_state(4, 0)), 10) |
| 291 | + self.assertEqual(r.wait(make_retry_state(5, 0)), 16) |
| 292 | + self.assertEqual(r.wait(make_retry_state(6, 0)), 32) |
| 293 | + self.assertEqual(r.wait(make_retry_state(7, 0)), 64) |
| 294 | + self.assertEqual(r.wait(make_retry_state(8, 0)), 100) |
| 295 | + self.assertEqual(r.wait(make_retry_state(9, 0)), 100) |
| 296 | + self.assertEqual(r.wait(make_retry_state(20, 0)), 100) |
289 | 297 |
|
290 | 298 | def test_legacy_explicit_wait_type(self): |
291 | 299 | Retrying(wait="exponential_sleep") |
@@ -335,7 +343,7 @@ def test_wait_arbitrary_sum(self): |
335 | 343 | ) |
336 | 344 | ) |
337 | 345 | # Test it a few time since it's random |
338 | | - for i in range(1000): |
| 346 | + for _ in range(1000): |
339 | 347 | w = r.wait(make_retry_state(1, 5)) |
340 | 348 | self.assertLess(w, 9) |
341 | 349 | self.assertGreaterEqual(w, 6) |
|
0 commit comments