14 """Tests of grpc_reflection.v1alpha.reflection."""
26 from src.proto.grpc.testing
import empty_pb2
27 from src.proto.grpc.testing.proto2
import empty2_extensions_pb2
30 _EMPTY_PROTO_FILE_NAME =
'src/proto/grpc/testing/empty.proto'
31 _EMPTY_PROTO_SYMBOL_NAME =
'grpc.testing.Empty'
32 _SERVICE_NAMES = (
'Angstrom',
'Bohr',
'Curie',
'Dyson',
'Einstein',
'Feynman',
34 _EMPTY_EXTENSIONS_SYMBOL_NAME =
'grpc.testing.proto2.EmptyWithExtensions'
35 _EMPTY_EXTENSIONS_NUMBERS = (
45 proto = descriptor_pb2.FileDescriptorProto()
46 descriptor.CopyToProto(proto)
47 return proto.SerializeToString()
50 @unittest.skipIf(sys.version_info[0] < 3,
51 'ProtoBuf descriptor has moved on from Python2')
56 reflection.enable_server_reflection(_SERVICE_NAMES, self.
_server)
57 port = self.
_server.add_insecure_port(
'[::]:0')
69 reflection_pb2.ServerReflectionRequest(
70 file_by_filename=_EMPTY_PROTO_FILE_NAME),
71 reflection_pb2.ServerReflectionRequest(
72 file_by_filename=
'i-donut-exist'),
74 responses = tuple(self.
_stub.ServerReflectionInfo(
iter(requests)))
75 expected_responses = (
76 reflection_pb2.ServerReflectionResponse(
78 file_descriptor_response=reflection_pb2.FileDescriptorResponse(
79 file_descriptor_proto=(
81 reflection_pb2.ServerReflectionResponse(
83 error_response=reflection_pb2.ErrorResponse(
84 error_code=grpc.StatusCode.NOT_FOUND.value[0],
85 error_message=grpc.StatusCode.NOT_FOUND.value[1].
encode(),
88 self.assertEqual(expected_responses, responses)
92 reflection_pb2.ServerReflectionRequest(
93 file_containing_symbol=_EMPTY_PROTO_SYMBOL_NAME),
94 reflection_pb2.ServerReflectionRequest(
95 file_containing_symbol=
'i.donut.exist.co.uk.org.net.me.name.foo'
98 responses = tuple(self.
_stub.ServerReflectionInfo(
iter(requests)))
99 expected_responses = (
100 reflection_pb2.ServerReflectionResponse(
102 file_descriptor_response=reflection_pb2.FileDescriptorResponse(
103 file_descriptor_proto=(
105 reflection_pb2.ServerReflectionResponse(
107 error_response=reflection_pb2.ErrorResponse(
108 error_code=grpc.StatusCode.NOT_FOUND.value[0],
109 error_message=grpc.StatusCode.NOT_FOUND.value[1].
encode(),
112 self.assertEqual(expected_responses, responses)
116 reflection_pb2.ServerReflectionRequest(
117 file_containing_extension=reflection_pb2.ExtensionRequest(
118 containing_type=_EMPTY_EXTENSIONS_SYMBOL_NAME,
119 extension_number=125,
121 reflection_pb2.ServerReflectionRequest(
122 file_containing_extension=reflection_pb2.ExtensionRequest(
123 containing_type=
'i.donut.exist.co.uk.org.net.me.name.foo',
127 responses = tuple(self.
_stub.ServerReflectionInfo(
iter(requests)))
128 expected_responses = (
129 reflection_pb2.ServerReflectionResponse(
131 file_descriptor_response=reflection_pb2.FileDescriptorResponse(
133 empty2_extensions_pb2.DESCRIPTOR),))),
134 reflection_pb2.ServerReflectionResponse(
136 error_response=reflection_pb2.ErrorResponse(
137 error_code=grpc.StatusCode.NOT_FOUND.value[0],
138 error_message=grpc.StatusCode.NOT_FOUND.value[1].
encode(),
141 self.assertEqual(expected_responses, responses)
145 reflection_pb2.ServerReflectionRequest(
146 all_extension_numbers_of_type=_EMPTY_EXTENSIONS_SYMBOL_NAME),
147 reflection_pb2.ServerReflectionRequest(
148 all_extension_numbers_of_type=
'i.donut.exist.co.uk.net.name.foo'
151 responses = tuple(self.
_stub.ServerReflectionInfo(
iter(requests)))
152 expected_responses = (
153 reflection_pb2.ServerReflectionResponse(
155 all_extension_numbers_response=reflection_pb2.
156 ExtensionNumberResponse(
157 base_type_name=_EMPTY_EXTENSIONS_SYMBOL_NAME,
158 extension_number=_EMPTY_EXTENSIONS_NUMBERS)),
159 reflection_pb2.ServerReflectionResponse(
161 error_response=reflection_pb2.ErrorResponse(
162 error_code=grpc.StatusCode.NOT_FOUND.value[0],
163 error_message=grpc.StatusCode.NOT_FOUND.value[1].
encode(),
166 self.assertEqual(expected_responses, responses)
169 requests = (reflection_pb2.ServerReflectionRequest(list_services=
'',),)
170 responses = tuple(self.
_stub.ServerReflectionInfo(
iter(requests)))
171 expected_responses = (reflection_pb2.ServerReflectionResponse(
173 list_services_response=reflection_pb2.ListServiceResponse(
175 reflection_pb2.ServiceResponse(name=name)
176 for name
in _SERVICE_NAMES))),)
177 self.assertEqual(expected_responses, responses)
180 self.assertEqual(reflection.SERVICE_NAME,
181 'grpc.reflection.v1alpha.ServerReflection')
184 if __name__ ==
'__main__':
185 unittest.main(verbosity=2)