def test_docker_project_execution( use_start_run, tmpdir, tracking_uri_mock): # pylint: disable=unused-argument build_docker_example_base_image() expected_params = {"use_start_run": use_start_run} submitted_run = mlflow.projects.run( TEST_DOCKER_PROJECT_DIR, experiment_id=0, parameters=expected_params, entry_point="test_tracking") # Validate run contents in the FileStore run_uuid = submitted_run.run_id mlflow_service = mlflow.tracking.MlflowClient() run_infos = mlflow_service.list_run_infos(experiment_id=0, run_view_type=ViewType.ACTIVE_ONLY) assert "file:" in run_infos[0].source_name assert len(run_infos) == 1 store_run_uuid = run_infos[0].run_uuid assert run_uuid == store_run_uuid run = mlflow_service.get_run(run_uuid) assert run.data.params == expected_params assert run.data.metrics == {"some_key": 3} exact_expected_tags = {MLFLOW_PROJECT_ENV: "docker"} approx_expected_tags = { MLFLOW_DOCKER_IMAGE_NAME: "mlflow-docker-example", MLFLOW_DOCKER_IMAGE_ID: "sha256:", } run_tags = run.data.tags for k, v in exact_expected_tags.items(): assert run_tags[k] == v for k, v in approx_expected_tags.items(): assert run_tags[k].startswith(v)
def test_docker_project_tracking_uri_propagation( ProfileConfigProvider, tmpdir, tracking_uri, expected_command_segment): # pylint: disable=unused-argument build_docker_example_base_image() mock_provider = mock.MagicMock() mock_provider.get_config.return_value = \ DatabricksConfig("host", "user", "pass", None, insecure=True) ProfileConfigProvider.return_value = mock_provider # Create and mock local tracking directory local_tracking_dir = os.path.join(tmpdir.strpath, "mlruns") if tracking_uri is None: tracking_uri = local_tracking_dir old_uri = mlflow.get_tracking_uri() try: mlflow.set_tracking_uri(tracking_uri) with mock.patch("mlflow.tracking.utils._get_store") as _get_store_mock: _get_store_mock.return_value = file_store.FileStore(local_tracking_dir) mlflow.projects.run(TEST_DOCKER_PROJECT_DIR, experiment_id=0) finally: mlflow.set_tracking_uri(old_uri)
def test_docker_uri_mode_validation(tracking_uri_mock): # pylint: disable=unused-argument with pytest.raises(ExecutionException): build_docker_example_base_image() mlflow.projects.run(TEST_DOCKER_PROJECT_DIR, mode="databricks")