4545from simcore_service_dynamic_sidecar .modules .inputs import enable_inputs_pulling
4646from simcore_service_dynamic_sidecar .modules .outputs ._context import OutputsContext
4747from simcore_service_dynamic_sidecar .modules .outputs ._manager import OutputsManager
48+ from tenacity import (
49+ AsyncRetrying ,
50+ retry_if_exception_type ,
51+ stop_after_delay ,
52+ wait_fixed ,
53+ )
4854
4955FAST_STATUS_POLL : Final [float ] = 0.1
5056CREATE_SERVICE_CONTAINERS_TIMEOUT : Final [float ] = 60
@@ -384,6 +390,19 @@ async def _debug_progress(
384390 print (f"{ task_id } { percent } { message } " )
385391
386392
393+ async def _assert_progress_finished (
394+ last_progress_message : tuple [ProgressMessage , ProgressPercent ] | None ,
395+ ) -> None :
396+ async for attempt in AsyncRetrying (
397+ stop = stop_after_delay (5 ),
398+ wait = wait_fixed (0.1 ),
399+ retry = retry_if_exception_type (AssertionError ),
400+ reraise = True ,
401+ ):
402+ with attempt :
403+ assert last_progress_message == ("finished" , 1.0 )
404+
405+
387406async def test_create_containers_task (
388407 httpx_async_client : AsyncClient ,
389408 client : Client ,
@@ -392,10 +411,13 @@ async def test_create_containers_task(
392411 mock_metrics_params : CreateServiceMetricsAdditionalParams ,
393412 shared_store : SharedStore ,
394413) -> None :
395- last_progress_message : tuple [str , float ] | None = None
414+ last_progress_message : tuple [ProgressMessage , ProgressPercent ] | None = None
396415
397- async def create_progress (message : str , percent : float , _ : TaskId ) -> None :
416+ async def create_progress (
417+ message : ProgressMessage , percent : ProgressPercent | None , _ : TaskId
418+ ) -> None :
398419 nonlocal last_progress_message
420+ assert percent is not None
399421 last_progress_message = (message , percent )
400422 print (message , percent )
401423
@@ -410,7 +432,7 @@ async def create_progress(message: str, percent: float, _: TaskId) -> None:
410432 ) as result :
411433 assert shared_store .container_names == result
412434
413- assert last_progress_message == ( "finished" , 1.0 )
435+ await _assert_progress_finished ( last_progress_message )
414436
415437
416438async def test_pull_user_servcices_docker_images (
@@ -442,7 +464,7 @@ async def create_progress(
442464 ) as result :
443465 assert shared_store .container_names == result
444466
445- assert last_progress_message == ( "finished" , 1.0 )
467+ await _assert_progress_finished ( last_progress_message )
446468
447469 async with periodic_task_result (
448470 client = client ,
@@ -454,7 +476,7 @@ async def create_progress(
454476 progress_callback = _debug_progress ,
455477 ) as result :
456478 assert result is None
457- assert last_progress_message == ( "finished" , 1.0 )
479+ await _assert_progress_finished ( last_progress_message )
458480
459481
460482async def test_create_containers_task_invalid_yaml_spec (
0 commit comments