// This test makes sure the go rpc service works func testGRPCVTGateConn(t *testing.T, rpcOnlyInReply bool) { // 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) *vtgate.RPCErrorOnlyInReply = rpcOnlyInReply 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) } // run the test suite vtgateconntest.TestSuite(t, client, service) // and clean up client.Close() }
// TestMain tests the Vitess Go SQL driver. // // Note that the queries used in the test are not valid SQL queries and don't // have to be. The main point here is to test the interactions against a // vtgate implementation (here: fakeVTGateService from fakeserver_test.go). func TestMain(m *testing.M) { 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 gRPC server and listen on the port. server := grpc.NewServer() grpcvtgateservice.RegisterForTest(server, service) go server.Serve(listener) testAddress = listener.Addr().String() os.Exit(m.Run()) }
// TestGRPCGoClient tests the go client using gRPC func TestGRPCGoClient(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 gRPC server and listen on the port server := grpc.NewServer() grpcvtgateservice.RegisterForTest(server, service) go server.Serve(listener) // and run the test suite testGoClient(t, "grpc", listener.Addr().String()) }