Skip to content

Commit fa67a15

Browse files
committed
moved stuff around
1 parent bcbc455 commit fa67a15

File tree

2 files changed

+74
-75
lines changed

2 files changed

+74
-75
lines changed

services/storage/tests/conftest.py

Lines changed: 74 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121
import simcore_service_storage
2222
from asgi_lifespan import LifespanManager
2323
from aws_library.s3 import SimcoreS3API
24+
from celery import Celery
25+
from celery.contrib.testing.worker import TestWorkController, start_worker
26+
from celery.signals import worker_init, worker_shutdown
2427
from faker import Faker
2528
from fakeredis.aioredis import FakeRedis
2629
from fastapi import FastAPI
@@ -41,7 +44,7 @@
4144
from models_library.users import UserID
4245
from models_library.utils.fastapi_encoders import jsonable_encoder
4346
from pydantic import ByteSize, TypeAdapter
44-
from pytest_mock import MockerFixture
47+
from pytest_mock import MockerFixture, MockFixture
4548
from pytest_simcore.helpers.fastapi import url_from_operation_id
4649
from pytest_simcore.helpers.httpx_assert_checks import assert_status
4750
from pytest_simcore.helpers.logging_tools import log_context
@@ -57,15 +60,22 @@
5760
)
5861
from pytest_simcore.helpers.typing_env import EnvVarsDict
5962
from servicelib.aiohttp import status
63+
from servicelib.rabbitmq._client_rpc import RabbitMQRPCClient
6064
from servicelib.utils import limited_gather
6165
from settings_library.rabbit import RabbitSettings
6266
from simcore_postgres_database.models.tokens import tokens
6367
from simcore_postgres_database.storage_models import file_meta_data, projects, users
68+
from simcore_service_storage.api._worker_tasks.tasks import setup_worker_tasks
6469
from simcore_service_storage.core.application import create_app
6570
from simcore_service_storage.core.settings import ApplicationSettings
6671
from simcore_service_storage.datcore_dsm import DatCoreDataManager
6772
from simcore_service_storage.dsm import get_dsm_provider
6873
from simcore_service_storage.models import FileMetaData, FileMetaDataAtDB, S3BucketName
74+
from simcore_service_storage.modules.celery.signals import (
75+
on_worker_init,
76+
on_worker_shutdown,
77+
)
78+
from simcore_service_storage.modules.celery.worker import CeleryTaskQueueWorker
6979
from simcore_service_storage.modules.s3 import get_s3_client
7080
from simcore_service_storage.simcore_s3_dsm import SimcoreS3DataManager
7181
from sqlalchemy import literal_column
@@ -959,3 +969,66 @@ def celery_config() -> dict[str, Any]:
959969
"task_track_started": True,
960970
"task_send_sent_event": True,
961971
}
972+
973+
974+
@pytest.fixture
975+
def mock_celery_app(mocker: MockFixture, celery_config: dict[str, Any]) -> None:
976+
celery_app = Celery(**celery_config)
977+
978+
mocker.patch(
979+
"simcore_service_storage.modules.celery.create_app",
980+
return_value=celery_app,
981+
)
982+
983+
984+
@pytest.fixture
985+
async def celery_worker_controller(
986+
app_environment: EnvVarsDict,
987+
initialized_app: FastAPI,
988+
celery_app: Celery,
989+
monkeypatch: pytest.MonkeyPatch,
990+
) -> AsyncIterator[TestWorkController]:
991+
# Signals must be explicitily connected
992+
worker_init.connect(on_worker_init)
993+
worker_shutdown.connect(on_worker_shutdown)
994+
995+
setup_worker_tasks(celery_app)
996+
997+
monkeypatch.setenv("STORAGE_WORKER_MODE", "true")
998+
with start_worker(
999+
celery_app,
1000+
pool="threads",
1001+
concurrency=1,
1002+
loglevel="info",
1003+
perform_ping_check=False,
1004+
worker_kwargs={"hostname": "celery@worker1"},
1005+
) as worker:
1006+
worker_init.send(sender=worker)
1007+
1008+
# NOTE: wait for worker to be ready (sic)
1009+
await asyncio.sleep(5)
1010+
yield worker
1011+
1012+
worker_shutdown.send(sender=worker)
1013+
1014+
1015+
@pytest.fixture
1016+
def celery_worker(
1017+
celery_worker_controller: TestWorkController,
1018+
) -> CeleryTaskQueueWorker:
1019+
assert isinstance(celery_worker_controller.app, Celery)
1020+
return CeleryTaskQueueWorker(celery_worker_controller.app)
1021+
1022+
1023+
@pytest.fixture
1024+
async def storage_rabbitmq_rpc_client(
1025+
rabbitmq_rpc_client: Callable[[str], Awaitable[RabbitMQRPCClient]],
1026+
) -> RabbitMQRPCClient:
1027+
rpc_client = await rabbitmq_rpc_client("pytest_storage_rpc_client")
1028+
assert rpc_client
1029+
return rpc_client
1030+
1031+
1032+
@pytest.fixture
1033+
def product_name(faker: Faker) -> str:
1034+
return faker.name()

