code: def _setup(worker_port, port, protocol):
      graph_description = (
          '{"start-gateway": ["pod0"], "pod0": ["end-gateway"]}'
      )
      pod_addresses = f'{{"pod0": ["0.0.0.0:{worker_port}"]}}'
  
      # create a single worker runtime
      worker_process = multiprocessing.Process(
          target=_create_worker_runtime, args=(worker_port,)
      )
      worker_process.start()
  
      # create a single gateway runtime
      gateway_process = multiprocessing.Process(
          target=_create_gateway_runtime,
          args=(graph_description, pod_addresses, port, protocol),
      )
      gateway_process.start()
  
      BaseServer.wait_for_ready_or_shutdown(
          timeout=5.0,
          ctrl_address=f"0.0.0.0:{worker_port}",
          ready_or_shutdown_event=multiprocessing.Event(),
      )
      BaseServer.wait_for_ready_or_shutdown(
          timeout=5.0,
          ctrl_address=f"0.0.0.0:{port}",
          ready_or_shutdown_event=multiprocessing.Event(),
      )
      return worker_process, gateway_process
  
file_path: jina/tests/integration/runtimes/test_gateway_dry_run.py
imports: import multiprocessing
  import pytest
  from jina import Client
  from jina.parsers import set_gateway_parser
  from jina.serve.runtimes.asyncio import AsyncNewLoopRuntime
  from jina.serve.runtimes.servers import BaseServer
  from jina.serve.runtimes.worker.request_handling import WorkerRequestHandler
  from jina.serve.runtimes.gateway.request_handling import GatewayRequestHandler
  from tests.helper import _generate_pod_args
label_desc: Use image node_id 3 for calling a global function with example usage: _setup(worker_port, port, protocol) and returns: worker_process,  gateway_process