def test_cancel_experiment_success( prepare_cancel_experiment_mocks: CancelExperimentMocks): RUN_QUEUED_COPY = copy.deepcopy(RUN_QUEUED) prepare_cancel_experiment_mocks.list_runs.return_value = [RUN_QUEUED_COPY] prepare_cancel_experiment_mocks.get_experiment.return_value = TEST_EXPERIMENTS[ 0] update_run_mock = prepare_cancel_experiment_mocks.mocker.patch.object( RUN_QUEUED_COPY, 'update') update_exp_mock = prepare_cancel_experiment_mocks.mocker.patch.object( TEST_EXPERIMENTS[0], 'update') cancel.cancel_experiment(exp_name="experiment-1", runs_to_cancel=[RUN_QUEUED_COPY], namespace="namespace") assert update_exp_mock.call_count == 2 assert update_run_mock.call_count == 1 check_cancel_experiment_asserts(prepare_cancel_experiment_mocks)
def test_cancel_experiment_set_cancelling_state_failure( prepare_cancel_experiment_mocks: CancelExperimentMocks, caplog): import logging RUN_QUEUED_COPY = copy.deepcopy(RUN_QUEUED) caplog.set_level(logging.CRITICAL) update_exp_mock = prepare_cancel_experiment_mocks.mocker.patch.object( TEST_EXPERIMENTS[0], 'update') update_exp_mock.side_effect = RuntimeError() prepare_cancel_experiment_mocks.list_runs.return_value = [RUN_QUEUED_COPY] prepare_cancel_experiment_mocks.get_experiment.return_value = TEST_EXPERIMENTS[ 0] with pytest.raises(RuntimeError): cancel.cancel_experiment(exp_name="experiment-1", runs_to_cancel=[RUN_QUEUED_COPY], namespace="namespace") check_cancel_experiment_asserts(prepare_cancel_experiment_mocks, delete_helm_release_count=0)
def test_cancel_experiment_failure( prepare_cancel_experiment_mocks: CancelExperimentMocks): RUN_QUEUED_COPY = copy.deepcopy(RUN_QUEUED) prepare_cancel_experiment_mocks.delete_helm_release.side_effect = RuntimeError( ) prepare_cancel_experiment_mocks.list_runs.return_value = [RUN_QUEUED_COPY] prepare_cancel_experiment_mocks.get_experiment.return_value = TEST_EXPERIMENTS[ 0] update_run_mock = prepare_cancel_experiment_mocks.mocker.patch.object( RUN_QUEUED_COPY, 'update') update_exp_mock = prepare_cancel_experiment_mocks.mocker.patch.object( TEST_EXPERIMENTS[0], 'update') del_list, not_del_list = cancel.cancel_experiment( exp_name="experiment-1", runs_to_cancel=[RUN_QUEUED_COPY], namespace="namespace") assert len(del_list) == 0 assert len(not_del_list) == 1 assert update_exp_mock.call_count == 1 assert update_run_mock.call_count == 0 check_cancel_experiment_asserts(prepare_cancel_experiment_mocks)
def test_cancel_experiment_one_cancelled_one_not( prepare_cancel_experiment_mocks: CancelExperimentMocks): prepare_cancel_experiment_mocks.delete_helm_release.side_effect = [ DEFAULT, RuntimeError(), DEFAULT, DEFAULT ] prepare_cancel_experiment_mocks.list_runs.return_value = TEST_RUNS_CORRECT prepare_cancel_experiment_mocks.get_experiment.return_value = TEST_EXPERIMENTS[ 0] update_exp_mock = prepare_cancel_experiment_mocks.mocker.patch.object( TEST_EXPERIMENTS[0], 'update') for test_run in TEST_RUNS_CORRECT: prepare_cancel_experiment_mocks.mocker.patch.object(test_run, 'update') del_list, not_del_list = cancel.cancel_experiment( exp_name="experiment-1", runs_to_cancel=TEST_RUNS_CORRECT, namespace="namespace") assert update_exp_mock.call_count == 1 assert len(del_list) == 1 assert len(not_del_list) == 1 check_cancel_experiment_asserts(prepare_cancel_experiment_mocks, delete_helm_release_count=2)