code: def test_post_to_studio_custom_message(
      tmp_dir, dvc, scm, exp_stage, mocker, monkeypatch, tmp
  ):
      valid_response = mocker.MagicMock()
      valid_response.status_code = 200
      mocked_post = mocker.patch(
          "requests.post", return_value=valid_response
      )
  
      monkeypatch.setenv(env.STUDIO_ENDPOINT, "https://0.0.0.0")
      monkeypatch.setenv(env.STUDIO_REPO_URL, "STUDIO_REPO_URL")
      monkeypatch.setenv(env.STUDIO_TOKEN, "STUDIO_TOKEN")
  
      baseline_sha = scm.get_rev()
      exp_rev = first(
          dvc.experiments.run(
              exp_stage.addressing,
              params=["foo=1"],
              tmp_dir=tmp,
              message="foo",
          )
      )
      name = dvc.experiments.get_exact_name([exp_rev])[exp_rev]
      assert mocked_post.call_count == 2
  
      start_call = mocked_post.call_args_list[0]
  
      assert start_call.kwargs["json"] == {
          "type": "start",
          "repo_url": "STUDIO_REPO_URL",
          "baseline_sha": baseline_sha,
          "name": name,
          "params": {"params.yaml": {"foo": 1}},
          "client": "dvc",
          "message": "foo",
      }
  
imports: import pytest
  from dvc_studio_client import env, post_live_metrics
  from funcy import first
  from dvc.env import DVC_STUDIO_OFFLINE, DVC_STUDIO_REPO_URL, DVC_STUDIO_TOKEN, DVC_STUDIO_URL
label_desc: Use image node_id 2 for calling a global function with example usage: test_post_to_studio_custom_message(tmp_dir, dvc, scm, exp_stage, mocker, monkeypatch, tmp) without return types