def setUp(self):
        self.server_completion_queue = cygrpc.CompletionQueue()
        self.server = cygrpc.Server([(b'grpc.so_reuseport', 0)])
        self.server.register_completion_queue(self.server_completion_queue)
        port = self.server.add_http2_port(b'[::]:0')
        self.server.start()
        self.channel = cygrpc.Channel('localhost:{}'.format(port).encode(), [],
                                      None)

        self._server_shutdown_tag = 'server_shutdown_tag'
        self.server_condition = threading.Condition()
        self.server_driver = QueueDriver(self.server_condition,
                                         self.server_completion_queue)
        with self.server_condition:
            self.server_driver.add_due({
                self._server_shutdown_tag,
            })

        self.client_condition = threading.Condition()
        self.client_completion_queue = cygrpc.CompletionQueue()
        self.client_driver = QueueDriver(self.client_condition,
                                         self.client_completion_queue)