code: def test_gcs_server_crash_cluster(ray_start_cluster):
      # Test the GCS server failures will crash the driver.
      cluster = ray_start_cluster
      GCS_RECONNECTION_TIMEOUT = 5
      node = cluster.add_node(
          num_cpus=0,
          _system_config={
              "gcs_rpc_server_reconnect_timeout_s": GCS_RECONNECTION_TIMEOUT
          },
      )
  
      script = """
  import ray
  import time
  
  ray.init(address="auto")
  time.sleep(60)
      """
  
      # Get gcs server pid to send a signal.
      all_processes = node.all_processes
      gcs_server_process = all_processes["gcs_server"][0].process
      gcs_server_pid = gcs_server_process.pid
  
      proc = run_string_as_driver_nonblocking(script)
      # Wait long enough to start the driver.
      time.sleep(5)
      start = time.time()
      print(gcs_server_pid)
      os.kill(gcs_server_pid, signal.SIGKILL)
      wait_for_condition(lambda: proc.poll() is None, timeout=10)
      # Make sure the driver was exited within the timeout instead of hanging.
      # * 2 for avoiding flakiness.
      assert time.time() - start < GCS_RECONNECTION_TIMEOUT * 2
  
imports: import os
  import signal
  import sys
  import threading
  import time
  import numpy
  import pytest
  import ray
  import ray._private.ray_constants
  import ray._private.utils
  from ray._private.ray_constants import DEBUG_AUTOSCALING_ERROR
  from ray._private.test_utils import Semaphore, get_error_message, get_log_batch, init_error_pubsub, run_string_as_driver_nonblocking, wait_for_condition
  from ray.cluster_utils import cluster_not_supported
  from ray.experimental.internal_kv import _internal_kv_get
label_desc: Use image node_id 11 for calling a global function with example usage: test_gcs_server_crash_cluster(ray_start_cluster) without return types