code: def test_validate_frozen_vm_configs():
      # Test a valid case with OVF deployment
      config = {
          "name": "single-frozen-vm",
          "library_item": "frozen-vm-template",
          "cluster": "vsanCluster",
          "datastore": "vsanDatastore",
      }
      assert validate_frozen_vm_configs(config) is None
  
      # Test a valid case with existing frozen VM
      config = {"name": "existing-single-frozen-vm"}
      assert validate_frozen_vm_configs(config) is None
  
      # Test a valid case with OVF deployment and resource pool
      config = {
          "name": "frozen-vm-prefix",
          "library_item": "frozen-vm-template",
          "resource_pool": "frozen-vm-resource-pool",
          "datastore": "vsanDatastore",
      }
      assert validate_frozen_vm_configs(config) is None
  
      # Test a valid case with existing resource pool
      config = {"resource_pool": "frozen-vm-resource-pool"}
      assert validate_frozen_vm_configs(config) is None
  
      # Test an invalid case missing everything for OVF deployment
      with pytest.raises(
          ValueError,
          match="'datastore' is not given when trying to deploy the frozen VM from OVF.",
      ):
          config = {
              "library_item": "frozen-vm-template",
          }
          validate_frozen_vm_configs(config)
  
      # Test an invalid case missing datastore for OVF deployment
      with pytest.raises(
          ValueError,
          match="'datastore' is not given when trying to deploy the frozen VM from OVF.",
      ):
          config = {
              "name": "single-frozen-vm",
              "library_item": "frozen-vm-template",
              "cluster": "vsanCluster",
          }
          validate_frozen_vm_configs(config)
  
      # Test an invalid case missing cluster and resource pool for OVF deployment
      with pytest.raises(
          ValueError,
          match="both 'cluster' and 'resource_pool' are missing when trying to deploy "
          "the frozen VM from OVF, at least one should be given.",
      ):
          config = {
              "name": "single-frozen-vm",
              "library_item": "frozen-vm-template",
              "datastore": "vsanDatastore",
          }
          validate_frozen_vm_configs(config)
  
      # Test an invalid case missing name for OVF deployment
      with pytest.raises(
          ValueError,
          match="'name' must be given when deploying the frozen VM from OVF.",
      ):
          config = {
              "library_item": "frozen-vm-template",
              "cluster": "vsanCluster",
              "datastore": "vsanDatastore",
          }
          validate_frozen_vm_configs(config)
  
      # Test an valid case with redundant data
      config = {
          "name": "single-frozen-vm",
          "library_item": "frozen-vm-template",
          "resource_pool": "frozen-vm-resource-pool",
          "cluster": "vsanCluster",
          "datastore": "vsanDatastore",
      }
      assert validate_frozen_vm_configs(config) is None
  
      # Another case with redundant data
      config = {
          "name": "single-frozen-vm",
          "resource_pool": "frozen-vm-resource-pool",
          "cluster": "vsanCluster",
          "datastore": "vsanDatastore",
      }
      assert validate_frozen_vm_configs(config) is None
  
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 9 for calling a global function with example usage: test_validate_frozen_vm_configs() without return types