From 80dbbd367fb6886bf8f90511092379619fb4dee3 Mon Sep 17 00:00:00 2001 From: Giancarlo Romeo Date: Fri, 7 Mar 2025 14:18:59 +0100 Subject: [PATCH 1/5] remove user warnings --- .../services_api_mocks_for_aiohttp_clients.py | 36 ++++++++++++++----- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/packages/pytest-simcore/src/pytest_simcore/services_api_mocks_for_aiohttp_clients.py b/packages/pytest-simcore/src/pytest_simcore/services_api_mocks_for_aiohttp_clients.py index 7b7e97461704..ab47be2eaf9d 100644 --- a/packages/pytest-simcore/src/pytest_simcore/services_api_mocks_for_aiohttp_clients.py +++ b/packages/pytest-simcore/src/pytest_simcore/services_api_mocks_for_aiohttp_clients.py @@ -105,10 +105,20 @@ def create_computation_cb(url, **kwargs) -> CallbackResult: "62237c33-8d6c-4709-aa92-c3cf693dd6d2", ], } - returned_computation = ComputationTask.model_validate( - ComputationTask.model_config["json_schema_extra"]["examples"][0] - ).model_copy( - update={ + + assert "json_schema_extra" in ComputationTask.model_config + assert isinstance(ComputationTask.model_config["json_schema_extra"], dict) + assert isinstance( + ComputationTask.model_config["json_schema_extra"]["examples"], list + ) + assert isinstance( + ComputationTask.model_config["json_schema_extra"]["examples"][0], dict + ) + computation: dict[str, Any] = ComputationTask.model_config["json_schema_extra"][ + "examples" + ][0].copy() + computation.update( + { "id": f"{kwargs['json']['project_id']}", "state": state, "pipeline_details": { @@ -118,6 +128,10 @@ def create_computation_cb(url, **kwargs) -> CallbackResult: }, } ) + returned_computation = ComputationTask.model_validate( + computation + ) + return CallbackResult( status=201, # NOTE: aioresponses uses json.dump which does NOT encode serialization of UUIDs @@ -134,10 +148,15 @@ def get_computation_cb(url, **kwargs) -> CallbackResult: assert isinstance( ComputationGet.model_config["json_schema_extra"]["examples"], list ) - returned_computation = ComputationGet.model_validate( - ComputationGet.model_config["json_schema_extra"]["examples"][0] - ).model_copy( - update={ + assert isinstance( + ComputationGet.model_config["json_schema_extra"]["examples"][0], dict + ) + + computation: dict[str, Any] = ComputationGet.model_config["json_schema_extra"][ + "examples" + ][0].copy() + computation.update( + { "id": Path(url.path).name, "state": state, "pipeline_details": { @@ -147,6 +166,7 @@ def get_computation_cb(url, **kwargs) -> CallbackResult: }, } ) + returned_computation = ComputationGet.model_validate(computation) return CallbackResult( status=200, From 87d939dff4f26291c18c6b02b7a54abc1422725a Mon Sep 17 00:00:00 2001 From: Giancarlo Romeo Date: Fri, 7 Mar 2025 14:49:59 +0100 Subject: [PATCH 2/5] fix subgraphs ids --- .../server/tests/unit/with_dbs/01/test_director_v2_handlers.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/web/server/tests/unit/with_dbs/01/test_director_v2_handlers.py b/services/web/server/tests/unit/with_dbs/01/test_director_v2_handlers.py index 613e32cee193..cb40a779378a 100644 --- a/services/web/server/tests/unit/with_dbs/01/test_director_v2_handlers.py +++ b/services/web/server/tests/unit/with_dbs/01/test_director_v2_handlers.py @@ -58,12 +58,13 @@ async def test_start_partial_computation( project_id: ProjectID, user_role: UserRole, expected: ExpectedResponse, + faker: Faker, ): assert client.app url = client.app.router["start_computation"].url_for(project_id=f"{project_id}") rsp = await client.post( - f"{url}", json={"subgraph": ["node_id1", "node_id2", "node_id498"]} + f"{url}", json={"subgraph": [faker.uuid4(), faker.uuid4(), faker.uuid4()]} ) data, error = await assert_status( rsp, From 4ae726f7c81803b3fd3dde536e3afbc587257c74 Mon Sep 17 00:00:00 2001 From: Giancarlo Romeo Date: Fri, 7 Mar 2025 15:30:00 +0100 Subject: [PATCH 3/5] fix node states --- .../pytest_simcore/services_api_mocks_for_aiohttp_clients.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pytest-simcore/src/pytest_simcore/services_api_mocks_for_aiohttp_clients.py b/packages/pytest-simcore/src/pytest_simcore/services_api_mocks_for_aiohttp_clients.py index ab47be2eaf9d..158e722b7c1e 100644 --- a/packages/pytest-simcore/src/pytest_simcore/services_api_mocks_for_aiohttp_clients.py +++ b/packages/pytest-simcore/src/pytest_simcore/services_api_mocks_for_aiohttp_clients.py @@ -93,7 +93,7 @@ def create_computation_cb(url, **kwargs) -> CallbackResult: "62237c33-8d6c-4709-aa92-c3cf693dd6d2", "0bdf824f-57cb-4e38-949e-fd12c184f000", ] - node_states[node_id] = {"state": {"modified": True, "dependencies": []}} + node_states[node_id] = {"modified": True, "dependencies": []} node_states["62237c33-8d6c-4709-aa92-c3cf693dd6d2"] = { "modified": True, "dependencies": ["2f493631-30b4-4ad8-90f2-a74e4b46fe73"], From b3ba3a9ac1842f44fe1c663beff85fff4e3ead57 Mon Sep 17 00:00:00 2001 From: Giancarlo Romeo Date: Mon, 10 Mar 2025 10:31:27 +0100 Subject: [PATCH 4/5] simplify --- .../services_api_mocks_for_aiohttp_clients.py | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/packages/pytest-simcore/src/pytest_simcore/services_api_mocks_for_aiohttp_clients.py b/packages/pytest-simcore/src/pytest_simcore/services_api_mocks_for_aiohttp_clients.py index 158e722b7c1e..bf6a58203682 100644 --- a/packages/pytest-simcore/src/pytest_simcore/services_api_mocks_for_aiohttp_clients.py +++ b/packages/pytest-simcore/src/pytest_simcore/services_api_mocks_for_aiohttp_clients.py @@ -106,17 +106,12 @@ def create_computation_cb(url, **kwargs) -> CallbackResult: ], } - assert "json_schema_extra" in ComputationTask.model_config - assert isinstance(ComputationTask.model_config["json_schema_extra"], dict) + json_schema = ComputationTask.model_json_schema() + assert isinstance(json_schema["examples"], list) assert isinstance( - ComputationTask.model_config["json_schema_extra"]["examples"], list + json_schema["examples"][0], dict ) - assert isinstance( - ComputationTask.model_config["json_schema_extra"]["examples"][0], dict - ) - computation: dict[str, Any] = ComputationTask.model_config["json_schema_extra"][ - "examples" - ][0].copy() + computation: dict[str, Any] = json_schema["examples"][0].copy() computation.update( { "id": f"{kwargs['json']['project_id']}", @@ -143,16 +138,16 @@ def get_computation_cb(url, **kwargs) -> CallbackResult: state = RunningState.NOT_STARTED pipeline: dict[str, list[str]] = FULL_PROJECT_PIPELINE_ADJACENCY node_states = FULL_PROJECT_NODE_STATES - assert "json_schema_extra" in ComputationGet.model_config - assert isinstance(ComputationGet.model_config["json_schema_extra"], dict) + + json_schema = ComputationTask.model_json_schema() assert isinstance( - ComputationGet.model_config["json_schema_extra"]["examples"], list + json_schema["examples"], list ) assert isinstance( - ComputationGet.model_config["json_schema_extra"]["examples"][0], dict + json_schema["examples"][0], dict ) - computation: dict[str, Any] = ComputationGet.model_config["json_schema_extra"][ + computation: dict[str, Any] = json_schema[ "examples" ][0].copy() computation.update( From 6a2548a6a66769e85569ed64ab9888547fdaeec4 Mon Sep 17 00:00:00 2001 From: Giancarlo Romeo Date: Mon, 10 Mar 2025 11:58:51 +0100 Subject: [PATCH 5/5] fix jsonschema --- .../pytest_simcore/services_api_mocks_for_aiohttp_clients.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pytest-simcore/src/pytest_simcore/services_api_mocks_for_aiohttp_clients.py b/packages/pytest-simcore/src/pytest_simcore/services_api_mocks_for_aiohttp_clients.py index bf6a58203682..5ad9ed0d6714 100644 --- a/packages/pytest-simcore/src/pytest_simcore/services_api_mocks_for_aiohttp_clients.py +++ b/packages/pytest-simcore/src/pytest_simcore/services_api_mocks_for_aiohttp_clients.py @@ -139,7 +139,7 @@ def get_computation_cb(url, **kwargs) -> CallbackResult: pipeline: dict[str, list[str]] = FULL_PROJECT_PIPELINE_ADJACENCY node_states = FULL_PROJECT_NODE_STATES - json_schema = ComputationTask.model_json_schema() + json_schema = ComputationGet.model_json_schema() assert isinstance( json_schema["examples"], list )