Skip to content

Commit e279206

Browse files
committed
insert fake run_function
1 parent 94324cf commit e279206

File tree

2 files changed

+72
-1
lines changed

2 files changed

+72
-1
lines changed

services/api-server/tests/unit/celery/conftest.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,19 @@ def _(celery_app: Celery) -> None: ...
4747
return _
4848

4949

50+
@pytest.fixture
51+
def add_worker_tasks() -> bool:
52+
"override to not add default worker tasks"
53+
return True
54+
55+
5056
@pytest.fixture
5157
async def with_storage_celery_worker(
5258
app_environment: EnvVarsDict,
5359
celery_app: Celery,
5460
monkeypatch: pytest.MonkeyPatch,
5561
register_celery_tasks: Callable[[Celery], None],
62+
add_worker_tasks: bool,
5663
) -> AsyncIterator[TestWorkController]:
5764
# Signals must be explicitily connected
5865
monkeypatch.setenv("API_SERVER_WORKER_MODE", "true")
@@ -69,7 +76,8 @@ def _on_worker_init_wrapper(sender: WorkController, **_kwargs):
6976
worker_init.connect(_on_worker_init_wrapper)
7077
worker_shutdown.connect(on_worker_shutdown)
7178

72-
setup_worker_tasks(celery_app)
79+
if add_worker_tasks:
80+
setup_worker_tasks(celery_app)
7381
register_celery_tasks(celery_app)
7482

7583
with start_worker(
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,68 @@
1+
from collections.abc import Callable
2+
3+
import pytest
4+
from celery import Celery, Task
15
from celery.contrib.testing.worker import TestWorkController
6+
from celery_library.task import register_task
7+
from faker import Faker
8+
from models_library.functions import (
9+
FunctionClass,
10+
FunctionID,
11+
FunctionInputs,
12+
FunctionJobID,
13+
RegisteredFunction,
14+
RegisteredProjectFunctionJob,
15+
)
16+
from models_library.projects import ProjectID
17+
from servicelib.celery.models import TaskID
18+
from simcore_service_api_server.api.dependencies.authentication import Identity
19+
from simcore_service_api_server.celery._worker_tasks._functions_tasks import (
20+
run_function as run_function_task,
21+
)
22+
from simcore_service_api_server.models.api_resources import JobLinks
23+
from simcore_service_api_server.models.schemas.jobs import (
24+
JobPricingSpecification,
25+
NodeID,
26+
)
27+
28+
_faker = Faker()
29+
30+
31+
def _register_fake_run_function_task() -> Callable[[Celery], None]:
32+
33+
async def run_function(
34+
task: Task,
35+
task_id: TaskID,
36+
*,
37+
user_identity: Identity,
38+
function: RegisteredFunction,
39+
function_inputs: FunctionInputs,
40+
pricing_spec: JobPricingSpecification | None,
41+
job_links: JobLinks,
42+
x_simcore_parent_project_uuid: NodeID | None,
43+
x_simcore_parent_node_id: NodeID | None,
44+
):
45+
return RegisteredProjectFunctionJob(
46+
title=_faker.sentence(),
47+
description=_faker.paragraph(),
48+
function_uid=FunctionID(_faker.uuid4()),
49+
inputs=function_inputs,
50+
outputs=None,
51+
function_class=FunctionClass.PROJECT,
52+
uid=FunctionJobID(_faker.uuid4()),
53+
created_at=_faker.date_time(),
54+
project_job_id=ProjectID(_faker.uuid4()),
55+
)
56+
57+
assert run_function_task.__name__ == run_function.__name__
58+
59+
def _(celery_app: Celery) -> None:
60+
register_task(celery_app, run_function)
61+
62+
return _
263

364

65+
@pytest.mark.parametrize("register_celery_tasks", [_register_fake_run_function_task])
66+
@pytest.mark.parametrize("add_worker_tasks", [False])
467
async def test_with_fake_run_function(with_storage_celery_worker: TestWorkController):
568
pass

0 commit comments

Comments
 (0)