Exemple #1
0
 def test_wait_double_sum(self):
     r = Retrying(wait=tenacity.wait_random(0, 3) + tenacity.wait_fixed(5))
     # Test it a few time since it's random
     for i in six.moves.range(1000):
         w = r.wait(1, 5)
         self.assertLess(w, 8)
         self.assertGreaterEqual(w, 5)
Exemple #2
0
 def test_exponential(self):
     r = Retrying(wait=tenacity.wait_exponential(max=100))
     self.assertEqual(r.wait(1, 0), 2)
     self.assertEqual(r.wait(2, 0), 4)
     self.assertEqual(r.wait(3, 0), 8)
     self.assertEqual(r.wait(4, 0), 16)
     self.assertEqual(r.wait(5, 0), 32)
     self.assertEqual(r.wait(6, 0), 64)
Exemple #3
0
    def test_random_sleep(self):
        r = Retrying(wait=tenacity.wait_random(min=1, max=20))
        times = set()
        for x in six.moves.range(1000):
            times.add(r.wait(1, 6546))

        # this is kind of non-deterministic...
        self.assertTrue(len(times) > 1)
        for t in times:
            self.assertTrue(t >= 1)
            self.assertTrue(t < 20)
Exemple #4
0
 def test_wait_arbitrary_sum(self):
     r = Retrying(wait=sum([
         tenacity.wait_fixed(1),
         tenacity.wait_random(0, 3),
         tenacity.wait_fixed(5),
         tenacity.wait_none()
     ]))
     # Test it a few time since it's random
     for i in six.moves.range(1000):
         w = r.wait(1, 5)
         self.assertLess(w, 9)
         self.assertGreaterEqual(w, 6)
Exemple #5
0
    def test_random_sleep_without_min(self):
        r = Retrying(wait=tenacity.wait_random(max=2))
        times = set()
        times.add(r.wait(1, 6546))
        times.add(r.wait(1, 6546))
        times.add(r.wait(1, 6546))
        times.add(r.wait(1, 6546))

        # this is kind of non-deterministic...
        self.assertTrue(len(times) > 1)
        for t in times:
            self.assertTrue(t >= 0)
            self.assertTrue(t <= 2)
Exemple #6
0
    def test_wait_chain(self):
        r = Retrying(wait=tenacity.wait_chain(
            *[tenacity.wait_fixed(1) for i in six.moves.range(2)] +
            [tenacity.wait_fixed(4) for i in six.moves.range(2)] +
            [tenacity.wait_fixed(8) for i in six.moves.range(1)]))

        for i in six.moves.range(10):
            w = r.wait(i, 1)
            if i < 2:
                self._assert_range(w, 1, 2)
            elif i < 4:
                self._assert_range(w, 4, 5)
            else:
                self._assert_range(w, 8, 9)
Exemple #7
0
    def test_retry_try_again_forever(self):
        def _r():
            raise tenacity.TryAgain

        r = Retrying(stop=tenacity.stop_after_attempt(5),
                     retry=tenacity.retry_never)
        self.assertRaises(tenacity.RetryError, r.call, _r)
        self.assertEqual(5, r.statistics['attempt_number'])
Exemple #8
0
 def test_exponential_with_max_wait_and_multiplier(self):
     r = Retrying(wait=tenacity.wait_exponential(max=50, multiplier=1))
     self.assertEqual(r.wait(1, 0), 2)
     self.assertEqual(r.wait(2, 0), 4)
     self.assertEqual(r.wait(3, 0), 8)
     self.assertEqual(r.wait(4, 0), 16)
     self.assertEqual(r.wait(5, 0), 32)
     self.assertEqual(r.wait(6, 0), 50)
     self.assertEqual(r.wait(7, 0), 50)
     self.assertEqual(r.wait(50, 0), 50)
Exemple #9
0
 def test_exponential_with_max_wait(self):
     r = Retrying(wait=tenacity.wait_exponential(max=40))
     self.assertEqual(r.wait(1, 0), 2)
     self.assertEqual(r.wait(2, 0), 4)
     self.assertEqual(r.wait(3, 0), 8)
     self.assertEqual(r.wait(4, 0), 16)
     self.assertEqual(r.wait(5, 0), 32)
     self.assertEqual(r.wait(6, 0), 40)
     self.assertEqual(r.wait(7, 0), 40)
     self.assertEqual(r.wait(50, 0), 40)
Exemple #10
0
    def test_wait_func_result(self):
        captures = []

        def wait_capture(attempt, delay, last_result=None):
            captures.append(last_result)
            return 1

        def dying():
            raise Exception("Broken")

        r_attempts = 10
        r = Retrying(wait=wait_capture,
                     sleep=lambda secs: None,
                     stop=tenacity.stop_after_attempt(r_attempts),
                     reraise=True)
        self.assertRaises(Exception, r.call, dying)
        self.assertEqual(r_attempts - 1, len(captures))
        self.assertTrue(all([r.failed for r in captures]))
Exemple #11
0
 def test_legacy_explicit_wait_type(self):
     Retrying(wait="exponential_sleep")
Exemple #12
0
 def test_stop_after_attempt(self):
     r = Retrying(stop=tenacity.stop_after_attempt(3))
     self.assertFalse(r.stop(2, 6546))
     self.assertTrue(r.stop(3, 6546))
     self.assertTrue(r.stop(4, 6546))
Exemple #13
0
 def test_retry_try_again(self):
     self._attempts = 0
     Retrying(stop=tenacity.stop_after_attempt(5),
              retry=tenacity.retry_never).call(self._raise_try_again)
     self.assertEqual(3, self._attempts)
Exemple #14
0
 def test_never_stop(self):
     r = Retrying()
     self.assertFalse(r.stop(3, 6546))
Exemple #15
0
 def test_stop_after_delay(self):
     r = Retrying(stop=tenacity.stop_after_delay(1))
     self.assertFalse(r.stop(2, 0.999))
     self.assertTrue(r.stop(2, 1))
     self.assertTrue(r.stop(2, 1.001))
Exemple #16
0
 def test_stop_func(self):
     r = Retrying(stop=lambda attempt, delay: attempt == delay)
     self.assertFalse(r.stop(1, 3))
     self.assertFalse(r.stop(100, 99))
     self.assertTrue(r.stop(101, 101))
Exemple #17
0
 def test_incrementing_sleep(self):
     r = Retrying(wait=tenacity.wait_incrementing(start=500, increment=100))
     self.assertEqual(500, r.wait(1, 6546))
     self.assertEqual(600, r.wait(2, 6546))
     self.assertEqual(700, r.wait(3, 6546))
Exemple #18
0
 def test_legacy_explicit_stop_type(self):
     Retrying(stop="stop_after_attempt")
Exemple #19
0
 def test_wait_func(self):
     r = Retrying(wait=lambda attempt, delay: attempt * delay)
     self.assertEqual(r.wait(1, 5), 5)
     self.assertEqual(r.wait(2, 11), 22)
     self.assertEqual(r.wait(10, 100), 1000)
Exemple #20
0
 def test_no_sleep(self):
     r = Retrying()
     self.assertEqual(0, r.wait(18, 9879))
Exemple #21
0
 def test_fixed_sleep(self):
     r = Retrying(wait=tenacity.wait_fixed(1))
     self.assertEqual(1, r.wait(12, 6546))