code: def test_zmq_queue_manager(queue_manager) -> None:
      config = queue_manager.config
  
      assert isinstance(config.client_config, ZMQClientConfig)
      assert config.client_type == ZMQClient
  
      assert queue_manager.client_config.hostname
  
      assert isinstance(queue_manager._client, ZMQClient)
      assert len(queue_manager.consumers) == 0
      assert len(queue_manager.producers) == 0
  
      # Add a Message Handler
      received_messages = []
  
      QueueName = "my-queue"
  
      class CustomHandler(AbstractMessageHandler):
          queue_name = QueueName
  
          @staticmethod
          def handle_message(message: bytes, *args, **kwargs):
              received_messages.append(message)
  
      producer = queue_manager.create_producer(
          queue_name=QueueName, queue_stash=None, context=None
      )
  
      assert isinstance(producer, ZMQProducer)
  
      consumer = queue_manager.create_consumer(
          message_handler=CustomHandler,
          address=producer.address,
          service_name="my-service",
      )
  
      assert isinstance(consumer, ZMQConsumer)
  
      assert consumer.address == producer.address
  
      assert len(queue_manager.consumers) == 1
      assert len(queue_manager.producers) == 1
      assert QueueName in queue_manager.consumers
      assert QueueName in queue_manager.producers
      consumer_count = len(queue_manager.consumers[QueueName])
      assert consumer_count == 1
  
      status = queue_manager.close()
      assert isinstance(status, SyftSuccess)
  
imports: from collections import defaultdict
  import random
  import sys
  from time import sleep
  from faker import Faker
  import pytest
  from zmq import Socket
  import syft
  from syft.service.queue.base_queue import AbstractMessageHandler
  from syft.service.queue.queue import QueueManager
  from syft.service.queue.zmq_queue import ZMQClient
  from syft.service.queue.zmq_queue import ZMQClientConfig
  from syft.service.queue.zmq_queue import ZMQConsumer
  from syft.service.queue.zmq_queue import ZMQProducer
  from syft.service.queue.zmq_queue import ZMQQueueConfig
  from syft.service.response import SyftError
  from syft.service.response import SyftSuccess
  from syft.util.util import get_queue_address
label_desc: Use image node_id 8 for calling a global function with example usage: test_zmq_queue_manager(queue_manager) without return types