// TestGRPCTMServer creates a fake server implementation, a fake client // implementation, and runs the test suite against the setup. func TestGRPCTMServer(t *testing.T) { // Listen on a random port listener, err := net.Listen("tcp", ":0") if err != nil { t.Fatalf("Cannot listen: %v", err) } host := listener.Addr().(*net.TCPAddr).IP.String() port := int32(listener.Addr().(*net.TCPAddr).Port) // Create a gRPC server and listen on the port. s := grpc.NewServer() fakeAgent := agentrpctest.NewFakeRPCAgent(t) tabletmanagerservicepb.RegisterTabletManagerServer(s, &server{agent: fakeAgent}) go s.Serve(listener) // Create a gRPC client to talk to the fake tablet. client := &grpctmclient.Client{} ti := topo.NewTabletInfo(&topodatapb.Tablet{ Alias: &topodatapb.TabletAlias{ Cell: "test", Uid: 123, }, Hostname: host, PortMap: map[string]int32{ "grpc": port, }, }, 0) // and run the test suite agentrpctest.Run(t, client, ti, fakeAgent) }
func init() { tabletmanager.RegisterQueryServices = append(tabletmanager.RegisterQueryServices, func(agent *tabletmanager.ActionAgent) { if servenv.GRPCCheckServiceMap("tabletmanager") { tabletmanagerservicepb.RegisterTabletManagerServer(servenv.GRPCServer, &server{agent}) } }) }
// RegisterForTest will register the RPC, to be used by test instances only func RegisterForTest(s *grpc.Server, agent *tabletmanager.ActionAgent) { tabletmanagerservicepb.RegisterTabletManagerServer(s, &server{agent}) }