// This test makes sure the go rpc service works func TestGoRPCTabletConn(t *testing.T) { // fake service service := tabletconntest.CreateFakeServer(t) // listen on a random port listener, err := net.Listen("tcp", ":0") if err != nil { t.Fatalf("Cannot listen: %v", err) } port := listener.Addr().(*net.TCPAddr).Port // Create a gRPC server and listen on the port server := grpc.NewServer() pbs.RegisterQueryServer(server, grpcqueryservice.New(service)) go server.Serve(listener) // Create a gRPC client connecting to the server ctx := context.Background() client, err := DialTablet(ctx, topo.EndPoint{ Host: "localhost", NamedPortMap: map[string]int{ "grpc": port, }, }, tabletconntest.TestKeyspace, tabletconntest.TestShard, 30*time.Second) if err != nil { t.Fatalf("dial failed: %v", err) } // run the test suite tabletconntest.TestSuite(t, client, service) // and clean up client.Close() }
func init() { tabletserver.RegisterFunctions = append(tabletserver.RegisterFunctions, func(qsc tabletserver.Controller) { if servenv.GRPCCheckServiceMap("queryservice") { queryservicepb.RegisterQueryServer(servenv.GRPCServer, &query{qsc.QueryService()}) } }) }
func init() { tabletserver.QueryServiceControlRegisterFunctions = append(tabletserver.QueryServiceControlRegisterFunctions, func(qsc tabletserver.QueryServiceControl) { if servenv.GRPCCheckServiceMap("queryservice") { pbs.RegisterQueryServer(servenv.GRPCServer, New(qsc.QueryService())) } }) }
// RegisterForTest should only be used by unit tests func RegisterForTest(s *grpc.Server, server queryservice.QueryService) { queryservicepb.RegisterQueryServer(s, &query{server}) }