services/storage/tests/unit/test_rpc_handlers_paths.py

Lines changed: 0 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,10 @@
1010
import asyncio
1111
import datetime
1212
import random
13-
from collections.abc import AsyncIterator, Awaitable, Callable
1413
from pathlib import Path
1514
from typing import Any, TypeAlias
1615

1716
import pytest
18-
from celery import Celery
19-
from celery.contrib.testing.worker import TestWorkController, start_worker
20-
from celery.signals import worker_init, worker_shutdown
2117
from faker import Faker
2218
from fastapi import FastAPI
2319
from models_library.api_schemas_rpc_async_jobs.async_jobs import (
@@ -29,19 +25,12 @@
2925
from models_library.rabbitmq_basic_types import RPCMethodName
3026
from models_library.users import UserID
3127
from pydantic import ByteSize, TypeAdapter
32-
from pytest_mock import MockFixture
3328
from pytest_simcore.helpers.storage_utils import FileIDDict, ProjectWithFilesParams
34-
from pytest_simcore.helpers.typing_env import EnvVarsDict
3529
from servicelib.rabbitmq._client_rpc import RabbitMQRPCClient
3630
from servicelib.rabbitmq.rpc_interfaces.async_jobs.async_jobs import (
3731
wait_and_get_result,
3832
)
3933
from servicelib.rabbitmq.rpc_interfaces.storage.paths import compute_path_size
40-
from simcore_service_storage.api._worker_tasks.tasks import setup_worker_tasks
41-
from simcore_service_storage.modules.celery.signals import (
42-
on_worker_init,
43-
on_worker_shutdown,
44-
)
4534
from simcore_service_storage.modules.celery.worker import CeleryTaskQueueWorker
4635
from simcore_service_storage.simcore_s3_dsm import SimcoreS3DataManager
4736

@@ -103,69 +92,6 @@ async def _assert_compute_path_size(
10392
pytest.fail("Job did not finish")
10493

10594

106-
@pytest.fixture
107-
def mock_celery_app(mocker: MockFixture, celery_config: dict[str, Any]) -> None:
108-
celery_app = Celery(**celery_config)
109-
110-
mocker.patch(
111-
"simcore_service_storage.modules.celery.create_app",
112-
return_value=celery_app,
113-
)
114-
115-
116-
@pytest.fixture
117-
async def celery_worker_controller(
118-
app_environment: EnvVarsDict,
119-
initialized_app: FastAPI,
120-
celery_app: Celery,
121-
monkeypatch: pytest.MonkeyPatch,
122-
) -> AsyncIterator[TestWorkController]:
123-
# Signals must be explicitily connected
124-
worker_init.connect(on_worker_init)
125-
worker_shutdown.connect(on_worker_shutdown)
126-
127-
setup_worker_tasks(celery_app)
128-
129-
monkeypatch.setenv("STORAGE_WORKER_MODE", "true")
130-
with start_worker(
131-
celery_app,
132-
pool="threads",
133-
concurrency=1,
134-
loglevel="info",
135-
perform_ping_check=False,
136-
worker_kwargs={"hostname": "celery@worker1"},
137-
) as worker:
138-
worker_init.send(sender=worker)
139-
140-
# NOTE: wait for worker to be ready (sic)
141-
await asyncio.sleep(5)
142-
yield worker
143-
144-
worker_shutdown.send(sender=worker)
145-
146-
147-
@pytest.fixture
148-
def celery_worker(
149-
celery_worker_controller: TestWorkController,
150-
) -> CeleryTaskQueueWorker:
151-
assert isinstance(celery_worker_controller.app, Celery)
152-
return CeleryTaskQueueWorker(celery_worker_controller.app)
153-
154-
155-
@pytest.fixture
156-
async def storage_rabbitmq_rpc_client(
157-
rabbitmq_rpc_client: Callable[[str], Awaitable[RabbitMQRPCClient]],
158-
) -> RabbitMQRPCClient:
159-
rpc_client = await rabbitmq_rpc_client("pytest_storage_rpc_client")
160-
assert rpc_client
161-
return rpc_client
162-
163-
164-
@pytest.fixture
165-
def product_name(faker: Faker) -> str:
166-
return faker.name()
167-
168-
16995
@pytest.mark.parametrize(
17096
"location_id",
17197
[SimcoreS3DataManager.get_location_id()],

0 commit comments

Comments
 (0)