// 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) }
// the test here creates a fake server implementation, a fake client // implementation, and runs the test suite against the setup. func TestGoRPCTMServer(t *testing.T) { // Listen on a random port listener, err := net.Listen("tcp", ":0") if err != nil { t.Fatalf("Cannot listen: %v", err) } defer listener.Close() port := int32(listener.Addr().(*net.TCPAddr).Port) // Create a Go Rpc server and listen on the port server := rpcplus.NewServer() fakeAgent := agentrpctest.NewFakeRPCAgent(t) server.Register(&TabletManager{fakeAgent}) // create the HTTP server, serve the server from it handler := http.NewServeMux() bsonrpc.ServeCustomRPC(handler, server) httpServer := http.Server{ Handler: handler, } go httpServer.Serve(listener) // Create a Go Rpc client to talk to the fake tablet client := &gorpctmclient.GoRPCTabletManagerClient{} ti := topo.NewTabletInfo(&pb.Tablet{ Alias: &pb.TabletAlias{ Cell: "test", Uid: 123, }, Hostname: "localhost", PortMap: map[string]int32{ "vt": port, }, }, 0) // and run the test suite agentrpctest.Run(t, client, ti, fakeAgent) }