Skip to content

Commit 76f704d

Browse files
committed
Add new TestConnectionConstructorWithRetry tests
1 parent 443dbaf commit 76f704d

File tree

1 file changed

+35
-3
lines changed

1 file changed

+35
-3
lines changed

tests/test_asyncio/test_retry.py

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from redis.asyncio.connection import Connection, UnixDomainSocketConnection
44
from redis.asyncio.retry import Retry
55
from redis.backoff import AbstractBackoff, NoBackoff
6-
from redis.exceptions import ConnectionError
6+
from redis.exceptions import ConnectionError, TimeoutError
77

88

99
class BackoffMock(AbstractBackoff):
@@ -22,23 +22,55 @@ def compute(self, failures):
2222
class TestConnectionConstructorWithRetry:
2323
"Test that the Connection constructors properly handles Retry objects"
2424

25+
@pytest.mark.parametrize("Class", [Connection, UnixDomainSocketConnection])
26+
def test_retry_on_error_set(self, Class):
27+
class CustomError(Exception):
28+
pass
29+
30+
retry_on_error = [ConnectionError, TimeoutError, CustomError]
31+
c = Class(retry_on_error=retry_on_error)
32+
assert c.retry_on_error == retry_on_error
33+
assert isinstance(c.retry, Retry)
34+
assert c.retry._retries == 1
35+
assert set(c.retry._supported_errors) == set(retry_on_error)
36+
37+
@pytest.mark.parametrize("Class", [Connection, UnixDomainSocketConnection])
38+
def test_retry_on_error_not_set(self, Class):
39+
c = Class()
40+
assert c.retry_on_error == []
41+
assert isinstance(c.retry, Retry)
42+
assert c.retry._retries == 0
43+
2544
@pytest.mark.parametrize("retry_on_timeout", [False, True])
2645
@pytest.mark.parametrize("Class", [Connection, UnixDomainSocketConnection])
27-
def test_retry_on_timeout_boolean(self, Class, retry_on_timeout):
46+
def test_retry_on_timeout(self, Class, retry_on_timeout):
2847
c = Class(retry_on_timeout=retry_on_timeout)
2948
assert c.retry_on_timeout == retry_on_timeout
3049
assert isinstance(c.retry, Retry)
3150
assert c.retry._retries == (1 if retry_on_timeout else 0)
3251

3352
@pytest.mark.parametrize("retries", range(10))
3453
@pytest.mark.parametrize("Class", [Connection, UnixDomainSocketConnection])
35-
def test_retry_on_timeout_retry(self, Class, retries: int):
54+
def test_retry_with_retry_on_timeout(self, Class, retries: int):
3655
retry_on_timeout = retries > 0
3756
c = Class(retry_on_timeout=retry_on_timeout, retry=Retry(NoBackoff(), retries))
3857
assert c.retry_on_timeout == retry_on_timeout
3958
assert isinstance(c.retry, Retry)
4059
assert c.retry._retries == retries
4160

61+
@pytest.mark.parametrize("retries", range(10))
62+
@pytest.mark.parametrize("Class", [Connection, UnixDomainSocketConnection])
63+
def test_retry_with_retry_on_error(self, Class, retries: int):
64+
class CustomError(Exception):
65+
pass
66+
67+
retry_on_error = [ConnectionError, TimeoutError, CustomError]
68+
c = Class(retry_on_error=retry_on_error, retry=Retry(NoBackoff(), retries))
69+
assert c.retry_on_error == retry_on_error
70+
assert isinstance(c.retry, Retry)
71+
assert c.retry._retries == retries
72+
assert set(c.retry._supported_errors) == set(retry_on_error)
73+
4274

4375
class TestRetry:
4476
"Test that Retry calls backoff and retries the expected number of times"

0 commit comments

Comments
 (0)