add TODO and tweak test #455
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user