// TestGRPCVTGateConn makes sure the grpc service works func TestGRPCVTGateConn(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 gRPC server and listen on the port server := grpc.NewServer() grpcvtgateservice.RegisterForTest(server, service) go server.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)) // 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() }
// TestBsonP3VTGateConn makes sure the BsonP3RPC service works func TestBsonP3VTGateConn(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(bsonp3vtgateservice.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) vtgateconntest.TestErrorSuite(t, service) // and clean up client.Close() }