def METHOD_NAME(self):
    """
    The proxy client registers itself as a producer of the proxy server and
    vice versa.
    """
    # create a ProxyServer instance
    addr = address.IPv4Address("TCP", "127.0.0.1", 0)
    server = portforward.ProxyFactory("127.0.0.1", 0).buildProtocol(addr)
    # set the reactor for this test
    reactor = proto_helpers.MemoryReactor()
    server.reactor = reactor
    # make the connection
    serverTransport = proto_helpers.StringTransport()
    server.makeConnection(serverTransport)
    # check that the ProxyClientFactory is connecting to the backend
    self.assertEqual(len(reactor.tcpClients), 1)
    # get the factory instance and check it's the one we expect
    host, port, clientFactory, timeout, _ = reactor.tcpClients[0]
    self.assertIsInstance(clientFactory, portforward.ProxyClientFactory)
    # Connect it
    client = clientFactory.buildProtocol(addr)
    clientTransport = proto_helpers.StringTransport()
    client.makeConnection(clientTransport)
    # check that the producers are registered
    self.assertIs(clientTransport.producer, serverTransport)
    self.assertIs(serverTransport.producer, clientTransport)
    # check the streaming attribute in both transports
    self.assertTrue(clientTransport.streaming)
    self.assertTrue(serverTransport.streaming)