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.
"""
# 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):
"""
`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, 1, 2,-1)
def test_schedule(self):
policy = ExponentialReconnectionPolicy(base_delay=2, max_delay=100, max_attempts=None)
i=0;
for delay in policy.new_schedule():
i += 1
if i > 10000:
break;
self.assertEqual(i, 10001)
def test_schedule_no_max(self):
base_delay = 2
max_delay = 100
test_iter = 10000
policy = ExponentialReconnectionPolicy(base_delay=base_delay, max_delay=max_delay, max_attempts=None)
sched_slice = list(islice(policy.new_schedule(), 0, test_iter))
self.assertEqual(sched_slice[0], base_delay)
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())
self.assertEqual(len(schedule), 64)
self.assertEqual(len(schedule), max_attempts)
for i, delay in enumerate(schedule):
if i == 0:
self.assertEqual(delay, 2)
self.assertEqual(delay, base_delay)
elif i < 6:
self.assertEqual(delay, schedule[i - 1] * 2)
else:
self.assertEqual(delay, 100)
self.assertEqual(delay, max_delay)
ONE = ConsistencyLevel.ONE