77# pylint: disable=too-many-positional-arguments
88
99from collections .abc import Awaitable , Callable
10+ from datetime import datetime , timezone
1011from typing import Any
1112
12- from models_library .api_schemas_directorv2 .comp_runs import ComputationRunRpcGetPage
13+ from models_library .api_schemas_directorv2 .comp_runs import (
14+ ComputationRunRpcGetPage ,
15+ ComputationTaskRpcGetPage ,
16+ )
1317from models_library .projects import ProjectAtDB
18+ from models_library .projects_state import RunningState
1419from servicelib .rabbitmq import RabbitMQRPCClient
1520from servicelib .rabbitmq .rpc_interfaces .director_v2 import (
1621 computations as rpc_computations ,
4853# monkeypatch.setenv("S3_BUCKET_NAME", faker.pystr())
4954
5055
51- async def test_get_computation_from_published_computation_task (
52- # minimal_configuration: None,
56+ async def test_rpc_list_computation_runs_and_tasks (
5357 fake_workbench_without_outputs : dict [str , Any ],
5458 fake_workbench_adjacency : dict [str , Any ],
5559 registered_user : Callable [..., dict [str , Any ]],
5660 project : Callable [..., Awaitable [ProjectAtDB ]],
5761 create_pipeline : Callable [..., Awaitable [CompPipelineAtDB ]],
5862 create_tasks : Callable [..., Awaitable [list [CompTaskAtDB ]]],
5963 create_comp_run : Callable [..., Awaitable [CompRunsAtDB ]],
60- # async_client: httpx.AsyncClient,
6164 rpc_client : RabbitMQRPCClient ,
6265):
6366 user = registered_user ()
@@ -67,10 +70,10 @@ async def test_get_computation_from_published_computation_task(
6770 dag_adjacency_list = fake_workbench_adjacency ,
6871 )
6972 comp_tasks = await create_tasks (
70- user = user , project = proj , state = StateType .PUBLISHED , progress = 0
73+ user = user , project = proj , state = StateType .PUBLISHED , progress = None
7174 )
7275 comp_runs = await create_comp_run (
73- user = user , project = proj , result = StateType .PUBLISHED
76+ user = user , project = proj , result = RunningState .PUBLISHED
7477 )
7578 assert comp_runs
7679
@@ -79,14 +82,46 @@ async def test_get_computation_from_published_computation_task(
7982 )
8083 assert output .total == 1
8184 assert isinstance (output , ComputationRunRpcGetPage )
85+ assert output .items [0 ].iteration == 1
8286
83- # get_computation_url = httpx.URL(
84- # f"/v2/computations/{proj.uuid}?user_id={user['id']}"
85- # )
86- # response = await async_client.get(get_computation_url)
87- # assert response.status_code == status.HTTP_200_OK, response.text
88- # returned_computation = ComputationGet.model_validate(response.json())
89- # assert returned_computation
90- # expected_stop_url = async_client.base_url.join(
91- # f"/v2/computations/{proj.uuid}:stop?user_id={user['id']}"
92- # )
87+ comp_runs_2 = await create_comp_run (
88+ user = user ,
89+ project = proj ,
90+ result = RunningState .PENDING ,
91+ started = datetime .now (tz = timezone .utc ),
92+ iteration = 2 ,
93+ )
94+ output = await rpc_computations .list_computations_latest_iteration_page (
95+ rpc_client , product_name = "osparc" , user_id = user ["id" ]
96+ )
97+ assert output .total == 1
98+ assert isinstance (output , ComputationRunRpcGetPage )
99+ assert output .items [0 ].iteration == 2
100+ assert output .items [0 ].started_at is not None
101+ assert output .items [0 ].ended_at is None
102+
103+ comp_runs_3 = await create_comp_run (
104+ user = user ,
105+ project = proj ,
106+ result = RunningState .SUCCESS ,
107+ started = datetime .now (tz = timezone .utc ),
108+ ended = datetime .now (tz = timezone .utc ),
109+ iteration = 3 ,
110+ )
111+ output = await rpc_computations .list_computations_latest_iteration_page (
112+ rpc_client , product_name = "osparc" , user_id = user ["id" ]
113+ )
114+ assert output .total == 1
115+ assert isinstance (output , ComputationRunRpcGetPage )
116+ assert output .items [0 ].iteration == 3
117+ assert output .items [0 ].ended_at is not None
118+
119+ # Tasks
120+
121+ output = await rpc_computations .list_computations_latest_iteration_tasks_page (
122+ rpc_client , product_name = "osparc" , user_id = user ["id" ], project_id = proj .uuid
123+ )
124+ assert output
125+ assert output .total == 4
126+ assert isinstance (output , ComputationTaskRpcGetPage )
127+ assert len (output .items ) == 4
0 commit comments