def test_running_service_details_make_status(scheduler_data: SchedulerData,
                                             service_message: str,
                                             service_state: ServiceState):
    running_service_details = RunningDynamicServiceDetails.from_scheduler_data(
        node_uuid=scheduler_data.node_uuid,
        scheduler_data=scheduler_data,
        service_state=service_state,
        service_message=service_message,
    )
    print(running_service_details)
    assert running_service_details

    running_service_details_dict = running_service_details.dict(
        exclude_unset=True, by_alias=True)

    expected_running_service_details = {
        "boot_type": ServiceBootType.V2,
        "project_id": scheduler_data.project_id,
        "service_state": service_state,
        "service_message": service_message,
        "service_uuid": scheduler_data.node_uuid,
        "service_key": scheduler_data.key,
        "service_version": scheduler_data.version,
        "service_host": scheduler_data.service_name,
        "user_id": scheduler_data.user_id,
        "service_port": scheduler_data.service_port,
    }

    assert running_service_details_dict == expected_running_service_details
Exemple #2
0
async def test_get_stack_status(
    ensure_scheduler_runs_once: Callable,
    scheduler: DynamicSidecarsScheduler,
    scheduler_data: SchedulerData,
    docker_swarm: None,
    mocked_dynamic_scheduler_events: None,
) -> None:
    await ensure_scheduler_runs_once()

    await scheduler.add_service(scheduler_data)

    stack_status = await scheduler.get_stack_status(scheduler_data.node_uuid)
    assert stack_status == RunningDynamicServiceDetails.from_scheduler_data(
        node_uuid=scheduler_data.node_uuid,
        scheduler_data=scheduler_data,
        service_state=ServiceState.PENDING,
        service_message="",
    )
Exemple #3
0
async def test_get_stack_status_containers_are_starting(
    scheduler: DynamicSidecarsScheduler,
    scheduler_data: SchedulerData,
    mock_service_running: AsyncMock,
    docker_swarm: None,
    mocked_dynamic_scheduler_events: None,
) -> None:
    async with _assert_get_dynamic_services_mocked(
            scheduler,
            scheduler_data,
            mock_service_running,
            expected_response=httpx.Response(200, json={}),
    ) as stack_status:
        assert stack_status == RunningDynamicServiceDetails.from_scheduler_data(
            node_uuid=scheduler_data.node_uuid,
            scheduler_data=scheduler_data,
            service_state=ServiceState.STARTING,
            service_message="",
        )
Exemple #4
0
async def test_get_stack_status_failing_sidecar(
    scheduler: DynamicSidecarsScheduler,
    scheduler_data: SchedulerData,
    docker_swarm: None,
    mocked_dynamic_scheduler_events: None,
) -> None:
    failing_message = "some_failing_message"
    scheduler_data.dynamic_sidecar.status.update_failing_status(
        failing_message)

    await scheduler.add_service(scheduler_data)

    stack_status = await scheduler.get_stack_status(scheduler_data.node_uuid)
    assert stack_status == RunningDynamicServiceDetails.from_scheduler_data(
        node_uuid=scheduler_data.node_uuid,
        scheduler_data=scheduler_data,
        service_state=ServiceState.FAILED,
        service_message=failing_message,
    )
Exemple #5
0
async def test_get_stack_status_report_missing_statuses(
    scheduler: DynamicSidecarsScheduler,
    scheduler_data: SchedulerData,
    mock_service_running: AsyncMock,
    docker_swarm: None,
    mocked_dynamic_scheduler_events: None,
) -> None:
    async with _assert_get_dynamic_services_mocked(
            scheduler,
            scheduler_data,
            mock_service_running,
            expected_response=httpx.HTTPError("Mock raised error"),
    ) as stack_status:
        assert stack_status == RunningDynamicServiceDetails.from_scheduler_data(
            node_uuid=scheduler_data.node_uuid,
            scheduler_data=scheduler_data,
            service_state=ServiceState.STARTING,
            service_message=
            "There was an error while trying to fetch the stautes form the contianers",
        )
Exemple #6
0
async def test_get_stack_status_ok(
    loop: asyncio.AbstractEventLoop,
    scheduler: DynamicSidecarsScheduler,
    scheduler_data: SchedulerData,
    mock_service_running: AsyncMock,
    docker_swarm: None,
    mocked_dynamic_scheduler_events: None,
) -> None:
    async with _assert_get_dynamic_services_mocked(
            scheduler,
            scheduler_data,
            mock_service_running,
            expected_response=httpx.Response(
                200, json={"fake_entry": {
                    "Status": "running"
                }}),
    ) as stack_status:
        assert stack_status == RunningDynamicServiceDetails.from_scheduler_data(
            node_uuid=scheduler_data.node_uuid,
            scheduler_data=scheduler_data,
            service_state=ServiceState.RUNNING,
            service_message="",
        )