docstr: Test handle passing contexts between replicas
code: def test_request_context_pass_for_handle_passing(
      self, serve_start_shutdown
  ):
      """Test handle passing contexts between replicas"""
  
      @serve.deployment
      def g1():
          return "ok1"
  
      @serve.deployment
      def g2():
          return "ok2"
  
      app = FastAPI()
  
      @serve.deployment
      @serve.ingress(app)
      class G:
          def __init__(
              self, handle1: DeploymentHandle, handle2: DeploymentHandle
          ):
              self.handle1 = handle1
              self.handle2 = handle2
  
          @app.get("/api")
          async def app1(self):
              return await self.handle1.remote()
  
          @app.get("/api2")
          async def app2(self):
              return await self.handle2.remote()
  
      serve.run(G.bind(g1.bind(), g2.bind()), name="app")
      resp = requests.get("http://127.0.0.1:8000/api")
      assert resp.text == '"ok1"'
      resp = requests.get("http://127.0.0.1:8000/api2")
      assert resp.text == '"ok2"'
  
      # G deployment metrics:
      #   {xxx, route:/api}, {xxx, route:/api2}
      # g1 deployment metrics:
      #   {xxx, route:/api}
      # g2 deployment metrics:
      #   {xxx, route:/api2}
      wait_for_condition(
          lambda: len(
              get_metric_dictionaries(
                  "serve_deployment_request_counter"
              )
          )
          == 4,
          timeout=40,
      )
      (
          requests_metrics_route,
          requests_metrics_app_name,
      ) = self._generate_metrics_summary(
          get_metric_dictionaries("serve_deployment_request_counter")
      )
      assert requests_metrics_route["G"] == {"/api", "/api2"}
      assert requests_metrics_route["g1"] == {"/api"}
      assert requests_metrics_route["g2"] == {"/api2"}
      assert requests_metrics_app_name["G"] == "app"
      assert requests_metrics_app_name["g1"] == "app"
      assert requests_metrics_app_name["g2"] == "app"
  
imports: import os
  import sys
  from typing import DefaultDict, Dict, List, Optional
  import grpc
  import pytest
  import requests
  from fastapi import FastAPI
  import ray
  import ray.util.state
  from ray import serve
  from ray._private.test_utils import SignalActor, wait_for_condition
  from ray.serve._private.constants import DEFAULT_LATENCY_BUCKET_MS
  from ray.serve._private.long_poll import LongPollHost, UpdatedObject
  from ray.serve._private.test_utils import ping_fruit_stand, ping_grpc_call_method, ping_grpc_list_applications
  from ray.serve._private.utils import block_until_http_ready
  from ray.serve.config import gRPCOptions
  from ray.serve.handle import DeploymentHandle
  from ray.serve.metrics import Counter, Gauge, Histogram
  from ray.serve.tests.test_config_files.grpc_deployment import g, g2
label_desc: Use image node_id 5 for calling the TestRequestContextMetrics obj's underlying member method code with example usage: obj.test_request_context_pass_for_handle_passing(serve_start_shutdown) and returns: str, str, unknown, unknown