def test_echo(self):
        TcpServer(self.ip, self.port, EchoService)
        client = TcpClient(self.ip, self.port, EchoClient, IEchoService_Stub)

        client.async_connect()

        echo_recorder = EchoRecorder()
        rpc_count = 0

        for i in xrange(10):
            asyncore.loop(0.1, count=1)
            if client.stub:
                if not client.service.streamout:
                    client.service.set_streamout(echo_recorder)
                request = EchoString()
                request.message = str(rpc_count)
                controller = RpcController(client.rpc_channel)
                client.stub.echo(controller, request, None)
                rpc_count += 1

        asyncore.loop(0.1, count=30)

        self.assertEqual(len(echo_recorder.record), rpc_count)

        echo_recorder.record.sort(cmp=lambda x, y: int(x) < int(y))
        for i in xrange(rpc_count):
            self.assertEqual(echo_recorder.record[i], str(i))
    def test_connection(self):
        server = TcpServer(self.ip, self.port, DummyService)
        client = TcpClient(self.ip, self.port, DummyService, DummyStub)
        client.async_connect()

        asyncore.loop(timeout=0.1, count=10)

        self.assertEqual(client.status, TcpConnection.ST_ESTABLISHED)

        server.close()
        client.close()