summaryrefslogtreecommitdiff
path: root/t/integration/test_redis.py
diff options
context:
space:
mode:
Diffstat (limited to 't/integration/test_redis.py')
-rw-r--r--t/integration/test_redis.py34
1 files changed, 32 insertions, 2 deletions
diff --git a/t/integration/test_redis.py b/t/integration/test_redis.py
index 72ba803f..b2ae5ab8 100644
--- a/t/integration/test_redis.py
+++ b/t/integration/test_redis.py
@@ -1,12 +1,17 @@
+from __future__ import annotations
+
import os
+import socket
from time import sleep
import pytest
import redis
import kombu
+from kombu.transport.redis import Transport
-from .common import BaseExchangeTypes, BasePriority, BasicFunctionality
+from .common import (BaseExchangeTypes, BaseMessage, BasePriority,
+ BasicFunctionality)
def get_connection(
@@ -55,7 +60,11 @@ def test_failed_credentials():
@pytest.mark.env('redis')
@pytest.mark.flaky(reruns=5, reruns_delay=2)
class test_RedisBasicFunctionality(BasicFunctionality):
- pass
+ def test_failed_connection__ConnectionError(self, invalid_connection):
+ # method raises transport exception
+ with pytest.raises(redis.exceptions.ConnectionError) as ex:
+ invalid_connection.connection
+ assert ex.type in Transport.connection_errors
@pytest.mark.env('redis')
@@ -120,3 +129,24 @@ class test_RedisPriority(BasePriority):
assert received_messages[0] == {'msg': 'second'}
assert received_messages[1] == {'msg': 'first'}
assert received_messages[2] == {'msg': 'third'}
+
+
+@pytest.mark.env('redis')
+@pytest.mark.flaky(reruns=5, reruns_delay=2)
+class test_RedisMessage(BaseMessage):
+ pass
+
+
+@pytest.mark.env('redis')
+def test_RedisConnectTimeout(monkeypatch):
+ # simulate a connection timeout for a new connection
+ def connect_timeout(self):
+ raise socket.timeout
+ monkeypatch.setattr(
+ redis.connection.Connection, "_connect", connect_timeout)
+
+ # ensure the timeout raises a TimeoutError
+ with pytest.raises(redis.exceptions.TimeoutError):
+ # note the host/port here is irrelevant because
+ # connect will raise a socket.timeout
+ kombu.Connection('redis://localhost:12345').connect()