class_docstr: GRPCServer test
class_docstr_tok: ["GRPCServer","test"]
code: def test_with_model(self):
      class Item(BaseModel):
          url: str
          ids: T.List[int]
  
      service = api_service.APIService(desc="test")
  
      @service.api(
          path="/test", input_model=JSON(Item), output_model=JSON(Item)
      )
      def test(item: Item):
          return item
  
      self.server = GRPCServer(service)
      self.server.start("localhost", 50001)
      client = Client("localhost", 50001)
  
      response = client("/")
      self.assertEqual(response.content, "test")
  
      data = Item(url="test_url", ids=[1, 2, 3])
  
      response = client("/test", data.dict())
      self.assertEqual(response.content, data.dict())
  
      async def run_async():
          async with AsyncClient("localhost", 50001) as aclient:
              response = await aclient("/test", data.dict())
              self.assertEqual(response.content, data.dict())
  
      asyncio.run(run_async())
  
imports: import unittest
  import typing
  import asyncio
  from pydantic import BaseModel
  import numpy
  from towhee import api_service, pipe
  from towhee.serve.grpc.server import GRPCServer
  from towhee.serve.grpc.client import Client, AsyncClient
  from towhee.serve.io import JSON, NDARRAY, BYTES
  from towhee.utils.serializer import from_json
label_desc: Use image node_id 3 for calling the TestGRPC obj's underlying member method code with example usage: obj.test_with_model() and returns: item