コード例 #1
0
def test_dispatch_provisioning(
        workspace: Workspace,
        monkeypatch: _pytest.monkeypatch.MonkeyPatch) -> None:
    workspace.new_pool = MagicMock(name='pool1')

    patch(monkeypatch, workspace, 'dispatch_task')
    patch(monkeypatch, workspace, 'ungrab_guest_request')

    assert workspace.dispatch_provisioning() is workspace

    cast(MagicMock, workspace.dispatch_task).assert_called_once_with(
        tft.artemis.tasks.acquire_guest_request, workspace.guestname,
        workspace.new_pool.poolname)

    cast(MagicMock, workspace.ungrab_guest_request).assert_not_called()
コード例 #2
0
def test_switch_to_provisioning(
        workspace: Workspace,
        monkeypatch: _pytest.monkeypatch.MonkeyPatch) -> None:
    workspace.gr = MagicMock(name='dummy-guest-request')
    workspace.new_pool = MagicMock(name='dummy-pool')

    patch(monkeypatch, workspace, 'update_guest_state')

    assert workspace.switch_to_provisioning() is workspace

    cast(MagicMock, workspace.update_guest_state).assert_called_once_with(
        tft.artemis.guest.GuestState.PROVISIONING,
        current_state=tft.artemis.guest.GuestState.ROUTING,
        set_values={'poolname': workspace.new_pool.poolname},
        pool=workspace.new_pool.poolname)
コード例 #3
0
def test_exit_failover(workspace: Workspace,
                       monkeypatch: _pytest.monkeypatch.MonkeyPatch,
                       caplog: _pytest.logging.LogCaptureFixture) -> None:
    workspace.current_poolname = 'pool1'
    workspace.new_pool = MagicMock(name='pool2', poolname='pool2')

    patch(monkeypatch,
          tft.artemis.tasks.route_guest_request.metrics.ProvisioningMetrics,
          'inc_failover')

    assert workspace.exit() is workspace

    assert workspace.result is tft.artemis.tasks.SUCCESS

    cast(
        MagicMock,
        tft.artemis.tasks.route_guest_request.metrics.ProvisioningMetrics.
        inc_failover).assert_called_once_with('pool1', 'pool2')

    assert_log(caplog,
               message='failover: switched pool1 => pool2',
               levelno=logging.WARNING)
コード例 #4
0
def test_dispatch_provisioning_fail_dispatch(
        workspace: Workspace,
        monkeypatch: _pytest.monkeypatch.MonkeyPatch) -> None:
    workspace.new_pool = MagicMock(name='pool1')

    mock_error: tft.artemis.tasks.DoerReturnType = Error(
        tft.artemis.Failure('mock error'))

    def mock_dispatch_task(*args: Any, **kwargs: Any) -> None:
        workspace.result = mock_error

    patch(monkeypatch, workspace,
          'dispatch_task').side_effect = mock_dispatch_task
    patch(monkeypatch, workspace, 'ungrab_guest_request')

    assert workspace.dispatch_provisioning() is workspace

    cast(MagicMock, workspace.dispatch_task).assert_called_once_with(
        tft.artemis.tasks.acquire_guest_request, workspace.guestname,
        workspace.new_pool.poolname)

    cast(MagicMock, workspace.ungrab_guest_request).assert_called_once_with(
        tft.artemis.guest.GuestState.PROVISIONING,
        tft.artemis.guest.GuestState.ROUTING)