Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Steinhardt <psteinhardt@gitlab.com>2022-11-09 19:11:02 +0300
committerPatrick Steinhardt <psteinhardt@gitlab.com>2022-11-14 11:07:31 +0300
commitb91027c62a56a34fc1eca30c927e8dd76c88df9b (patch)
treec89792bba10b19002f922506c2d8a1e0b5ea1797
parent6bacc1d4219a4cba6aeced55f123fcfe76340b03 (diff)
praefect: Refactor server tests to use `grpc_testing` gRPC service
The tests for our Praefect server use a custom gRPC service definition to assert its behaviour. This is not necessary though as we can simply use a mock repository service. Refactor the test to remove one more dependency on the mock service.
-rw-r--r--internal/praefect/server_test.go48
-rw-r--r--internal/praefect/testhelper_test.go5
2 files changed, 28 insertions, 25 deletions
diff --git a/internal/praefect/server_test.go b/internal/praefect/server_test.go
index 5a137b220..6d5dc81a5 100644
--- a/internal/praefect/server_test.go
+++ b/internal/praefect/server_test.go
@@ -30,7 +30,6 @@ import (
"gitlab.com/gitlab-org/gitaly/v15/internal/praefect/config"
"gitlab.com/gitlab-org/gitaly/v15/internal/praefect/datastore"
"gitlab.com/gitlab-org/gitaly/v15/internal/praefect/grpc-proxy/proxy"
- "gitlab.com/gitlab-org/gitaly/v15/internal/praefect/mock"
"gitlab.com/gitlab-org/gitaly/v15/internal/praefect/nodes"
"gitlab.com/gitlab-org/gitaly/v15/internal/praefect/nodes/tracker"
"gitlab.com/gitlab-org/gitaly/v15/internal/praefect/protoregistry"
@@ -53,7 +52,6 @@ import (
"google.golang.org/grpc/metadata"
"google.golang.org/grpc/status"
"google.golang.org/protobuf/proto"
- "google.golang.org/protobuf/types/known/emptypb"
)
func TestNewBackchannelServerFactory(t *testing.T) {
@@ -895,34 +893,34 @@ func TestErrorThreshold(t *testing.T) {
t.Parallel()
backendToken := ""
backend, cleanup := newMockDownstream(t, backendToken, func(srv *grpc.Server) {
- service := &mockSvc{
- repoMutatorUnary: func(ctx context.Context, req *mock.RepoRequest) (*emptypb.Empty, error) {
+ service := &mockRepositoryService{
+ ReplicateRepositoryFunc: func(ctx context.Context, req *gitalypb.ReplicateRepositoryRequest) (*gitalypb.ReplicateRepositoryResponse, error) {
md, ok := metadata.FromIncomingContext(ctx)
if !ok {
- return &emptypb.Empty{}, errors.New("couldn't read metadata")
+ return nil, errors.New("couldn't read metadata")
}
if md.Get("bad-header")[0] == "true" {
- return &emptypb.Empty{}, helper.ErrInternalf("something went wrong")
+ return nil, helper.ErrInternalf("something went wrong")
}
- return &emptypb.Empty{}, nil
+ return &gitalypb.ReplicateRepositoryResponse{}, nil
},
- repoAccessorUnary: func(ctx context.Context, req *mock.RepoRequest) (*emptypb.Empty, error) {
+ RepositoryExistsFunc: func(ctx context.Context, req *gitalypb.RepositoryExistsRequest) (*gitalypb.RepositoryExistsResponse, error) {
md, ok := metadata.FromIncomingContext(ctx)
if !ok {
- return &emptypb.Empty{}, errors.New("couldn't read metadata")
+ return nil, errors.New("couldn't read metadata")
}
if md.Get("bad-header")[0] == "true" {
- return &emptypb.Empty{}, helper.ErrInternalf("something went wrong")
+ return nil, helper.ErrInternalf("something went wrong")
}
- return &emptypb.Empty{}, nil
+ return &gitalypb.RepositoryExistsResponse{}, nil
},
}
- mock.RegisterSimpleServiceServer(srv, service)
+ gitalypb.RegisterRepositoryServiceServer(srv, service)
})
defer cleanup()
@@ -964,9 +962,6 @@ func TestErrorThreshold(t *testing.T) {
},
}
- registry, err := protoregistry.NewFromPaths("praefect/mock/mock.proto")
- require.NoError(t, err)
-
for _, tc := range testCases {
t.Run(tc.desc, func(t *testing.T) {
readThreshold := uint32(5000)
@@ -980,7 +975,7 @@ func TestErrorThreshold(t *testing.T) {
require.NoError(t, err)
rs := datastore.MockRepositoryStore{}
- nodeMgr, err := nodes.NewManager(entry, conf, nil, rs, promtest.NewMockHistogramVec(), registry, errorTracker, nil, nil)
+ nodeMgr, err := nodes.NewManager(entry, conf, nil, rs, promtest.NewMockHistogramVec(), protoregistry.GitalyProtoPreregistered, errorTracker, nil, nil)
require.NoError(t, err)
defer nodeMgr.Stop()
@@ -988,9 +983,9 @@ func TestErrorThreshold(t *testing.T) {
queue,
rs,
NewNodeManagerRouter(nodeMgr, rs),
- nil,
+ transactions.NewManager(conf),
conf,
- registry,
+ protoregistry.GitalyProtoPreregistered,
)
server := grpc.NewServer(
@@ -1008,7 +1003,7 @@ func TestErrorThreshold(t *testing.T) {
conn, err := dial("unix://"+socket, []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())})
require.NoError(t, err)
defer testhelper.MustClose(t, conn)
- cli := mock.NewSimpleServiceClient(conn)
+ cli := gitalypb.NewRepositoryServiceClient(conn)
_, repo, _ := testcfg.BuildWithRepo(t)
@@ -1026,16 +1021,19 @@ func TestErrorThreshold(t *testing.T) {
for i := 0; i < 5; i++ {
ctx := metadata.AppendToOutgoingContext(ctx, "bad-header", "true")
- handler := cli.RepoMutatorUnary
- if tc.accessor {
- handler = cli.RepoAccessorUnary
- }
-
healthy, err := node.CheckHealth(ctx)
require.NoError(t, err)
require.True(t, healthy)
- _, err = handler(ctx, &mock.RepoRequest{Repo: repo})
+ if tc.accessor {
+ _, err = cli.RepositoryExists(ctx, &gitalypb.RepositoryExistsRequest{
+ Repository: repo,
+ })
+ } else {
+ _, err = cli.ReplicateRepository(ctx, &gitalypb.ReplicateRepositoryRequest{
+ Repository: repo,
+ })
+ }
testhelper.RequireGrpcError(t, status.Error(codes.Internal, "something went wrong"), err)
}
diff --git a/internal/praefect/testhelper_test.go b/internal/praefect/testhelper_test.go
index def657a11..efb246490 100644
--- a/internal/praefect/testhelper_test.go
+++ b/internal/praefect/testhelper_test.go
@@ -14,9 +14,14 @@ func TestMain(m *testing.M) {
type mockRepositoryService struct {
gitalypb.UnimplementedRepositoryServiceServer
+ RepositoryExistsFunc func(context.Context, *gitalypb.RepositoryExistsRequest) (*gitalypb.RepositoryExistsResponse, error)
ReplicateRepositoryFunc func(context.Context, *gitalypb.ReplicateRepositoryRequest) (*gitalypb.ReplicateRepositoryResponse, error)
}
+func (m *mockRepositoryService) RepositoryExists(ctx context.Context, r *gitalypb.RepositoryExistsRequest) (*gitalypb.RepositoryExistsResponse, error) {
+ return m.RepositoryExistsFunc(ctx, r)
+}
+
func (m *mockRepositoryService) ReplicateRepository(ctx context.Context, r *gitalypb.ReplicateRepositoryRequest) (*gitalypb.ReplicateRepositoryResponse, error) {
return m.ReplicateRepositoryFunc(ctx, r)
}