code: def test_node_tags():
      """Should return cached tags of a node"""
      vnp = mock_vsphere_node_provider()
      vnp.tag_cache_lock = threading.Lock()
      vnp.tag_cache = {
          "test_vm_id_1": {
              "ray-cluster-name": "test",
              "ray-launch-config": "test_id",
              "ray-node-type": "head",
              "ray-node-name": "test-node",
          }
      }
  
      tags = vnp.node_tags("test_vm_id_1")
      assert tags == vnp.tag_cache["test_vm_id_1"]
  
imports: import copy
  import time
  import pytest
  import threading
  from unittest.mock import MagicMock, patch
  from ray.autoscaler._private.vsphere.node_provider import VsphereNodeProvider
  from ray.autoscaler._private.vsphere.config import update_vsphere_configs, validate_frozen_vm_configs
  from ray.autoscaler._private.vsphere.gpu_utils import split_vm_2_gpu_cards_map, GPUCard, set_gpu_placeholder
  from ray.autoscaler._private.vsphere.utils import singleton_client
label_desc: Use image node_id 3 for calling a global function with example usage: test_node_tags() without return types