33 """Tests for google.protobuf.internal.service_reflection."""
35 __author__ =
'petar@google.com (Petar Petrov)'
39 import unittest2
as unittest
52 def CallMethod(self, method, controller, request, response, callback):
59 def SetFailed(self, msg):
64 class MyService(unittest_pb2.TestService):
67 self.callback_response =
None
69 def MyCallback(response):
70 self.callback_response = response
72 rpc_controller = MockRpcController()
73 channel = MockRpcChannel()
75 srvc.Foo(rpc_controller, unittest_pb2.FooRequest(), MyCallback)
76 self.assertEqual(
'Method Foo not implemented.',
77 rpc_controller.failure_message)
78 self.assertEqual(
None, self.callback_response)
80 rpc_controller.failure_message =
None
82 service_descriptor = unittest_pb2.TestService.GetDescriptor()
83 srvc.CallMethod(service_descriptor.methods[1], rpc_controller,
84 unittest_pb2.BarRequest(), MyCallback)
85 self.assertTrue(srvc.GetRequestClass(service_descriptor.methods[1])
is
86 unittest_pb2.BarRequest)
87 self.assertTrue(srvc.GetResponseClass(service_descriptor.methods[1])
is
88 unittest_pb2.BarResponse)
89 self.assertEqual(
'Method Bar not implemented.',
90 rpc_controller.failure_message)
91 self.assertEqual(
None, self.callback_response)
93 class MyServiceImpl(unittest_pb2.TestService):
94 def Foo(self, rpc_controller, request, done):
96 def Bar(self, rpc_controller, request, done):
99 srvc = MyServiceImpl()
100 rpc_controller.failure_message =
None
101 srvc.Foo(rpc_controller, unittest_pb2.FooRequest(), MyCallback)
102 self.assertEqual(
None, rpc_controller.failure_message)
103 self.assertEqual(
True, srvc.foo_called)
105 rpc_controller.failure_message =
None
106 srvc.CallMethod(service_descriptor.methods[1], rpc_controller,
107 unittest_pb2.BarRequest(), MyCallback)
108 self.assertEqual(
None, rpc_controller.failure_message)
109 self.assertEqual(
True, srvc.bar_called)
113 def CallMethod(self, method, controller, request,
114 response_class, callback):
118 callback(response_class())
122 def MyCallback(response):
125 channel = MockRpcChannel()
126 stub = unittest_pb2.TestService_Stub(channel)
127 rpc_controller =
'controller'
131 self.assertEqual(unittest_pb2.TestService_Stub.GetDescriptor(),
132 stub.GetDescriptor())
135 stub.Foo(rpc_controller, request, MyCallback)
138 self.assertEqual(request, channel.request)
139 self.assertEqual(rpc_controller, channel.controller)
140 self.assertEqual(stub.GetDescriptor().methods[0], channel.method)
143 if __name__ ==
'__main__':