diff options
Diffstat (limited to 't/integration/test_redis.py')
-rw-r--r-- | t/integration/test_redis.py | 34 |
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() |