def test_incrementing_sleep(self): r = Retrying(wait='incrementing_sleep', wait_incrementing_start=500, wait_incrementing_increment=100) self.assertEqual(500, r.wait(1, 6546)) self.assertEqual(600, r.wait(2, 6546)) self.assertEqual(700, r.wait(3, 6546))
def test_exponential(self): r = Retrying(wait_exponential_max=100000) 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)
def test_exponential_with_max_wait_and_multiplier(self): r = Retrying(wait_exponential_max=50000, wait_exponential_multiplier=1000) self.assertEqual(r.wait(1, 0), 2000) self.assertEqual(r.wait(2, 0), 4000) self.assertEqual(r.wait(3, 0), 8000) self.assertEqual(r.wait(4, 0), 16000) self.assertEqual(r.wait(5, 0), 32000) self.assertEqual(r.wait(6, 0), 50000) self.assertEqual(r.wait(7, 0), 50000) self.assertEqual(r.wait(50, 0), 50000)
def test_exponential_with_max_wait(self): r = Retrying(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)
def test_exponential_with_max_wait_and_multiplier(self): r = Retrying(wait='exponential_sleep', wait_exponential_max=50000, wait_exponential_multiplier=1000) self.assertEqual(r.wait(1, 0), 2000) self.assertEqual(r.wait(2, 0), 4000) self.assertEqual(r.wait(3, 0), 8000) self.assertEqual(r.wait(4, 0), 16000) self.assertEqual(r.wait(5, 0), 32000) self.assertEqual(r.wait(6, 0), 50000) self.assertEqual(r.wait(7, 0), 50000) self.assertEqual(r.wait(50, 0), 50000)
def test_wait_aggregation_func(self): r = Retrying(wait_exponential_max=50000, wait_exponential_multiplier=1000, wait_fixed=1, wait_aggregation_func=sum) self.assertEqual(r.wait(1, 0), 2001) self.assertEqual(r.wait(2, 0), 4001) self.assertEqual(r.wait(3, 0), 8001) self.assertEqual(r.wait(4, 0), 16001) self.assertEqual(r.wait(5, 0), 32001) self.assertEqual(r.wait(6, 0), 50001) self.assertEqual(r.wait(7, 0), 50001) self.assertEqual(r.wait(50, 0), 50001)
def test_random_sleep_without_min(self): r = Retrying(wait='random_sleep', wait_random_max=2000) 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)) self.assertTrue(len(times) > 1) # this is kind of non-deterministic... for t in times: self.assertTrue(t >= 0) self.assertTrue(t <= 2000)
def test_random_sleep_without_min(self): r = Retrying(wait_random_max=2000) 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)) self.assertTrue(len(times) > 1) # this is kind of non-deterministic... for t in times: self.assertTrue(t >= 0) self.assertTrue(t <= 2000)
def test_random_sleep(self): r = Retrying(wait_random_min=1000, wait_random_max=2000) 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 >= 1000) self.assertTrue(t <= 2000)
def test_incrementing_sleep(self): r = Retrying(wait_incrementing_start=500, wait_incrementing_increment=100) self.assertEqual(500, r.wait(1, 6546)) self.assertEqual(600, r.wait(2, 6546)) self.assertEqual(700, r.wait(3, 6546))
def test_fixed_sleep(self): r = Retrying(wait_fixed=1000) self.assertEqual(1000, r.wait(12, 6546))
def test_no_sleep(self): r = Retrying() self.assertEqual(0, r.wait(18, 9879))
def test_wait_func(self): r = Retrying(wait_func=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)