Skip to content

Commit b55531b

Browse files
authored
SNOW-1540289: add test for max policy backoff time (#2072)
1 parent a959fc6 commit b55531b

File tree

1 file changed

+53
-3
lines changed

1 file changed

+53
-3
lines changed

test/unit/test_backoff_policies.py

Lines changed: 53 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,70 @@
55
import pytest
66

77
try:
8-
from snowflake.connector.backoff_policies import exponential_backoff, linear_backoff
8+
from snowflake.connector.backoff_policies import (
9+
DEFAULT_BACKOFF_CAP,
10+
exponential_backoff,
11+
linear_backoff,
12+
)
913
except ImportError:
1014
pass
1115

1216

1317
@pytest.mark.skipolddriver
1418
def test_linear_backoff():
19+
# test default w/ config
20+
backoff_generator = linear_backoff()()
21+
# after 12 calls, we will reach the default max 16 and won't grow
22+
# 1, 3, 5, 7, 9, 11, 13, 15, 16, 16...
23+
assert max([next(backoff_generator) for _ in range(200)]) <= DEFAULT_BACKOFF_CAP
24+
25+
# test default w/o enable_jitter config
26+
backoff_generator = linear_backoff(enable_jitter=False)()
27+
# after 12 calls, we will reach the default max 16 and won't grow
28+
# 1, 3, 5, 7, 9, 11, 13, 15, 16, 16...
29+
assert [next(backoff_generator) for _ in range(20)] == [
30+
i for i in range(1, DEFAULT_BACKOFF_CAP, 2)
31+
] + [DEFAULT_BACKOFF_CAP] * 12
32+
33+
# # test custom config
1534
backoff_generator = linear_backoff(factor=2, base=1, cap=100, enable_jitter=False)()
16-
assert [next(backoff_generator) for _ in range(5)] == [1, 3, 5, 7, 9]
35+
# after 50 calls, we will reach the max 100 and won't grow
36+
# 1, 3, 5, 7, 9, ... 100, 100, 100, 100, 100, max is the cap 100
37+
assert [next(backoff_generator) for _ in range(60)] == [
38+
i for i in range(1, 100, 2)
39+
] + [100] * 10
1740

1841

1942
@pytest.mark.skipolddriver
2043
def test_exponential_backoff():
44+
# test default w/ enable_jitter config
45+
backoff_generator = exponential_backoff()()
46+
# after 12 calls, we will reach the default max 16 and won't grow
47+
# 1, 3, 5, 7, 9, 11, 13, 15, 16, 16...
48+
assert max([next(backoff_generator) for _ in range(200)]) <= DEFAULT_BACKOFF_CAP
49+
50+
# test default w/o enable_jitter config
51+
backoff_generator = exponential_backoff(enable_jitter=False)()
52+
# after 12 calls, we will reach the default max 16 and won't grow
53+
# 1, 3, 5, 7, 9, 11, 13, 15, 16, 16...
54+
assert [next(backoff_generator) for _ in range(20)] == [1, 2, 4, 8] + [
55+
DEFAULT_BACKOFF_CAP
56+
] * 16
57+
58+
# test custom config
2159
backoff_generator = exponential_backoff(
2260
factor=2, base=1, cap=100, enable_jitter=False
2361
)()
24-
assert [next(backoff_generator) for _ in range(5)] == [1, 2, 4, 8, 16]
62+
# after 7 calls, we will reach max which is the cap 100 and won't grow
63+
assert [next(backoff_generator) for _ in range(10)] == [
64+
1,
65+
2,
66+
4,
67+
8,
68+
16,
69+
32,
70+
64,
71+
100,
72+
100,
73+
100,
74+
]

0 commit comments

Comments
 (0)