def testFileContainingExtension(self):
     requests = (
         reflection_pb2.ServerReflectionRequest(
             file_containing_extension=reflection_pb2.ExtensionRequest(
                 containing_type='grpc.testing.proto2.Empty',
                 extension_number=125,
             ), ),
         reflection_pb2.ServerReflectionRequest(
             file_containing_extension=reflection_pb2.ExtensionRequest(
                 containing_type='i.donut.exist.co.uk.org.net.me.name.foo',
                 extension_number=55,
             ), ),
     )
     responses = tuple(self._stub.ServerReflectionInfo(requests))
     expected_responses = (
         reflection_pb2.ServerReflectionResponse(
             valid_host='',
             file_descriptor_response=reflection_pb2.FileDescriptorResponse(
                 file_descriptor_proto=(_file_descriptor_to_proto(
                     empty_extensions_pb2.DESCRIPTOR), ))),
         reflection_pb2.ServerReflectionResponse(
             valid_host='',
             error_response=reflection_pb2.ErrorResponse(
                 error_code=grpc.StatusCode.NOT_FOUND.value[0],
                 error_message=grpc.StatusCode.NOT_FOUND.value[1].encode(),
             )),
     )
     self.assertEqual(expected_responses, responses)
示例#2
0
def _not_found_error():
  return reflection_pb2.ServerReflectionResponse(
      error_response=reflection_pb2.ErrorResponse(
          error_code=grpc.StatusCode.NOT_FOUND.value[0],
          error_message=grpc.StatusCode.NOT_FOUND.value[1].encode(),
      )
  )
示例#3
0
 def _file_containing_extension(containing_type, extension_number):
   # TODO(atash) Python protobuf currently doesn't support querying extensions.
   # https://github.com/google/protobuf/issues/2248
   return reflection_pb2.ServerReflectionResponse(
       error_response=reflection_pb2.ErrorResponse(
           error_code=grpc.StatusCode.UNIMPLEMENTED.value[0],
           error_message=grpc.StatusCode.UNIMPLMENTED.value[1].encode(),
       )
   )
示例#4
0
def _file_descriptor_response(descriptor):
  proto = descriptor_pb2.FileDescriptorProto()
  descriptor.CopyToProto(proto)
  serialized_proto = proto.SerializeToString()
  return reflection_pb2.ServerReflectionResponse(
      file_descriptor_response=reflection_pb2.FileDescriptorResponse(
        file_descriptor_proto=(serialized_proto,)
      ),
  )
示例#5
0
 def _list_services(self):
   return reflection_pb2.ServerReflectionResponse(
       list_services_response=reflection_pb2.ListServiceResponse(
           service=[
               reflection_pb2.ServiceResponse(name=service_name)
               for service_name in self._service_names
           ]
       )
   )
示例#6
0
 def _extension_numbers_of_type(fully_qualified_name):
   # TODO(atash) We're allowed to leave this unsupported according to the
   # protocol, but we should still eventually implement it. Hits the same issue
   # as `_file_containing_extension`, however.
   # https://github.com/google/protobuf/issues/2248
   return reflection_pb2.ServerReflectionResponse(
       error_response=reflection_pb2.ErrorResponse(
           error_code=grpc.StatusCode.UNIMPLEMENTED.value[0],
           error_message=grpc.StatusCode.UNIMPLMENTED.value[1].encode(),
       )
   )
 def testListServices(self):
     requests = (reflection_pb2.ServerReflectionRequest(
         list_services='', ), )
     responses = tuple(self._stub.ServerReflectionInfo(requests))
     expected_responses = (reflection_pb2.ServerReflectionResponse(
         valid_host='',
         list_services_response=reflection_pb2.ListServiceResponse(
             service=tuple(
                 reflection_pb2.ServiceResponse(name=name)
                 for name in _SERVICE_NAMES))), )
     self.assertEqual(expected_responses, responses)
 def testFileByName(self):
     requests = (
         reflection_pb2.ServerReflectionRequest(
             file_by_filename=_EMPTY_PROTO_FILE_NAME),
         reflection_pb2.ServerReflectionRequest(
             file_by_filename='i-donut-exist'),
     )
     responses = tuple(self._stub.ServerReflectionInfo(requests))
     expected_responses = (
         reflection_pb2.ServerReflectionResponse(
             valid_host='',
             file_descriptor_response=reflection_pb2.FileDescriptorResponse(
                 file_descriptor_proto=(
                     _file_descriptor_to_proto(empty_pb2.DESCRIPTOR), ))),
         reflection_pb2.ServerReflectionResponse(
             valid_host='',
             error_response=reflection_pb2.ErrorResponse(
                 error_code=grpc.StatusCode.NOT_FOUND.value[0],
                 error_message=grpc.StatusCode.NOT_FOUND.value[1].encode(),
             )),
     )
     self.assertEqual(expected_responses, responses)
 def testFileBySymbol(self):
     requests = (
         reflection_pb2.ServerReflectionRequest(
             file_containing_symbol=_EMPTY_PROTO_SYMBOL_NAME),
         reflection_pb2.ServerReflectionRequest(
             file_containing_symbol='i.donut.exist.co.uk.org.net.me.name.foo'
         ),
     )
     responses = tuple(self._stub.ServerReflectionInfo(requests))
     expected_responses = (
         reflection_pb2.ServerReflectionResponse(
             valid_host='',
             file_descriptor_response=reflection_pb2.FileDescriptorResponse(
                 file_descriptor_proto=(
                     _file_descriptor_to_proto(empty_pb2.DESCRIPTOR), ))),
         reflection_pb2.ServerReflectionResponse(
             valid_host='',
             error_response=reflection_pb2.ErrorResponse(
                 error_code=grpc.StatusCode.NOT_FOUND.value[0],
                 error_message=grpc.StatusCode.NOT_FOUND.value[1].encode(),
             )),
     )
     self.assertEqual(expected_responses, responses)
示例#10
0
 def ServerReflectionInfo(self, request_iterator, context):
   for request in request_iterator:
     if request.HasField('file_by_filename'):
       yield self._file_by_filename(request.file_by_filename)
     elif request.HasField('file_containing_symbol'):
       yield self._file_containing_symbol(request.file_containing_symbol)
     elif request.HasField('file_containing_extension'):
       yield self._file_containing_extension(
           request.file_containing_extension.containing_type,
           request.file_containing_extension.extension_number)
     elif request.HasField('all_extension_numbers_of_type'):
       yield _all_extension_numbers_of_type(
           request.all_extension_numbers_of_type)
     elif request.HasField('list_services'):
       yield self._list_services()
     else:
       yield reflection_pb2.ServerReflectionResponse(
           error_response=reflection_pb2.ErrorResponse(
               error_code=grpc.StatusCode.INVALID_ARGUMENT.value[0],
               error_message=grpc.StatusCode.INVALID_ARGUMENT.value[1].encode(),
           )
       )