4646)
4747from servicelib .aiohttp import status
4848from servicelib .common_headers import UNDEFINED_DEFAULT_SIMCORE_USER_AGENT_VALUE
49+ from settings_library .redis import RedisSettings
4950from simcore_postgres_database .models .projects import projects as projects_db_model
5051from simcore_service_webserver .db .models import UserRole
5152from simcore_service_webserver .projects ._controller .nodes_rest import (
5253 _ProjectNodePreview ,
5354)
5455from simcore_service_webserver .projects .models import ProjectDict
56+ from tenacity import (
57+ AsyncRetrying ,
58+ retry_if_exception_type ,
59+ stop_after_delay ,
60+ wait_fixed ,
61+ )
62+
63+ pytest_simcore_core_services_selection = [
64+ "redis" ,
65+ ]
5566
5667
5768@pytest .mark .parametrize (
@@ -916,6 +927,7 @@ async def test_start_node_raises_if_called_with_wrong_data(
916927
917928@pytest .mark .parametrize (* standard_role_response (), ids = str )
918929async def test_stop_node (
930+ redis_service : RedisSettings ,
919931 client : TestClient ,
920932 user_project_with_num_dynamic_services : Callable [[int ], Awaitable [ProjectDict ]],
921933 user_role : UserRole ,
@@ -935,18 +947,26 @@ async def test_stop_node(
935947 project_id = project ["uuid" ], node_id = choice (all_service_uuids ) # noqa: S311
936948 )
937949 response = await client .post (f"{ url } " )
938- data , error = await assert_status (
950+ _ , error = await assert_status (
939951 response ,
940952 status .HTTP_202_ACCEPTED if user_role == UserRole .GUEST else expected .accepted ,
941953 )
942- if error is None :
943- mocked_dynamic_services_interface [
944- "dynamic_scheduler.api.stop_dynamic_service"
945- ].assert_called_once ()
946- else :
947- mocked_dynamic_services_interface [
948- "dynamic_scheduler.api.stop_dynamic_service"
949- ].assert_not_called ()
954+
955+ async for attempt in AsyncRetrying (
956+ wait = wait_fixed (0.1 ),
957+ stop = stop_after_delay (5 ),
958+ retry = retry_if_exception_type (AssertionError ),
959+ reraise = True ,
960+ ):
961+ with attempt :
962+ if error is None :
963+ mocked_dynamic_services_interface [
964+ "dynamic_scheduler.api.stop_dynamic_service"
965+ ].assert_called_once ()
966+ else :
967+ mocked_dynamic_services_interface [
968+ "dynamic_scheduler.api.stop_dynamic_service"
969+ ].assert_not_called ()
950970
951971
952972@pytest .fixture
0 commit comments