// the test here creates a fake server implementation, a fake client // implementation, and runs the test suite against the setup. func TestGoRPCBinlogStreamer(t *testing.T) { // Listen on a random port listener, err := net.Listen("tcp", ":0") if err != nil { t.Fatalf("Cannot listen: %v", err) } // Create a Go Rpc server and listen on the port server := rpcplus.NewServer() fakeUpdateStream := binlogplayertest.NewFakeBinlogStreamer(t) server.Register(gorpcbinlogstreamer.New(fakeUpdateStream)) // create the HTTP server, serve the server from it handler := http.NewServeMux() bsonrpc.ServeCustomRPC(handler, server, false) httpServer := http.Server{ Handler: handler, } go httpServer.Serve(listener) // Create a Go Rpc client to talk to the fake tablet client := &GoRpcBinlogPlayerClient{} // and send it to the test suite binlogplayertest.Run(t, client, listener.Addr().String(), fakeUpdateStream) }
// the test here creates a fake server implementation, a fake client // implementation, and runs the test suite against the setup. func TestGoRPCBinlogStreamer(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 := listener.Addr().(*net.TCPAddr).Port // Create a Go Rpc server and listen on the port server := rpcplus.NewServer() fakeUpdateStream := binlogplayertest.NewFakeBinlogStreamer(t) server.Register(gorpcbinlogstreamer.New(fakeUpdateStream)) // 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 c := &client{} // and send it to the test suite binlogplayertest.Run(t, c, &pb.EndPoint{ Host: host, PortMap: map[string]int32{ "vt": int32(port), }, }, fakeUpdateStream) }