def test_update_run_info_invalid_run_id(mocker):
    mock_client = mocker.Mock()
    mocker.patch("faculty.client", return_value=mock_client)

    store = FacultyRestStore(STORE_URI)

    with pytest.raises(ValueError):
        store.update_run_info("invalid-run-id", RunStatus.RUNNING,
                              RUN_ENDED_AT_MILLISECONDS)
def test_update_run_info_client_error(mocker):
    mock_client = mocker.Mock()
    mock_client.update_run_info.side_effect = HttpError(
        mocker.Mock(), "Experiment run with ID _ not found in project _")
    mocker.patch("faculty.client", return_value=mock_client)

    store = FacultyRestStore(STORE_URI)

    with pytest.raises(
            MlflowException,
            match="Experiment run with ID _ not found in project _",
    ):
        store.update_run_info(RUN_UUID_HEX_STR, "RUNNING",
                              RUN_ENDED_AT_MILLISECONDS)
Exemple #3
0
def test_update_run_info(mocker, run_status, faculty_run_status):
    faculty_run = mocker.Mock()
    mock_client = mocker.Mock()
    mock_client.update_run_info.return_value = faculty_run
    mocker.patch("faculty.client", return_value=mock_client)

    mlflow_run_info = mocker.Mock()
    mlflow_run = mocker.Mock()
    mlflow_run.info = mlflow_run_info
    run_converter_mock = mocker.patch(
        "mlflow_faculty.tracking.faculty_run_to_mlflow_run",
        return_value=mlflow_run,
    )

    store = FacultyRestStore(STORE_URI)

    returned_run_info = store.update_run_info(
        RUN_UUID_HEX_STR, run_status, RUN_ENDED_AT_MILLISECONDS
    )

    mock_client.update_run_info.assert_called_once_with(
        PROJECT_ID, RUN_UUID, faculty_run_status, RUN_ENDED_AT
    )
    run_converter_mock.assert_called_once_with(faculty_run)
    assert returned_run_info == mlflow_run_info