Skip to content

Commit 3bddef6

Browse files
committed
add TODO and tweak test apache#455
1 parent 9ffcf00 commit 3bddef6

2 files changed

Lines changed: 21 additions & 13 deletions

File tree

cassandra/policies.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -528,6 +528,9 @@ class ExponentialReconnectionPolicy(ReconnectionPolicy):
528528
a set maximum delay.
529529
"""
530530

531+
# TODO: max_attempts is 64 to preserve legacy default behavior
532+
# consider changing to None in major release to prevent the policy
533+
# giving up forever
531534
def __init__(self, base_delay, max_delay, max_attempts=64):
532535
"""
533536
`base_delay` and `max_delay` should be in floating point units of

tests/unit/test_policies.py

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -816,25 +816,30 @@ def test_bad_vals(self):
816816
self.assertRaises(ValueError, ExponentialReconnectionPolicy, 9000, 1)
817817
self.assertRaises(ValueError, ExponentialReconnectionPolicy, 1, 2,-1)
818818

819-
def test_schedule(self):
820-
policy = ExponentialReconnectionPolicy(base_delay=2, max_delay=100, max_attempts=None)
821-
i=0;
822-
for delay in policy.new_schedule():
823-
i += 1
824-
if i > 10000:
825-
break;
826-
self.assertEqual(i, 10001)
827-
828-
policy = ExponentialReconnectionPolicy(base_delay=2, max_delay=100, max_attempts=64)
819+
def test_schedule_no_max(self):
820+
base_delay = 2
821+
max_delay = 100
822+
test_iter = 10000
823+
policy = ExponentialReconnectionPolicy(base_delay=base_delay, max_delay=max_delay, max_attempts=None)
824+
sched_slice = list(islice(policy.new_schedule(), 0, test_iter))
825+
self.assertEqual(sched_slice[0], base_delay)
826+
self.assertEqual(sched_slice[-1], max_delay)
827+
self.assertEqual(len(sched_slice), test_iter)
828+
829+
def test_schedule_with_max(self):
830+
base_delay = 2
831+
max_delay = 100
832+
max_attempts = 64
833+
policy = ExponentialReconnectionPolicy(base_delay=base_delay, max_delay=max_delay, max_attempts=max_attempts)
829834
schedule = list(policy.new_schedule())
830-
self.assertEqual(len(schedule), 64)
835+
self.assertEqual(len(schedule), max_attempts)
831836
for i, delay in enumerate(schedule):
832837
if i == 0:
833-
self.assertEqual(delay, 2)
838+
self.assertEqual(delay, base_delay)
834839
elif i < 6:
835840
self.assertEqual(delay, schedule[i - 1] * 2)
836841
else:
837-
self.assertEqual(delay, 100)
842+
self.assertEqual(delay, max_delay)
838843

839844
ONE = ConsistencyLevel.ONE
840845

0 commit comments

Comments
 (0)