add TODO and tweak test #455

This commit is contained in:
Adam Holmberg
2016-01-08 10:48:07 -06:00
parent 9ffcf00f2d
commit 3bddef6185
2 changed files with 20 additions and 12 deletions

View File

@@ -528,6 +528,9 @@ class ExponentialReconnectionPolicy(ReconnectionPolicy):
a set maximum delay. a set maximum delay.
""" """
# TODO: max_attempts is 64 to preserve legacy default behavior
# consider changing to None in major release to prevent the policy
# giving up forever
def __init__(self, base_delay, max_delay, max_attempts=64): def __init__(self, base_delay, max_delay, max_attempts=64):
""" """
`base_delay` and `max_delay` should be in floating point units of `base_delay` and `max_delay` should be in floating point units of

View File

@@ -816,25 +816,30 @@ class ExponentialReconnectionPolicyTest(unittest.TestCase):
self.assertRaises(ValueError, ExponentialReconnectionPolicy, 9000, 1) self.assertRaises(ValueError, ExponentialReconnectionPolicy, 9000, 1)
self.assertRaises(ValueError, ExponentialReconnectionPolicy, 1, 2,-1) self.assertRaises(ValueError, ExponentialReconnectionPolicy, 1, 2,-1)
def test_schedule(self): def test_schedule_no_max(self):
policy = ExponentialReconnectionPolicy(base_delay=2, max_delay=100, max_attempts=None) base_delay = 2
i=0; max_delay = 100
for delay in policy.new_schedule(): test_iter = 10000
i += 1 policy = ExponentialReconnectionPolicy(base_delay=base_delay, max_delay=max_delay, max_attempts=None)
if i > 10000: sched_slice = list(islice(policy.new_schedule(), 0, test_iter))
break; self.assertEqual(sched_slice[0], base_delay)
self.assertEqual(i, 10001) self.assertEqual(sched_slice[-1], max_delay)
self.assertEqual(len(sched_slice), test_iter)
policy = ExponentialReconnectionPolicy(base_delay=2, max_delay=100, max_attempts=64) def test_schedule_with_max(self):
base_delay = 2
max_delay = 100
max_attempts = 64
policy = ExponentialReconnectionPolicy(base_delay=base_delay, max_delay=max_delay, max_attempts=max_attempts)
schedule = list(policy.new_schedule()) schedule = list(policy.new_schedule())
self.assertEqual(len(schedule), 64) self.assertEqual(len(schedule), max_attempts)
for i, delay in enumerate(schedule): for i, delay in enumerate(schedule):
if i == 0: if i == 0:
self.assertEqual(delay, 2) self.assertEqual(delay, base_delay)
elif i < 6: elif i < 6:
self.assertEqual(delay, schedule[i - 1] * 2) self.assertEqual(delay, schedule[i - 1] * 2)
else: else:
self.assertEqual(delay, 100) self.assertEqual(delay, max_delay)
ONE = ConsistencyLevel.ONE ONE = ConsistencyLevel.ONE