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)
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()
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()