code: def test_mlflow_logger_exists(mlflow_mock, tmp_path):
      """Test launching three independent loggers with either same or different experiment name."""
      client = mlflow_mock.tracking.MlflowClient
  
      run1 = MagicMock()
      run1.info.run_id = "run-id-1"
      run1.info.experiment_id = "exp-id-1"
  
      run2 = MagicMock()
      run2.info.run_id = "run-id-2"
  
      run3 = MagicMock()
      run3.info.run_id = "run-id-3"
  
      # simulate non-existing experiment creation
      client.return_value.get_experiment_by_name = MagicMock(
          return_value=None
      )
      client.return_value.create_experiment = MagicMock(
          return_value="exp-id-1"
      )  # experiment_id
      client.return_value.create_run = MagicMock(return_value=run1)
  
      logger = MLFlowLogger("test", save_dir=str(tmp_path))
      assert logger._experiment_id is None
      assert logger._run_id is None
      _ = logger.experiment
      assert logger.experiment_id == "exp-id-1"
      assert logger.run_id == "run-id-1"
      assert logger.experiment.create_experiment.asset_called_once()
      client.reset_mock(return_value=True)
  
      # simulate existing experiment returns experiment id
      exp1 = MagicMock()
      exp1.experiment_id = "exp-id-1"
      client.return_value.get_experiment_by_name = MagicMock(
          return_value=exp1
      )
      client.return_value.create_run = MagicMock(return_value=run2)
  
      # same name leads to same experiment id, but different runs get recorded
      logger2 = MLFlowLogger("test", save_dir=str(tmp_path))
      assert logger2.experiment_id == logger.experiment_id
      assert logger2.run_id == "run-id-2"
      assert logger2.experiment.create_experiment.call_count == 0
      assert logger2.experiment.create_run.asset_called_once()
      client.reset_mock(return_value=True)
  
      # simulate a 3rd experiment with new name
      client.return_value.get_experiment_by_name = MagicMock(
          return_value=None
      )
      client.return_value.create_experiment = MagicMock(
          return_value="exp-id-3"
      )
      client.return_value.create_run = MagicMock(return_value=run3)
  
      # logger with new experiment name causes new experiment id and new run id to be created
      logger3 = MLFlowLogger("new", save_dir=str(tmp_path))
      assert logger3.experiment_id == "exp-id-3" != logger.experiment_id
      assert logger3.run_id == "run-id-3"
  
imports: import os
  from unittest import mock
  from unittest.mock import MagicMock, Mock
  import pytest
  from lightning.pytorch import Trainer
  from lightning.pytorch.demos.boring_classes import BoringModel
  from lightning.pytorch.loggers.mlflow import _MLFLOW_AVAILABLE, MLFlowLogger, _get_resolve_tags
label_desc: Use image node_id 2 for calling a global function with example usage: test_mlflow_logger_exists(mlflow_mock, tmp_path) without return types