code: def test_redis_full(ray_start_cluster_head):
      import redis
  
      gcs_address = ray_start_cluster_head.gcs_address
      redis_addr = os.environ["RAY_REDIS_ADDRESS"]
      host, port = redis_addr.split(":")
      if os.environ.get("TEST_EXTERNAL_REDIS_REPLICAS", "1") != "1":
          cli = redis.RedisCluster(host, int(port))
      else:
          cli = redis.Redis(host, int(port))
      # Set the max memory to 10MB
      cli.config_set("maxmemory", 5 * 1024 * 1024)
  
      gcs_cli = ray._raylet.GcsClient(address=gcs_address)
      # GCS should fail
      with pytest.raises(ray.exceptions.RpcError):
          gcs_cli.internal_kv_put(
              b"A", b"A" * 6 * 1024 * 1024, True, None
          )
      logs_dir = ray_start_cluster_head.head_node._logs_dir
  
      with open(os.path.join(logs_dir, "gcs_server.err")) as err:
          assert "OOM command not allowed when used" in err.read()
  
imports: import os
  import sys
  import time
  import pytest
  import ray
  import ray._private.ray_constants
  from ray._private.test_utils import Semaphore, enable_external_redis, client_test_enabled, run_string_as_driver, wait_for_condition, get_gcs_memory_used, run_string_as_driver_nonblocking
  from ray.experimental.internal_kv import _internal_kv_list
  from ray.tests.conftest import call_ray_start
  import subprocess
  import psutil
label_desc: Use image node_id 14 for calling a global function with example usage: test_redis_full(ray_start_cluster_head) without return types