code: def benchmark(
      test_plan,
      url,
      gpus,
      exec_env,
      concurrency,
      requests,
      batch_size,
      batch_delay,
      input,
      workers,
      content_type,
      image,
      docker_runtime,
      backend_profiling,
      handler_profiling,
      config_properties,
      inference_model_url,
      report_location,
      tmp_dir,
      generate_graphs,
  ):
      input_params = {
          "url": url,
          "gpus": gpus,
          "exec_env": exec_env,
          "batch_size": batch_size,
          "batch_delay": batch_delay,
          "workers": workers,
          "concurrency": concurrency,
          "requests": requests,
          "input": input,
          "content_type": content_type,
          "image": image,
          "docker_runtime": docker_runtime,
          "backend_profiling": backend_profiling,
          "handler_profiling": handler_profiling,
          "config_properties": config_properties,
          "inference_model_url": inference_model_url,
          "report_location": report_location,
          "tmp_dir": tmp_dir,
          "generate_graphs": generate_graphs,
      }
  
      # set ab params
      update_plan_params[test_plan]()
      update_exec_params(input_params)
  
      click.secho("Starting AB benchmark suite...", fg="green")
      click.secho(
          "\n\nConfigured execution parameters are:", fg="green"
      )
      click.secho(f"{execution_params}", fg="blue")
  
      # Setup execution env
      if execution_params["exec_env"] == "local":
          click.secho("\n\nPreparing local execution...", fg="green")
          local_torserve_start()
      else:
          click.secho("\n\nPreparing docker execution...", fg="green")
          docker_torchserve_start()
  
      check_torchserve_health()
      warm_up_lines = warm_up()
      run_benchmark()
      generate_report(warm_up_lines=warm_up_lines)
  
imports: import csv
  import json
  import os
  import re
  import shutil
  import sys
  import tempfile
  import time
  from subprocess import PIPE, Popen
  from urllib.parse import urlparse
  import click
  import click_config_file
  import matplotlib.pyplot
  import numpy
  import pandas
  import requests
label_desc: Use image node_id 2 for calling a global function with example usage: benchmark(test_plan, url, gpus, exec_env, concurrency, requests, batch_size, batch_delay, input, workers, content_type, image, docker_runtime, backend_profiling, handler_profiling, config_properties, inference_model_url, report_location, tmp_dir, generate_graphs) without return types