Skip to content

Commit ee63948

Browse files
author
Andrei Neagu
committed
fixed flaky test
1 parent 035685c commit ee63948

File tree

1 file changed

+27
-5
lines changed

1 file changed

+27
-5
lines changed

services/dynamic-sidecar/tests/unit/test_api_rest_containers_long_running_tasks.py

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,12 @@
4545
from simcore_service_dynamic_sidecar.modules.inputs import enable_inputs_pulling
4646
from simcore_service_dynamic_sidecar.modules.outputs._context import OutputsContext
4747
from 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

4955
FAST_STATUS_POLL: Final[float] = 0.1
5056
CREATE_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+
387406
async 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

416438
async 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

460482
async def test_create_containers_task_invalid_yaml_spec(

0 commit comments

Comments
 (0)