func TestMain(m *testing.M) { // fake service service := CreateFakeServer() // listen on a random port listener, err := net.Listen("tcp", ":0") if err != nil { panic(fmt.Sprintf("Cannot listen: %v", err)) } // Create a Go Rpc server and listen on the port server := rpcplus.NewServer() server.Register(gorpcvtgateservice.New(service)) // 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) testAddress = listener.Addr().String() os.Exit(m.Run()) }
// TestGoRPCGoClient tests the go client using goRPC func TestGoRPCGoClient(t *testing.T) { service := createService() // listen on a random port listener, err := net.Listen("tcp", ":0") if err != nil { t.Fatalf("Cannot listen: %v", err) } defer listener.Close() // Create a Go Rpc server and listen on the port server := rpcplus.NewServer() server.Register(gorpcvtgateservice.New(service)) // 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) // and run the test suite testGoClient(t, "gorpc", listener.Addr().String()) }
// This test makes sure the go rpc service works func TestGoRPCVTGateConn(t *testing.T) { // fake service service := vtgateconntest.CreateFakeServer(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() server.Register(gorpcvtgateservice.New(service)) // 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 connecting to the server ctx := context.Background() client, err := dial(ctx, listener.Addr().String(), 30*time.Second) if err != nil { t.Fatalf("dial failed: %v", err) } // run the test suite vtgateconntest.TestSuite(t, client, service) // and clean up client.Close() }
// TestGoRPCVTGateConn makes sure the gorpc (BsonRPC) service works func TestGoRPCVTGateConn(t *testing.T) { // fake service service := vtgateconntest.CreateFakeServer(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() server.Register(gorpcvtgateservice.New(service)) // TODO(aaijazi): remove this flag once all VtGate Gorpc clients properly support the new behavior *vtgate.RPCErrorOnlyInReply = true // 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 connecting to the server ctx := context.Background() client, err := dial(ctx, listener.Addr().String(), 30*time.Second) if err != nil { t.Fatalf("dial failed: %v", err) } vtgateconntest.RegisterTestDialProtocol(client) // run the test suite vtgateconntest.TestSuite(t, client, service) vtgateconntest.TestErrorSuite(t, service) // and clean up client.Close() }
// TestGoRPCVTGateConn makes sure the gorpc (BsonRPC) service works func TestGoRPCVTGateConn(t *testing.T) { // fake service service := vtgateconntest.CreateFakeServer(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() server.Register(gorpcvtgateservice.New(service)) // 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 connecting to the server ctx := context.Background() client, err := dial(ctx, listener.Addr().String(), 30*time.Second) if err != nil { t.Fatalf("dial failed: %v", err) } vtgateconntest.RegisterTestDialProtocol(client) // run the test suite vtgateconntest.TestSuite(t, client, service) // TODO(sougou/alainjobart): find out why this was commmented out for grpc. // This is now failing for gorpc also. //vtgateconntest.TestErrorSuite(t, service) // and clean up client.Close() }