Skip to content

Commit da1ef55

Browse files
author
Andrei Neagu
committed
fixed failing tests
1 parent a612804 commit da1ef55

File tree

4 files changed

+75
-79
lines changed

4 files changed

+75
-79
lines changed

services/director-v2/src/simcore_service_director_v2/modules/catalog.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def create(cls, app: FastAPI, **kwargs):
6666

6767
@classmethod
6868
def instance(cls, app: FastAPI) -> "CatalogClient":
69-
assert type(app.state.catalog_client) == CatalogClient # nosec
69+
assert isinstance(app.state.catalog_client, CatalogClient) # nosec
7070
return app.state.catalog_client
7171

7272
@handle_errors("Catalog", logger)

services/director-v2/tests/unit/with_dbs/comp_scheduler/test_api_route_computations.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,6 @@ def mocked_director_service_fcts(
135135
minimal_app: FastAPI,
136136
fake_service_details: ServiceMetaDataPublished,
137137
fake_service_extras: ServiceExtras,
138-
fake_service_labels: dict[str, Any],
139138
) -> Iterator[respx.MockRouter]:
140139
# pylint: disable=not-context-manager
141140
with respx.mock(
@@ -151,12 +150,6 @@ def mocked_director_service_fcts(
151150
).respond(
152151
json={"data": [fake_service_details.model_dump(mode="json", by_alias=True)]}
153152
)
154-
respx_mock.get(
155-
re.compile(
156-
r"/services/simcore%2Fservices%2F(comp|dynamic|frontend)%2F[^/]+/\d+.\d+.\d+/labels"
157-
),
158-
name="get_service_labels",
159-
).respond(json={"data": fake_service_labels})
160153

161154
respx_mock.get(
162155
re.compile(
@@ -175,6 +168,7 @@ def mocked_catalog_service_fcts(
175168
minimal_app: FastAPI,
176169
fake_service_details: ServiceMetaDataPublished,
177170
fake_service_resources: ServiceResourcesDict,
171+
fake_service_labels: dict[str, Any],
178172
) -> Iterator[respx.MockRouter]:
179173
def _mocked_service_resources(request) -> httpx.Response:
180174
return httpx.Response(
@@ -223,6 +217,12 @@ def _mocked_services_details(
223217
),
224218
name="get_service_resources",
225219
).mock(side_effect=_mocked_service_resources)
220+
respx_mock.get(
221+
re.compile(
222+
r"/services/simcore%2Fservices%2F(comp|dynamic|frontend)%2F[^/]+/\d+.\d+.\d+/labels"
223+
),
224+
name="get_service_labels",
225+
).respond(json={"data": fake_service_labels})
226226
respx_mock.get(
227227
re.compile(
228228
r"services/(?P<service_key>simcore%2Fservices%2F(comp|dynamic|frontend)%2F[^/]+)/(?P<service_version>[^\.]+.[^\.]+.[^/\?]+).*"
@@ -238,7 +238,7 @@ def mocked_catalog_service_fcts_deprecated(
238238
minimal_app: FastAPI,
239239
fake_service_details: ServiceMetaDataPublished,
240240
fake_service_extras: ServiceExtras,
241-
):
241+
) -> Iterator[respx.MockRouter]:
242242
def _mocked_services_details(
243243
request, service_key: str, service_version: str
244244
) -> httpx.Response:
@@ -259,7 +259,7 @@ def _mocked_services_details(
259259
}
260260

261261
data = {
262-
**ServiceGet.model_config["json_schema_extra"]["examples"][0],
262+
**ServiceGet.model_json_schema()["examples"][0],
263263
**data_published,
264264
**deprecated,
265265
} # type: ignore
@@ -402,8 +402,8 @@ async def test_computation_create_validators(
402402

403403
async def test_create_computation(
404404
minimal_configuration: None,
405-
mocked_director_service_fcts,
406-
mocked_catalog_service_fcts,
405+
mocked_director_service_fcts: respx.MockRouter,
406+
mocked_catalog_service_fcts: respx.MockRouter,
407407
product_name: str,
408408
fake_workbench_without_outputs: dict[str, Any],
409409
registered_user: Callable[..., dict[str, Any]],
@@ -678,8 +678,8 @@ async def test_create_computation_with_wallet_with_no_clusters_keeper_raises_503
678678

679679
async def test_start_computation_without_product_fails(
680680
minimal_configuration: None,
681-
mocked_director_service_fcts,
682-
mocked_catalog_service_fcts,
681+
mocked_director_service_fcts: respx.MockRouter,
682+
mocked_catalog_service_fcts: respx.MockRouter,
683683
product_name: str,
684684
fake_workbench_without_outputs: dict[str, Any],
685685
registered_user: Callable[..., dict[str, Any]],
@@ -702,8 +702,8 @@ async def test_start_computation_without_product_fails(
702702

703703
async def test_start_computation(
704704
minimal_configuration: None,
705-
mocked_director_service_fcts,
706-
mocked_catalog_service_fcts,
705+
mocked_director_service_fcts: respx.MockRouter,
706+
mocked_catalog_service_fcts: respx.MockRouter,
707707
product_name: str,
708708
fake_workbench_without_outputs: dict[str, Any],
709709
registered_user: Callable[..., dict[str, Any]],
@@ -734,8 +734,8 @@ async def test_start_computation(
734734

735735
async def test_start_computation_with_project_node_resources_defined(
736736
minimal_configuration: None,
737-
mocked_director_service_fcts,
738-
mocked_catalog_service_fcts,
737+
mocked_director_service_fcts: respx.MockRouter,
738+
mocked_catalog_service_fcts: respx.MockRouter,
739739
product_name: str,
740740
fake_workbench_without_outputs: dict[str, Any],
741741
registered_user: Callable[..., dict[str, Any]],
@@ -779,8 +779,8 @@ async def test_start_computation_with_project_node_resources_defined(
779779

780780
async def test_start_computation_with_deprecated_services_raises_406(
781781
minimal_configuration: None,
782-
mocked_director_service_fcts,
783-
mocked_catalog_service_fcts_deprecated,
782+
mocked_director_service_fcts: respx.MockRouter,
783+
mocked_catalog_service_fcts_deprecated: respx.MockRouter,
784784
product_name: str,
785785
fake_workbench_without_outputs: dict[str, Any],
786786
fake_workbench_adjacency: dict[str, Any],

services/director-v2/tests/unit/with_dbs/test_api_route_dynamic_services.py

Lines changed: 42 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -163,17 +163,11 @@ async def mock_retrieve_features(
163163
) as respx_mock:
164164
if is_legacy:
165165
service_details = RunningDynamicServiceDetails.model_validate(
166-
RunningDynamicServiceDetails.model_config["json_schema_extra"][
167-
"examples"
168-
][0]
166+
RunningDynamicServiceDetails.model_json_schema()["examples"][0]
169167
)
170168
respx_mock.post(
171169
f"{service_details.legacy_service_url}/retrieve", name="retrieve"
172-
).respond(
173-
json=RetrieveDataOutEnveloped.model_config["json_schema_extra"][
174-
"examples"
175-
][0]
176-
)
170+
).respond(json=RetrieveDataOutEnveloped.model_json_schema()["examples"][0])
177171

178172
yield respx_mock
179173
# no cleanup required
@@ -215,6 +209,25 @@ async def _mocked_context_manger(*args, **kwargs) -> AsyncIterator[int]:
215209
)
216210

217211

212+
@pytest.fixture
213+
def mocked_catalog_service_api(
214+
minimal_app: FastAPI, service: dict[str, Any], service_labels: dict[str, Any]
215+
) -> Iterator[MockRouter]:
216+
# pylint: disable=not-context-manager
217+
with respx.mock(
218+
base_url=minimal_app.state.settings.DIRECTOR_V2_CATALOG.api_base_url,
219+
assert_all_called=False,
220+
assert_all_mocked=True,
221+
) as respx_mock:
222+
# get services labels
223+
respx_mock.get(
224+
f"/services/{urllib.parse.quote_plus(service['key'])}/{service['version']}/labels",
225+
name="service labels",
226+
).respond(json={"data": service_labels})
227+
228+
yield respx_mock
229+
230+
218231
@pytest.fixture
219232
def mocked_director_v0_service_api(
220233
minimal_app: FastAPI, service: dict[str, Any], service_labels: dict[str, Any]
@@ -236,9 +249,7 @@ def mocked_director_v0_service_api(
236249
name="running interactive service",
237250
).respond(
238251
json={
239-
"data": RunningDynamicServiceDetails.model_config["json_schema_extra"][
240-
"examples"
241-
][0]
252+
"data": RunningDynamicServiceDetails.model_json_schema()["examples"][0]
242253
}
243254
)
244255

@@ -255,9 +266,7 @@ def get_stack_status(node_uuid: NodeID) -> RunningDynamicServiceDetails:
255266
raise DynamicSidecarNotFoundError(node_uuid=node_uuid)
256267

257268
return RunningDynamicServiceDetails.model_validate(
258-
RunningDynamicServiceDetails.model_config["json_schema_extra"]["examples"][
259-
0
260-
]
269+
RunningDynamicServiceDetails.model_json_schema()["examples"][0]
261270
)
262271

263272
module_base = "simcore_service_director_v2.modules.dynamic_sidecar.scheduler"
@@ -289,9 +298,7 @@ def remove_service(node_uuid: NodeID, *ars: Any, **kwargs: Any) -> None:
289298
[
290299
pytest.param(
291300
*ServiceParams(
292-
service=DynamicServiceCreate.model_config["json_schema_extra"][
293-
"example"
294-
],
301+
service=DynamicServiceCreate.model_json_schema()["example"],
295302
service_labels=SimcoreServiceLabels.model_json_schema()["examples"][0],
296303
exp_status_code=status.HTTP_307_TEMPORARY_REDIRECT,
297304
is_legacy=True,
@@ -300,9 +307,7 @@ def remove_service(node_uuid: NodeID, *ars: Any, **kwargs: Any) -> None:
300307
),
301308
pytest.param(
302309
*ServiceParams(
303-
service=DynamicServiceCreate.model_config["json_schema_extra"][
304-
"example"
305-
],
310+
service=DynamicServiceCreate.model_json_schema()["example"],
306311
service_labels=SimcoreServiceLabels.model_json_schema()["examples"][1],
307312
exp_status_code=status.HTTP_201_CREATED,
308313
is_legacy=False,
@@ -311,9 +316,7 @@ def remove_service(node_uuid: NodeID, *ars: Any, **kwargs: Any) -> None:
311316
),
312317
pytest.param(
313318
*ServiceParams(
314-
service=DynamicServiceCreate.model_config["json_schema_extra"][
315-
"example"
316-
],
319+
service=DynamicServiceCreate.model_json_schema()["example"],
317320
service_labels=SimcoreServiceLabels.model_json_schema()["examples"][2],
318321
exp_status_code=status.HTTP_201_CREATED,
319322
is_legacy=False,
@@ -325,6 +328,7 @@ def remove_service(node_uuid: NodeID, *ars: Any, **kwargs: Any) -> None:
325328
def test_create_dynamic_services(
326329
minimal_config: None,
327330
mocked_director_v0_service_api: MockRouter,
331+
mocked_catalog_service_api: MockRouter,
328332
mocked_director_v2_scheduler: None,
329333
client: TestClient,
330334
dynamic_sidecar_headers: dict[str, str],
@@ -367,9 +371,7 @@ def test_create_dynamic_services(
367371
[
368372
pytest.param(
369373
*ServiceParams(
370-
service=DynamicServiceCreate.model_config["json_schema_extra"][
371-
"example"
372-
],
374+
service=DynamicServiceCreate.model_json_schema()["example"],
373375
service_labels=SimcoreServiceLabels.model_json_schema()["examples"][0],
374376
exp_status_code=status.HTTP_307_TEMPORARY_REDIRECT,
375377
is_legacy=True,
@@ -378,9 +380,7 @@ def test_create_dynamic_services(
378380
),
379381
pytest.param(
380382
*ServiceParams(
381-
service=DynamicServiceCreate.model_config["json_schema_extra"][
382-
"example"
383-
],
383+
service=DynamicServiceCreate.model_json_schema()["example"],
384384
service_labels=SimcoreServiceLabels.model_json_schema()["examples"][1],
385385
exp_status_code=status.HTTP_200_OK,
386386
is_legacy=False,
@@ -389,9 +389,7 @@ def test_create_dynamic_services(
389389
),
390390
pytest.param(
391391
*ServiceParams(
392-
service=DynamicServiceCreate.model_config["json_schema_extra"][
393-
"example"
394-
],
392+
service=DynamicServiceCreate.model_json_schema()["example"],
395393
service_labels=SimcoreServiceLabels.model_json_schema()["examples"][2],
396394
exp_status_code=status.HTTP_200_OK,
397395
is_legacy=False,
@@ -402,6 +400,7 @@ def test_create_dynamic_services(
402400
)
403401
def test_get_service_status(
404402
mocked_director_v0_service_api: MockRouter,
403+
mocked_catalog_service_api: MockRouter,
405404
mocked_director_v2_scheduler: None,
406405
client: TestClient,
407406
service: dict[str, Any],
@@ -431,9 +430,7 @@ def test_get_service_status(
431430
[
432431
pytest.param(
433432
*ServiceParams(
434-
service=DynamicServiceCreate.model_config["json_schema_extra"][
435-
"example"
436-
],
433+
service=DynamicServiceCreate.model_json_schema()["example"],
437434
service_labels=SimcoreServiceLabels.model_json_schema()["examples"][0],
438435
exp_status_code=status.HTTP_307_TEMPORARY_REDIRECT,
439436
is_legacy=True,
@@ -442,9 +439,7 @@ def test_get_service_status(
442439
),
443440
pytest.param(
444441
*ServiceParams(
445-
service=DynamicServiceCreate.model_config["json_schema_extra"][
446-
"example"
447-
],
442+
service=DynamicServiceCreate.model_json_schema()["example"],
448443
service_labels=SimcoreServiceLabels.model_json_schema()["examples"][1],
449444
exp_status_code=status.HTTP_204_NO_CONTENT,
450445
is_legacy=False,
@@ -453,9 +448,7 @@ def test_get_service_status(
453448
),
454449
pytest.param(
455450
*ServiceParams(
456-
service=DynamicServiceCreate.model_config["json_schema_extra"][
457-
"example"
458-
],
451+
service=DynamicServiceCreate.model_json_schema()["example"],
459452
service_labels=SimcoreServiceLabels.model_json_schema()["examples"][2],
460453
exp_status_code=status.HTTP_204_NO_CONTENT,
461454
is_legacy=False,
@@ -470,6 +463,7 @@ def test_get_service_status(
470463
def test_delete_service(
471464
docker_swarm: None,
472465
mocked_director_v0_service_api: MockRouter,
466+
mocked_catalog_service_api: MockRouter,
473467
mocked_director_v2_scheduler: None,
474468
mocked_service_awaits_manual_interventions: None,
475469
client: TestClient,
@@ -509,9 +503,7 @@ def dynamic_sidecar_scheduler(minimal_app: FastAPI) -> DynamicSidecarsScheduler:
509503
[
510504
pytest.param(
511505
*ServiceParams(
512-
service=DynamicServiceCreate.model_config["json_schema_extra"][
513-
"example"
514-
],
506+
service=DynamicServiceCreate.model_json_schema()["example"],
515507
service_labels=SimcoreServiceLabels.model_json_schema()["examples"][1],
516508
exp_status_code=status.HTTP_201_CREATED,
517509
is_legacy=False,
@@ -522,6 +514,7 @@ def dynamic_sidecar_scheduler(minimal_app: FastAPI) -> DynamicSidecarsScheduler:
522514
def test_delete_service_waiting_for_manual_intervention(
523515
minimal_config: None,
524516
mocked_director_v0_service_api: MockRouter,
517+
mocked_catalog_service_api: MockRouter,
525518
mocked_director_v2_scheduler: None,
526519
client: TestClient,
527520
dynamic_sidecar_headers: dict[str, str],
@@ -558,9 +551,7 @@ def test_delete_service_waiting_for_manual_intervention(
558551
[
559552
pytest.param(
560553
*ServiceParams(
561-
service=DynamicServiceCreate.model_config["json_schema_extra"][
562-
"example"
563-
],
554+
service=DynamicServiceCreate.model_json_schema()["example"],
564555
service_labels=SimcoreServiceLabels.model_json_schema()["examples"][0],
565556
exp_status_code=status.HTTP_200_OK,
566557
is_legacy=True,
@@ -569,9 +560,7 @@ def test_delete_service_waiting_for_manual_intervention(
569560
),
570561
pytest.param(
571562
*ServiceParams(
572-
service=DynamicServiceCreate.model_config["json_schema_extra"][
573-
"example"
574-
],
563+
service=DynamicServiceCreate.model_json_schema()["example"],
575564
service_labels=SimcoreServiceLabels.model_json_schema()["examples"][1],
576565
exp_status_code=status.HTTP_200_OK,
577566
is_legacy=False,
@@ -580,9 +569,7 @@ def test_delete_service_waiting_for_manual_intervention(
580569
),
581570
pytest.param(
582571
*ServiceParams(
583-
service=DynamicServiceCreate.model_config["json_schema_extra"][
584-
"example"
585-
],
572+
service=DynamicServiceCreate.model_json_schema()["example"],
586573
service_labels=SimcoreServiceLabels.model_json_schema()["examples"][2],
587574
exp_status_code=status.HTTP_200_OK,
588575
is_legacy=False,
@@ -595,6 +582,7 @@ def test_retrieve(
595582
minimal_config: None,
596583
mock_retrieve_features: MockRouter | None,
597584
mocked_director_v0_service_api: MockRouter,
585+
mocked_catalog_service_api: MockRouter,
598586
mocked_director_v2_scheduler: None,
599587
client: TestClient,
600588
service: dict[str, Any],
@@ -607,8 +595,7 @@ def test_retrieve(
607595
response.status_code == exp_status_code
608596
), f"expected status code {exp_status_code}, received {response.status_code}: {response.text}"
609597
assert (
610-
response.json()
611-
== RetrieveDataOutEnveloped.model_config["json_schema_extra"]["examples"][0]
598+
response.json() == RetrieveDataOutEnveloped.model_json_schema()["examples"][0]
612599
)
613600

614601

0 commit comments

Comments
 (0)