31 """Tests for google.protobuf.internal.service_reflection."""
33 __author__ =
'petar@google.com (Petar Petrov)'
43 class FooUnitTest(unittest.TestCase):
47 def CallMethod(self, method, controller, request, response, callback):
54 def SetFailed(self, msg):
59 class MyService(unittest_pb2.TestService):
62 self.callback_response =
None
64 def MyCallback(response):
65 self.callback_response = response
67 rpc_controller = MockRpcController()
68 channel = MockRpcChannel()
70 srvc.Foo(rpc_controller, unittest_pb2.FooRequest(), MyCallback)
71 self.assertEqual(
'Method Foo not implemented.',
72 rpc_controller.failure_message)
73 self.assertEqual(
None, self.callback_response)
75 rpc_controller.failure_message =
None
77 service_descriptor = unittest_pb2.TestService.GetDescriptor()
78 srvc.CallMethod(service_descriptor.methods[1], rpc_controller,
79 unittest_pb2.BarRequest(), MyCallback)
80 self.assertTrue(srvc.GetRequestClass(service_descriptor.methods[1])
is
81 unittest_pb2.BarRequest)
82 self.assertTrue(srvc.GetResponseClass(service_descriptor.methods[1])
is
83 unittest_pb2.BarResponse)
84 self.assertEqual(
'Method Bar not implemented.',
85 rpc_controller.failure_message)
86 self.assertEqual(
None, self.callback_response)
88 class MyServiceImpl(unittest_pb2.TestService):
89 def Foo(self, rpc_controller, request, done):
90 self.foo_called =
True
91 def Bar(self, rpc_controller, request, done):
92 self.bar_called =
True
94 srvc = MyServiceImpl()
95 rpc_controller.failure_message =
None
96 srvc.Foo(rpc_controller, unittest_pb2.FooRequest(), MyCallback)
97 self.assertEqual(
None, rpc_controller.failure_message)
98 self.assertEqual(
True, srvc.foo_called)
100 rpc_controller.failure_message =
None
101 srvc.CallMethod(service_descriptor.methods[1], rpc_controller,
102 unittest_pb2.BarRequest(), MyCallback)
103 self.assertEqual(
None, rpc_controller.failure_message)
104 self.assertEqual(
True, srvc.bar_called)
108 def CallMethod(self, method, controller, request,
109 response_class, callback):
117 def MyCallback(response):
120 channel = MockRpcChannel()
121 stub = unittest_pb2.TestService_Stub(channel)
122 rpc_controller =
'controller'
126 self.assertEqual(unittest_pb2.TestService_Stub.GetDescriptor(),
127 stub.GetDescriptor())
130 stub.Foo(rpc_controller, request, MyCallback)
133 self.assertEqual(request, channel.request)
134 self.assertEqual(rpc_controller, channel.controller)
135 self.assertEqual(stub.GetDescriptor().methods[0], channel.method)
138 if __name__ ==
'__main__':