mirror of https://github.com/grpc/grpc-go.git
				
				
				
			Add support for grpc.SupportPackageIsVersion3 back (#1331)
* Support byte slice file descriptor as metadata and add SupportPackageIsVersion3 back * add v3 test, generate testv3.pb.go with old codegen
This commit is contained in:
		
							parent
							
								
									8855ede8e3
								
							
						
					
					
						commit
						1d797552ae
					
				|  | @ -0,0 +1,236 @@ | ||||||
|  | // Code generated by protoc-gen-go.
 | ||||||
|  | // source: testv3.proto
 | ||||||
|  | // DO NOT EDIT!
 | ||||||
|  | 
 | ||||||
|  | /* | ||||||
|  | Package grpc_testingv3 is a generated protocol buffer package. | ||||||
|  | 
 | ||||||
|  | It is generated from these files: | ||||||
|  | 	testv3.proto | ||||||
|  | 
 | ||||||
|  | It has these top-level messages: | ||||||
|  | 	SearchResponseV3 | ||||||
|  | 	SearchRequestV3 | ||||||
|  | */ | ||||||
|  | package grpc_testingv3 | ||||||
|  | 
 | ||||||
|  | import proto "github.com/golang/protobuf/proto" | ||||||
|  | import fmt "fmt" | ||||||
|  | import math "math" | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	context "golang.org/x/net/context" | ||||||
|  | 	grpc "google.golang.org/grpc" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | // Reference imports to suppress errors if they are not otherwise used.
 | ||||||
|  | var _ = proto.Marshal | ||||||
|  | var _ = fmt.Errorf | ||||||
|  | var _ = math.Inf | ||||||
|  | 
 | ||||||
|  | // This is a compile-time assertion to ensure that this generated file
 | ||||||
|  | // is compatible with the proto package it is being compiled against.
 | ||||||
|  | // A compilation error at this line likely means your copy of the
 | ||||||
|  | // proto package needs to be updated.
 | ||||||
|  | const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
 | ||||||
|  | 
 | ||||||
|  | type SearchResponseV3 struct { | ||||||
|  | 	Results []*SearchResponseV3_Result `protobuf:"bytes,1,rep,name=results" json:"results,omitempty"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (m *SearchResponseV3) Reset()                    { *m = SearchResponseV3{} } | ||||||
|  | func (m *SearchResponseV3) String() string            { return proto.CompactTextString(m) } | ||||||
|  | func (*SearchResponseV3) ProtoMessage()               {} | ||||||
|  | func (*SearchResponseV3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } | ||||||
|  | 
 | ||||||
|  | func (m *SearchResponseV3) GetResults() []*SearchResponseV3_Result { | ||||||
|  | 	if m != nil { | ||||||
|  | 		return m.Results | ||||||
|  | 	} | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | type SearchResponseV3_Result struct { | ||||||
|  | 	Url      string   `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` | ||||||
|  | 	Title    string   `protobuf:"bytes,2,opt,name=title" json:"title,omitempty"` | ||||||
|  | 	Snippets []string `protobuf:"bytes,3,rep,name=snippets" json:"snippets,omitempty"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (m *SearchResponseV3_Result) Reset()                    { *m = SearchResponseV3_Result{} } | ||||||
|  | func (m *SearchResponseV3_Result) String() string            { return proto.CompactTextString(m) } | ||||||
|  | func (*SearchResponseV3_Result) ProtoMessage()               {} | ||||||
|  | func (*SearchResponseV3_Result) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } | ||||||
|  | 
 | ||||||
|  | type SearchRequestV3 struct { | ||||||
|  | 	Query string `protobuf:"bytes,1,opt,name=query" json:"query,omitempty"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (m *SearchRequestV3) Reset()                    { *m = SearchRequestV3{} } | ||||||
|  | func (m *SearchRequestV3) String() string            { return proto.CompactTextString(m) } | ||||||
|  | func (*SearchRequestV3) ProtoMessage()               {} | ||||||
|  | func (*SearchRequestV3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } | ||||||
|  | 
 | ||||||
|  | func init() { | ||||||
|  | 	proto.RegisterType((*SearchResponseV3)(nil), "grpc.testingv3.SearchResponseV3") | ||||||
|  | 	proto.RegisterType((*SearchResponseV3_Result)(nil), "grpc.testingv3.SearchResponseV3.Result") | ||||||
|  | 	proto.RegisterType((*SearchRequestV3)(nil), "grpc.testingv3.SearchRequestV3") | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Reference imports to suppress errors if they are not otherwise used.
 | ||||||
|  | var _ context.Context | ||||||
|  | var _ grpc.ClientConn | ||||||
|  | 
 | ||||||
|  | // This is a compile-time assertion to ensure that this generated file
 | ||||||
|  | // is compatible with the grpc package it is being compiled against.
 | ||||||
|  | const _ = grpc.SupportPackageIsVersion3 | ||||||
|  | 
 | ||||||
|  | // Client API for SearchServiceV3 service
 | ||||||
|  | 
 | ||||||
|  | type SearchServiceV3Client interface { | ||||||
|  | 	Search(ctx context.Context, in *SearchRequestV3, opts ...grpc.CallOption) (*SearchResponseV3, error) | ||||||
|  | 	StreamingSearch(ctx context.Context, opts ...grpc.CallOption) (SearchServiceV3_StreamingSearchClient, error) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | type searchServiceV3Client struct { | ||||||
|  | 	cc *grpc.ClientConn | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func NewSearchServiceV3Client(cc *grpc.ClientConn) SearchServiceV3Client { | ||||||
|  | 	return &searchServiceV3Client{cc} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (c *searchServiceV3Client) Search(ctx context.Context, in *SearchRequestV3, opts ...grpc.CallOption) (*SearchResponseV3, error) { | ||||||
|  | 	out := new(SearchResponseV3) | ||||||
|  | 	err := grpc.Invoke(ctx, "/grpc.testingv3.SearchServiceV3/Search", in, out, c.cc, opts...) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	return out, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (c *searchServiceV3Client) StreamingSearch(ctx context.Context, opts ...grpc.CallOption) (SearchServiceV3_StreamingSearchClient, error) { | ||||||
|  | 	stream, err := grpc.NewClientStream(ctx, &_SearchServiceV3_serviceDesc.Streams[0], c.cc, "/grpc.testingv3.SearchServiceV3/StreamingSearch", opts...) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	x := &searchServiceV3StreamingSearchClient{stream} | ||||||
|  | 	return x, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | type SearchServiceV3_StreamingSearchClient interface { | ||||||
|  | 	Send(*SearchRequestV3) error | ||||||
|  | 	Recv() (*SearchResponseV3, error) | ||||||
|  | 	grpc.ClientStream | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | type searchServiceV3StreamingSearchClient struct { | ||||||
|  | 	grpc.ClientStream | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *searchServiceV3StreamingSearchClient) Send(m *SearchRequestV3) error { | ||||||
|  | 	return x.ClientStream.SendMsg(m) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *searchServiceV3StreamingSearchClient) Recv() (*SearchResponseV3, error) { | ||||||
|  | 	m := new(SearchResponseV3) | ||||||
|  | 	if err := x.ClientStream.RecvMsg(m); err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	return m, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Server API for SearchServiceV3 service
 | ||||||
|  | 
 | ||||||
|  | type SearchServiceV3Server interface { | ||||||
|  | 	Search(context.Context, *SearchRequestV3) (*SearchResponseV3, error) | ||||||
|  | 	StreamingSearch(SearchServiceV3_StreamingSearchServer) error | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func RegisterSearchServiceV3Server(s *grpc.Server, srv SearchServiceV3Server) { | ||||||
|  | 	s.RegisterService(&_SearchServiceV3_serviceDesc, srv) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func _SearchServiceV3_Search_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { | ||||||
|  | 	in := new(SearchRequestV3) | ||||||
|  | 	if err := dec(in); err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	if interceptor == nil { | ||||||
|  | 		return srv.(SearchServiceV3Server).Search(ctx, in) | ||||||
|  | 	} | ||||||
|  | 	info := &grpc.UnaryServerInfo{ | ||||||
|  | 		Server:     srv, | ||||||
|  | 		FullMethod: "/grpc.testingv3.SearchServiceV3/Search", | ||||||
|  | 	} | ||||||
|  | 	handler := func(ctx context.Context, req interface{}) (interface{}, error) { | ||||||
|  | 		return srv.(SearchServiceV3Server).Search(ctx, req.(*SearchRequestV3)) | ||||||
|  | 	} | ||||||
|  | 	return interceptor(ctx, in, info, handler) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func _SearchServiceV3_StreamingSearch_Handler(srv interface{}, stream grpc.ServerStream) error { | ||||||
|  | 	return srv.(SearchServiceV3Server).StreamingSearch(&searchServiceV3StreamingSearchServer{stream}) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | type SearchServiceV3_StreamingSearchServer interface { | ||||||
|  | 	Send(*SearchResponseV3) error | ||||||
|  | 	Recv() (*SearchRequestV3, error) | ||||||
|  | 	grpc.ServerStream | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | type searchServiceV3StreamingSearchServer struct { | ||||||
|  | 	grpc.ServerStream | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *searchServiceV3StreamingSearchServer) Send(m *SearchResponseV3) error { | ||||||
|  | 	return x.ServerStream.SendMsg(m) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (x *searchServiceV3StreamingSearchServer) Recv() (*SearchRequestV3, error) { | ||||||
|  | 	m := new(SearchRequestV3) | ||||||
|  | 	if err := x.ServerStream.RecvMsg(m); err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	return m, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | var _SearchServiceV3_serviceDesc = grpc.ServiceDesc{ | ||||||
|  | 	ServiceName: "grpc.testingv3.SearchServiceV3", | ||||||
|  | 	HandlerType: (*SearchServiceV3Server)(nil), | ||||||
|  | 	Methods: []grpc.MethodDesc{ | ||||||
|  | 		{ | ||||||
|  | 			MethodName: "Search", | ||||||
|  | 			Handler:    _SearchServiceV3_Search_Handler, | ||||||
|  | 		}, | ||||||
|  | 	}, | ||||||
|  | 	Streams: []grpc.StreamDesc{ | ||||||
|  | 		{ | ||||||
|  | 			StreamName:    "StreamingSearch", | ||||||
|  | 			Handler:       _SearchServiceV3_StreamingSearch_Handler, | ||||||
|  | 			ServerStreams: true, | ||||||
|  | 			ClientStreams: true, | ||||||
|  | 		}, | ||||||
|  | 	}, | ||||||
|  | 	Metadata: fileDescriptor0, | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func init() { proto.RegisterFile("testv3.proto", fileDescriptor0) } | ||||||
|  | 
 | ||||||
|  | var fileDescriptor0 = []byte{ | ||||||
|  | 	// 240 bytes of a gzipped FileDescriptorProto
 | ||||||
|  | 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x91, 0x41, 0x4b, 0xc3, 0x40, | ||||||
|  | 	0x10, 0x85, 0x59, 0x83, 0xd1, 0x8e, 0x62, 0xcb, 0xe2, 0x21, 0xe4, 0x62, 0xe8, 0xa5, 0x39, 0x2d, | ||||||
|  | 	0xd2, 0xfd, 0x05, 0x9e, 0xf5, 0xb4, 0x81, 0xe2, 0xb5, 0x86, 0x21, 0x2e, 0xc4, 0x64, 0x3b, 0x33, | ||||||
|  | 	0x09, 0xf8, 0x7b, 0xfc, 0x13, 0xfe, 0x3c, 0x49, 0xd2, 0x08, 0x0a, 0xe2, 0xa5, 0xb7, 0x7d, 0x8f, | ||||||
|  | 	0xf7, 0xbe, 0xe5, 0x31, 0x70, 0x2d, 0xc8, 0xd2, 0x5b, 0x13, 0xa8, 0x95, 0x56, 0xdf, 0x54, 0x14, | ||||||
|  | 	0x4a, 0x33, 0x58, 0xbe, 0xa9, 0x7a, 0xbb, 0xfe, 0x50, 0xb0, 0x2a, 0x70, 0x4f, 0xe5, 0xab, 0x43, | ||||||
|  | 	0x0e, 0x6d, 0xc3, 0xb8, 0xb3, 0xfa, 0x01, 0x2e, 0x08, 0xb9, 0xab, 0x85, 0x13, 0x95, 0x45, 0xf9, | ||||||
|  | 	0xd5, 0x76, 0x63, 0x7e, 0xd6, 0xcc, 0xef, 0x8a, 0x71, 0x63, 0xde, 0xcd, 0xbd, 0xf4, 0x09, 0xe2, | ||||||
|  | 	0xc9, 0xd2, 0x2b, 0x88, 0x3a, 0xaa, 0x13, 0x95, 0xa9, 0x7c, 0xe1, 0x86, 0xa7, 0xbe, 0x85, 0x73, | ||||||
|  | 	0xf1, 0x52, 0x63, 0x72, 0x36, 0x7a, 0x93, 0xd0, 0x29, 0x5c, 0x72, 0xe3, 0x43, 0x40, 0xe1, 0x24, | ||||||
|  | 	0xca, 0xa2, 0x7c, 0xe1, 0xbe, 0xf5, 0x7a, 0x03, 0xcb, 0xf9, 0xc7, 0x43, 0x87, 0x2c, 0x3b, 0x3b, | ||||||
|  | 	0x40, 0x0e, 0x1d, 0xd2, 0xfb, 0x11, 0x3c, 0x89, 0xed, 0xa7, 0x9a, 0x93, 0x05, 0x52, 0xef, 0xcb, | ||||||
|  | 	0x61, 0xcd, 0x23, 0xc4, 0x93, 0xa5, 0xef, 0xfe, 0x9a, 0x71, 0x84, 0xa6, 0xd9, 0x7f, 0x3b, 0xf5, | ||||||
|  | 	0x33, 0x2c, 0x0b, 0x21, 0xdc, 0xbf, 0xf9, 0xa6, 0x3a, 0x19, 0x35, 0x57, 0xf7, 0xea, 0x25, 0x1e, | ||||||
|  | 	0x0f, 0x64, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0xd4, 0xe6, 0xa0, 0xf9, 0xb0, 0x01, 0x00, 0x00, | ||||||
|  | } | ||||||
|  | @ -0,0 +1,21 @@ | ||||||
|  | syntax = "proto3"; | ||||||
|  | 
 | ||||||
|  | package grpc.testingv3; | ||||||
|  | 
 | ||||||
|  | message SearchResponseV3 { | ||||||
|  |   message Result { | ||||||
|  |     string url = 1; | ||||||
|  |     string title = 2; | ||||||
|  |     repeated string snippets = 3; | ||||||
|  |   } | ||||||
|  |   repeated Result results = 1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | message SearchRequestV3 { | ||||||
|  |   string query = 1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | service SearchServiceV3 { | ||||||
|  |   rpc Search(SearchRequestV3) returns (SearchResponseV3); | ||||||
|  |   rpc StreamingSearch(stream SearchRequestV3) returns (stream SearchResponseV3); | ||||||
|  | } | ||||||
|  | @ -212,6 +212,24 @@ func (s *serverReflectionServer) serviceMetadataForSymbol(name string) (interfac | ||||||
| 	return nil, fmt.Errorf("unknown symbol: %v", name) | 	return nil, fmt.Errorf("unknown symbol: %v", name) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // parseMetadata finds the file descriptor bytes specified meta.
 | ||||||
|  | // For SupportPackageIsVersion4, m is the name of the proto file, we
 | ||||||
|  | // call proto.FileDescriptor to get the byte slice.
 | ||||||
|  | // For SupportPackageIsVersion3, m is a byte slice itself.
 | ||||||
|  | func parseMetadata(meta interface{}) ([]byte, bool) { | ||||||
|  | 	// Check if meta is the file name.
 | ||||||
|  | 	if fileNameForMeta, ok := meta.(string); ok { | ||||||
|  | 		return proto.FileDescriptor(fileNameForMeta), true | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	// Check if meta is the byte slice.
 | ||||||
|  | 	if enc, ok := meta.([]byte); ok { | ||||||
|  | 		return enc, true | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return nil, false | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // fileDescEncodingContainingSymbol finds the file descriptor containing the given symbol,
 | // fileDescEncodingContainingSymbol finds the file descriptor containing the given symbol,
 | ||||||
| // does marshalling on it and returns the marshalled result.
 | // does marshalling on it and returns the marshalled result.
 | ||||||
| // The given symbol can be a type, a service or a method.
 | // The given symbol can be a type, a service or a method.
 | ||||||
|  | @ -234,12 +252,11 @@ func (s *serverReflectionServer) fileDescEncodingContainingSymbol(name string) ( | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		// Metadata not valid.
 | 		// Metadata not valid.
 | ||||||
| 		fileNameForMeta, ok := meta.(string) | 		enc, ok := parseMetadata(meta) | ||||||
| 		if !ok { | 		if !ok { | ||||||
| 			return nil, fmt.Errorf("invalid file descriptor for symbol: %v", name) | 			return nil, fmt.Errorf("invalid file descriptor for symbol: %v", name) | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		enc := proto.FileDescriptor(fileNameForMeta) |  | ||||||
| 		fd, err = s.decodeFileDesc(enc) | 		fd, err = s.decodeFileDesc(enc) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return nil, err | 			return nil, err | ||||||
|  |  | ||||||
|  | @ -31,17 +31,20 @@ import ( | ||||||
| 	"google.golang.org/grpc" | 	"google.golang.org/grpc" | ||||||
| 	rpb "google.golang.org/grpc/reflection/grpc_reflection_v1alpha" | 	rpb "google.golang.org/grpc/reflection/grpc_reflection_v1alpha" | ||||||
| 	pb "google.golang.org/grpc/reflection/grpc_testing" | 	pb "google.golang.org/grpc/reflection/grpc_testing" | ||||||
|  | 	pbv3 "google.golang.org/grpc/reflection/grpc_testingv3" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| var ( | var ( | ||||||
| 	s = &serverReflectionServer{} | 	s = &serverReflectionServer{} | ||||||
| 	// fileDescriptor of each test proto file.
 | 	// fileDescriptor of each test proto file.
 | ||||||
| 	fdTest       *dpb.FileDescriptorProto | 	fdTest       *dpb.FileDescriptorProto | ||||||
|  | 	fdTestv3     *dpb.FileDescriptorProto | ||||||
| 	fdProto2     *dpb.FileDescriptorProto | 	fdProto2     *dpb.FileDescriptorProto | ||||||
| 	fdProto2Ext  *dpb.FileDescriptorProto | 	fdProto2Ext  *dpb.FileDescriptorProto | ||||||
| 	fdProto2Ext2 *dpb.FileDescriptorProto | 	fdProto2Ext2 *dpb.FileDescriptorProto | ||||||
| 	// fileDescriptor marshalled.
 | 	// fileDescriptor marshalled.
 | ||||||
| 	fdTestByte       []byte | 	fdTestByte       []byte | ||||||
|  | 	fdTestv3Byte     []byte | ||||||
| 	fdProto2Byte     []byte | 	fdProto2Byte     []byte | ||||||
| 	fdProto2ExtByte  []byte | 	fdProto2ExtByte  []byte | ||||||
| 	fdProto2Ext2Byte []byte | 	fdProto2Ext2Byte []byte | ||||||
|  | @ -65,6 +68,7 @@ func loadFileDesc(filename string) (*dpb.FileDescriptorProto, []byte) { | ||||||
| 
 | 
 | ||||||
| func init() { | func init() { | ||||||
| 	fdTest, fdTestByte = loadFileDesc("test.proto") | 	fdTest, fdTestByte = loadFileDesc("test.proto") | ||||||
|  | 	fdTestv3, fdTestv3Byte = loadFileDesc("testv3.proto") | ||||||
| 	fdProto2, fdProto2Byte = loadFileDesc("proto2.proto") | 	fdProto2, fdProto2Byte = loadFileDesc("proto2.proto") | ||||||
| 	fdProto2Ext, fdProto2ExtByte = loadFileDesc("proto2_ext.proto") | 	fdProto2Ext, fdProto2ExtByte = loadFileDesc("proto2_ext.proto") | ||||||
| 	fdProto2Ext2, fdProto2Ext2Byte = loadFileDesc("proto2_ext2.proto") | 	fdProto2Ext2, fdProto2Ext2Byte = loadFileDesc("proto2_ext2.proto") | ||||||
|  | @ -163,6 +167,16 @@ func (s *server) StreamingSearch(stream pb.SearchService_StreamingSearchServer) | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | type serverV3 struct{} | ||||||
|  | 
 | ||||||
|  | func (s *serverV3) Search(ctx context.Context, in *pbv3.SearchRequestV3) (*pbv3.SearchResponseV3, error) { | ||||||
|  | 	return &pbv3.SearchResponseV3{}, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (s *serverV3) StreamingSearch(stream pbv3.SearchServiceV3_StreamingSearchServer) error { | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func TestReflectionEnd2end(t *testing.T) { | func TestReflectionEnd2end(t *testing.T) { | ||||||
| 	// Start server.
 | 	// Start server.
 | ||||||
| 	lis, err := net.Listen("tcp", "localhost:0") | 	lis, err := net.Listen("tcp", "localhost:0") | ||||||
|  | @ -171,6 +185,7 @@ func TestReflectionEnd2end(t *testing.T) { | ||||||
| 	} | 	} | ||||||
| 	s := grpc.NewServer() | 	s := grpc.NewServer() | ||||||
| 	pb.RegisterSearchServiceServer(s, &server{}) | 	pb.RegisterSearchServiceServer(s, &server{}) | ||||||
|  | 	pbv3.RegisterSearchServiceV3Server(s, &serverV3{}) | ||||||
| 	// Register reflection service on s.
 | 	// Register reflection service on s.
 | ||||||
| 	Register(s) | 	Register(s) | ||||||
| 	go s.Serve(lis) | 	go s.Serve(lis) | ||||||
|  | @ -271,6 +286,11 @@ func testFileContainingSymbol(t *testing.T, stream rpb.ServerReflection_ServerRe | ||||||
| 		{"grpc.testing.SearchService.StreamingSearch", fdTestByte}, | 		{"grpc.testing.SearchService.StreamingSearch", fdTestByte}, | ||||||
| 		{"grpc.testing.SearchResponse", fdTestByte}, | 		{"grpc.testing.SearchResponse", fdTestByte}, | ||||||
| 		{"grpc.testing.ToBeExtended", fdProto2Byte}, | 		{"grpc.testing.ToBeExtended", fdProto2Byte}, | ||||||
|  | 		// Test support package v3.
 | ||||||
|  | 		{"grpc.testingv3.SearchServiceV3", fdTestv3Byte}, | ||||||
|  | 		{"grpc.testingv3.SearchServiceV3.Search", fdTestv3Byte}, | ||||||
|  | 		{"grpc.testingv3.SearchServiceV3.StreamingSearch", fdTestv3Byte}, | ||||||
|  | 		{"grpc.testingv3.SearchResponseV3", fdTestv3Byte}, | ||||||
| 	} { | 	} { | ||||||
| 		if err := stream.Send(&rpb.ServerReflectionRequest{ | 		if err := stream.Send(&rpb.ServerReflectionRequest{ | ||||||
| 			MessageRequest: &rpb.ServerReflectionRequest_FileContainingSymbol{ | 			MessageRequest: &rpb.ServerReflectionRequest_FileContainingSymbol{ | ||||||
|  | @ -469,7 +489,11 @@ func testListServices(t *testing.T, stream rpb.ServerReflection_ServerReflection | ||||||
| 	switch r.MessageResponse.(type) { | 	switch r.MessageResponse.(type) { | ||||||
| 	case *rpb.ServerReflectionResponse_ListServicesResponse: | 	case *rpb.ServerReflectionResponse_ListServicesResponse: | ||||||
| 		services := r.GetListServicesResponse().Service | 		services := r.GetListServicesResponse().Service | ||||||
| 		want := []string{"grpc.testing.SearchService", "grpc.reflection.v1alpha.ServerReflection"} | 		want := []string{ | ||||||
|  | 			"grpc.testingv3.SearchServiceV3", | ||||||
|  | 			"grpc.testing.SearchService", | ||||||
|  | 			"grpc.reflection.v1alpha.ServerReflection", | ||||||
|  | 		} | ||||||
| 		// Compare service names in response with want.
 | 		// Compare service names in response with want.
 | ||||||
| 		if len(services) != len(want) { | 		if len(services) != len(want) { | ||||||
| 			t.Errorf("= %v, want service names: %v", services, want) | 			t.Errorf("= %v, want service names: %v", services, want) | ||||||
|  |  | ||||||
|  | @ -504,6 +504,12 @@ func getMaxSize(mcMax, doptMax *int, defaultVal int) *int { | ||||||
| 	return doptMax | 	return doptMax | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // SupportPackageIsVersion3 is referenced from generated protocol buffer files.
 | ||||||
|  | // The latest support package version is 4.
 | ||||||
|  | // SupportPackageIsVersion3 is kept for compability. It will be removed in the
 | ||||||
|  | // next support package version update.
 | ||||||
|  | const SupportPackageIsVersion3 = true | ||||||
|  | 
 | ||||||
| // SupportPackageIsVersion4 is referenced from generated protocol buffer files
 | // SupportPackageIsVersion4 is referenced from generated protocol buffer files
 | ||||||
| // to assert that that code is compatible with this version of the grpc package.
 | // to assert that that code is compatible with this version of the grpc package.
 | ||||||
| //
 | //
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue