code: def test_long_chain_deployment_graph(
      chain_length, init_delay_secs=0, compute_delay_secs=0
  ):
      """
      Test that focuses on long chain of deployment graph
      INPUT -> Node_1 -> Node_2 -> ... -> Node_10 -> OUTPUT
      1) Intermediate blob size can be large / small
      2) Compute time each node can be long / short
      3) Init time can be long / short
      """
  
      nodes = []
      for i in range(chain_length):
          if i == 0:
              nodes.append(
                  Node.bind(
                      None,
                      i,
                      init_delay_secs=init_delay_secs,
                      compute_delay_secs=compute_delay_secs,
                  )
              )
          else:
              nodes.append(
                  Node.bind(
                      nodes[i - 1],
                      i,
                      init_delay_secs=init_delay_secs,
                      compute_delay_secs=compute_delay_secs,
                  )
              )
  
      return nodes[-1]
  
file_path: ray/release/serve_tests/workloads/deployment_graph_long_chain.py
imports: import time
  import asyncio
  import click
  from typing import Optional
  import starlette.requests
  from ray import serve
  from ray.serve.handle import DeploymentHandle
  from serve_test_cluster_utils import setup_local_single_node_cluster, setup_anyscale_cluster
  from serve_test_utils import save_test_results
  from benchmark_utils import benchmark_throughput_tps, benchmark_latency_ms
label_desc: Use image node_id 1 for calling a global function with example usage: test_long_chain_deployment_graph(chain_length, init_delay_secs, compute_delay_secs) and returns: nodes