code: def test_no_http(ray_shutdown):
      # The following should have the same effect.
      options = [
          {"http_options": {"host": None}},
          {"http_options": {"location": None}},
          {"http_options": {"location": "NoServer"}},
      ]
  
      ray.init(num_cpus=16)
      for i, option in enumerate(options):
          print(f"[{i+1}/{len(options)}] Running with {option}")
          serve.start(**option)
  
          # Only controller actor should exist
          live_actors = [
              actor
              for actor in ray._private.state.actors().values()
              if actor["State"]
              == convert_actor_state(gcs_utils.ActorTableData.ALIVE)
          ]
          assert len(live_actors) == 1
          controller = serve.context._global_client._controller
          assert len(ray.get(controller.get_proxies.remote())) == 0
  
          # Test that the handle still works.
          @serve.deployment
          def hello(*args):
              return "hello"
  
          handle = serve.run(hello.bind())
  
          assert handle.remote().result() == "hello"
          serve.shutdown()
  
imports: import logging
  import os
  import socket
  import sys
  import time
  import pytest
  import requests
  import ray
  import ray._private.gcs_utils
  from ray import serve
  from ray._private.services import new_port
  from ray._private.test_utils import convert_actor_state, run_string_as_driver, wait_for_condition
  from ray._raylet import GcsClient
  from ray.cluster_utils import Cluster, cluster_not_supported
  from ray.serve._private import api
  from ray.serve._private.constants import SERVE_CONTROLLER_NAME, SERVE_DEFAULT_APP_NAME, SERVE_NAMESPACE, SERVE_PROXY_NAME, SERVE_ROOT_URL_ENV_KEY
  from ray.serve._private.default_impl import create_cluster_node_info_cache
  from ray.serve._private.http_util import set_socket_reuse_port
  from ray.serve._private.utils import block_until_http_ready, format_actor_name
  from ray.serve.config import DeploymentMode, HTTPOptions, ProxyLocation
  from ray.serve.context import _get_global_client
  from ray.serve.exceptions import RayServeException
  from ray.serve.schema import ServeApplicationSchema, ServeDeploySchema
  from ray.tests.conftest import maybe_external_redis
  from ray.tests.conftest import ray_start_with_dashboard
  from ray.util.state import list_actors
label_desc: Use image node_id 15 for calling a global function with example usage: test_no_http(ray_shutdown) and returns: str