code: def test_gauge_executor_metrics(
      self, mock_stats_gauge, mock_trigger_tasks, mock_sync
  ):
      executor = celery_executor.CeleryExecutor()
      executor.heartbeat()
      calls = [
          mock.call(
              "executor.open_slots",
              value=mock.ANY,
              tags={"status": "open", "name": "CeleryExecutor"},
          ),
          mock.call(
              "executor.queued_tasks",
              value=mock.ANY,
              tags={"status": "queued", "name": "CeleryExecutor"},
          ),
          mock.call(
              "executor.running_tasks",
              value=mock.ANY,
              tags={"status": "running", "name": "CeleryExecutor"},
          ),
      ]
      mock_stats_gauge.assert_has_calls(calls)
  
imports: from __future__ import annotations
  import contextlib
  import logging
  import os
  import signal
  import sys
  from datetime import datetime, timedelta
  from unittest import mock
  import celery.contrib.testing.tasks
  import pytest
  import time_machine
  from celery import Celery
  from celery.result import AsyncResult
  from kombu.asynchronous import set_event_loop
  from airflow.configuration import conf
  from airflow.models.baseoperator import BaseOperator
  from airflow.models.dag import DAG
  from airflow.models.taskinstance import TaskInstance, TaskInstanceKey
  from airflow.providers.celery.executors import celery_executor, celery_executor_utils, default_celery
  from airflow.providers.celery.executors.celery_executor import CeleryExecutor
  from airflow.utils import timezone
  from airflow.utils.state import State
  from tests.test_utils import db
  from tests.test_utils.config import conf_vars
label_desc: Use image node_id 7 for calling the TestCeleryExecutor obj's underlying member method code with example usage: obj.test_gauge_executor_metrics(mock_stats_gauge, mock_trigger_tasks, mock_sync) without return types