Beispiel #1
0
    def test_handle_connection_async(self):
        rsp = test_pb2.TestResponse(return_code=0, msg='SUCCESS')
        service = FakeTestService(True, rsp)
        self.server.register_service(service)

        req = test_pb2.TestRequest(name='abc', num=1)
        serialized_req = self.get_serialize_message(1, self.service_descriptor,
                                                    self.method.name, req)
        serialized_rsp = self.get_serialize_message(1, self.service_descriptor,
                                                    self.method.name, rsp)
        socket = FakeTcpSocket(is_client=False)
        socket.connect(('127.0.0.1', 34567))
        socket.set_recv_content(serialized_req + serialized_req) # 2 requests

        t = gevent.spawn(self.server.handle_connection, socket, ('127.0.0.1', 34567))
        gevent.sleep(1)
        self.assertEqual("", socket.get_send_content())
        gevent.sleep(1)
        socket.close()
        t.join()

        actual_serialized_rsp = socket.get_send_content()
        self.assertEqual(serialized_rsp + serialized_rsp, actual_serialized_rsp)
Beispiel #2
0
    def test_handle_heartbeat(self):
        req = rpc_meta_pb2.HeartBeatRequest(magic_num=4321)
        rsp = rpc_meta_pb2.HeartBeatResponse(return_code=0)
        service_desc = rpc_meta_pb2.BuiltinService.GetDescriptor()
        method_desc = service_desc.FindMethodByName('HeartBeat')
        serialized_req = self.get_serialize_message(1, service_desc,
                                                    method_desc.name, req)
        serialized_rsp = self.get_serialize_message(1, service_desc,
                                                    method_desc.name, rsp)

        socket = FakeTcpSocket(is_client=False)
        socket.connect(('127.0.0.1', 34567))
        socket.set_recv_content(serialized_req)

        t = gevent.spawn(self.server.handle_connection, socket, ('127.0.0.1', 34567))
        gevent.sleep(1)
        actual_serialized_rsp = socket.get_send_content()
        self.assertEqual(serialized_rsp, actual_serialized_rsp)

        socket.close()
        t.join()
Beispiel #3
0
    def test_handle_connection_timeout(self):
        self.server.set_service_timeout(1)
        rsp = test_pb2.TestResponse(return_code=0, msg='SUCCESS')
        service = FakeTestService(True, rsp, sleep_time=3)
        self.server.register_service(service)

        req = test_pb2.TestRequest(name='abc', num=1)
        serialized_req = self.get_serialize_message(1, self.service_descriptor,
                                                    self.method.name, req)
        err_rsp = rpc_meta_pb2.ErrorResponse(err_code=rpc_meta_pb2.SERVER_SERVICE_TIMEOUT,
                                             err_msg='service timeout')
        serialized_rsp = self.get_serialize_message(1, self.service_descriptor,
                                                    self.method.name, err_rsp)
        socket = FakeTcpSocket(is_client=False)
        socket.connect(('127.0.0.1', 34567))
        socket.set_recv_content(serialized_req)

        t = gevent.spawn(self.server.handle_connection, socket, ('127.0.0.1', 34567))
        gevent.sleep(2)
        actual_serialized_rsp = socket.get_send_content()
        self.assertEqual(serialized_rsp, actual_serialized_rsp)

        socket.close()
        t.join()