Skip to content

Commit 96e094a

Browse files
committed
refactor
1 parent 67d2b7d commit 96e094a

File tree

4 files changed

+60
-55
lines changed

4 files changed

+60
-55
lines changed

packages/pytest-simcore/src/pytest_simcore/redis_service.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,4 +119,6 @@ async def wait_till_redis_responsive(redis_url: URL | str) -> None:
119119
@pytest.fixture
120120
def mock_redis_socket_timeout(mocker: MockerFixture) -> None:
121121
# lowered to allow CI to properly shutdown RedisClientSDK instances
122-
mocker.patch.object(redis_constants, "DEFAULT_SOCKET_TIMEOUT", timedelta(seconds=1))
122+
mocker.patch.object(
123+
redis_constants, "DEFAULT_SOCKET_TIMEOUT", timedelta(seconds=0.25)
124+
)
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import datetime
2+
from collections.abc import AsyncIterator, Callable
3+
from contextlib import AbstractAsyncContextManager
4+
5+
import pytest
6+
from faker import Faker
7+
from pytest_mock import MockerFixture
8+
from servicelib.redis import _constants as redis_constants
9+
from servicelib.redis._client import RedisClientSDK
10+
from settings_library.redis import RedisDatabase
11+
12+
13+
@pytest.fixture
14+
async def redis_client_sdk(
15+
get_redis_client_sdk: Callable[
16+
[RedisDatabase], AbstractAsyncContextManager[RedisClientSDK]
17+
],
18+
) -> AsyncIterator[RedisClientSDK]:
19+
async with get_redis_client_sdk(RedisDatabase.RESOURCES) as client:
20+
yield client
21+
22+
23+
@pytest.fixture
24+
def lock_name(faker: Faker) -> str:
25+
return faker.pystr()
26+
27+
28+
@pytest.fixture
29+
def with_short_default_redis_lock_ttl(mocker: MockerFixture) -> datetime.timedelta:
30+
short_ttl = datetime.timedelta(seconds=0.25)
31+
mocker.patch.object(redis_constants, "DEFAULT_LOCK_TTL", short_ttl)
32+
return short_ttl

packages/service-library/tests/redis/test_client.py

Lines changed: 5 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,12 @@
66

77
import asyncio
88
import datetime
9-
from collections.abc import AsyncIterator, Callable
9+
from collections.abc import Callable
1010
from contextlib import AbstractAsyncContextManager
1111

1212
import pytest
13-
from faker import Faker
14-
from pytest_mock import MockerFixture
1513
from redis.exceptions import LockError, LockNotOwnedError
16-
from servicelib.redis import RedisClientSDK, RedisClientsManager, RedisManagerDBConfig
17-
from servicelib.redis import _constants as redis_constants
14+
from servicelib.redis import RedisClientSDK
1815
from settings_library.redis import RedisDatabase, RedisSettings
1916
from tenacity import (
2017
AsyncRetrying,
@@ -32,33 +29,11 @@
3229
]
3330

3431

35-
@pytest.fixture
36-
async def redis_client_sdk(
37-
get_redis_client_sdk: Callable[
38-
[RedisDatabase], AbstractAsyncContextManager[RedisClientSDK]
39-
],
40-
) -> AsyncIterator[RedisClientSDK]:
41-
async with get_redis_client_sdk(RedisDatabase.RESOURCES) as client:
42-
yield client
43-
44-
4532
@pytest.fixture
4633
def redis_lock_ttl() -> datetime.timedelta:
4734
return datetime.timedelta(seconds=1)
4835

4936

50-
@pytest.fixture
51-
def with_short_default_redis_lock_ttl(mocker: MockerFixture) -> None:
52-
mocker.patch.object(
53-
redis_constants, "DEFAULT_LOCK_TTL", datetime.timedelta(seconds=0.25)
54-
)
55-
56-
57-
@pytest.fixture
58-
def lock_name(faker: Faker) -> str:
59-
return faker.pystr()
60-
61-
6237
async def test_redis_lock_no_ttl(redis_client_sdk: RedisClientSDK, lock_name: str):
6338
lock = redis_client_sdk.create_lock(lock_name, ttl=None)
6439
assert await lock.locked() is False
@@ -175,7 +150,7 @@ async def test_redis_lock_with_ttl(
175150

176151
# assert await redis_client_sdk.lock_value(lock_name) is None
177152

178-
# with pytest.raises(RuntimeError): # noqa: PT012
153+
# with pytest.raises(RuntimeError):
179154
# async with redis_client_sdk.lock_context(lock_name):
180155
# assert await redis_client_sdk.redis.get(lock_name) is not None
181156
# msg = "Expected error"
@@ -213,7 +188,7 @@ async def test_redis_lock_with_ttl(
213188
# )
214189

215190
# async def _inc_counter() -> None:
216-
# async with get_redis_client_sdk( # noqa: SIM117
191+
# async with get_redis_client_sdk(
217192
# RedisDatabase.RESOURCES
218193
# ) as redis_client_sdk:
219194
# async with redis_client_sdk.lock_context(
@@ -229,23 +204,6 @@ async def test_redis_lock_with_ttl(
229204
# assert counter.value == INCREASE_BY * INCREASE_OPERATIONS
230205

231206

232-
async def test_redis_client_sdks_manager(
233-
mock_redis_socket_timeout: None, redis_service: RedisSettings
234-
):
235-
all_redis_configs: set[RedisManagerDBConfig] = {
236-
RedisManagerDBConfig(database=db) for db in RedisDatabase
237-
}
238-
manager = RedisClientsManager(
239-
databases_configs=all_redis_configs,
240-
settings=redis_service,
241-
client_name="pytest",
242-
)
243-
244-
async with manager:
245-
for config in all_redis_configs:
246-
assert manager.client(config.database)
247-
248-
249207
async def test_redis_client_sdk_setup_shutdown(
250208
mock_redis_socket_timeout: None, redis_service: RedisSettings
251209
):
@@ -276,15 +234,8 @@ async def test_redis_client_sdk_setup_shutdown(
276234
await client.shutdown()
277235

278236

279-
@pytest.fixture
280-
def mock_default_socket_timeout(mocker: MockerFixture) -> None:
281-
mocker.patch.object(
282-
redis_constants, "DEFAULT_SOCKET_TIMEOUT", datetime.timedelta(seconds=0.25)
283-
)
284-
285-
286237
async def test_regression_fails_on_redis_service_outage(
287-
mock_default_socket_timeout: None,
238+
mock_redis_socket_timeout: None,
288239
paused_container: Callable[[str], AbstractAsyncContextManager[None]],
289240
redis_client_sdk: RedisClientSDK,
290241
):
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from servicelib.redis._clients_manager import RedisClientsManager
2+
from servicelib.redis._models import RedisManagerDBConfig
3+
from settings_library.redis import RedisDatabase, RedisSettings
4+
5+
6+
async def test_redis_client_sdks_manager(
7+
mock_redis_socket_timeout: None, redis_service: RedisSettings
8+
):
9+
all_redis_configs: set[RedisManagerDBConfig] = {
10+
RedisManagerDBConfig(database=db) for db in RedisDatabase
11+
}
12+
manager = RedisClientsManager(
13+
databases_configs=all_redis_configs,
14+
settings=redis_service,
15+
client_name="pytest",
16+
)
17+
18+
async with manager:
19+
for config in all_redis_configs:
20+
assert manager.client(config.database)

0 commit comments

Comments
 (0)