code: def test_get_applications_while_gcs_down(
      monkeypatch, ray_start_regular_with_external_redis, url
  ):
      # Test serve REST API availability when the GCS is down.
      monkeypatch.setenv("RAY_SERVE_KV_TIMEOUT_S", "3")
      serve.start(detached=True)
  
      get_response = requests.get(url, timeout=15)
      assert get_response.status_code == 200
      ray._private.worker._global_node.kill_gcs_server()
  
      for _ in range(10):
          assert requests.get(url, timeout=30).status_code == 200
  
      ray._private.worker._global_node.start_gcs_server()
  
      for _ in range(10):
          assert requests.get(url, timeout=30).status_code == 200
  
      serve.shutdown()
  
imports: import copy
  import grpc
  import re
  import os
  import sys
  from typing import Dict
  import pytest
  import requests
  import ray
  from ray import serve
  from ray._private.test_utils import wait_for_condition
  import ray._private.ray_constants
  from ray.util.state import list_actors
  from ray.serve._private.constants import SERVE_NAMESPACE
  from ray.serve.tests.conftest import *
  from ray.tests.conftest import *
  from ray._private.test_utils import generate_system_config_map
  from ray.serve.schema import ServeInstanceDetails, HTTPOptionsSchema
  from ray.serve._private.common import ApplicationStatus, DeploymentStatus, DeploymentStatusTrigger, ReplicaState, ProxyStatus
  from ray.serve.generated import serve_pb2, serve_pb2_grpc
label_desc: Use image node_id 13 for calling a global function with example usage: test_get_applications_while_gcs_down(monkeypatch, ray_start_regular_with_external_redis, url) without return types