code: def test_frequent_node_update(
      enable_test_module, disable_aiohttp_cache, ray_start_cluster_head
  ):
      cluster: Cluster = ray_start_cluster_head
      assert wait_until_server_available(cluster.webui_url)
      webui_url = cluster.webui_url
      webui_url = format_web_url(webui_url)
  
      def verify():
          response = requests.get(webui_url + "/internal/node_module")
          response.raise_for_status()
          result = response.json()
          data = result["data"]
          head_node_registration_time = data[
              "headNodeRegistrationTimeS"
          ]
          # If the head node is not registered, it is None.
          assert head_node_registration_time is not None
          # Head node should be registered before the node update interval
          # because we do frequent until the head node is registered.
          return (
              head_node_registration_time
              < UPDATE_NODES_INTERVAL_SECONDS
          )
  
      wait_for_condition(verify, timeout=15)
  
file_path: ray/python/ray/dashboard/modules/node/tests/test_node.py
imports: import os
  import sys
  import logging
  import requests
  import time
  import traceback
  import random
  import pytest
  import ray
  import threading
  from datetime import datetime, timedelta
  from ray.cluster_utils import Cluster
  from ray.dashboard.modules.node.node_consts import UPDATE_NODES_INTERVAL_SECONDS
  from ray.dashboard.tests.conftest import *
  from ray._private.test_utils import format_web_url, wait_until_server_available, wait_for_condition
label_desc: Use image node_id 5 for calling a global function with example usage: test_frequent_node_update(enable_test_module, disable_aiohttp_cache, ray_start_cluster_head) and returns: unknown