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:
authorPavlo Strokov <pstrokov@gitlab.com>2022-01-20 20:04:25 +0300
committerPavlo Strokov <pstrokov@gitlab.com>2022-02-23 11:47:18 +0300
commitbd4d523f0972c1bd46479ed8570b5e261cbdf0e4 (patch)
treedacb938c8bdf79b354a41487a6f2a488a73261ae
parenta7ee0e1e10e0532852082e8788528888bb3923b3 (diff)
repository: Extend test coverage for GarbageCollect RPC
Make sure NotFound code and specific message is returned in case requested repository doesn't exist on the disk.
-rw-r--r--internal/gitaly/service/repository/gc.go5
-rw-r--r--internal/gitaly/service/repository/gc_test.go37
2 files changed, 32 insertions, 10 deletions
diff --git a/internal/gitaly/service/repository/gc.go b/internal/gitaly/service/repository/gc.go
index b92842d06..6e9d3533f 100644
--- a/internal/gitaly/service/repository/gc.go
+++ b/internal/gitaly/service/repository/gc.go
@@ -11,6 +11,7 @@ import (
"github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
log "github.com/sirupsen/logrus"
+ gitalyerrors "gitlab.com/gitlab-org/gitaly/v14/internal/errors"
"gitlab.com/gitlab-org/gitaly/v14/internal/git"
"gitlab.com/gitlab-org/gitaly/v14/internal/git/catfile"
"gitlab.com/gitlab-org/gitaly/v14/internal/git/housekeeping"
@@ -27,6 +28,10 @@ func (s *server) GarbageCollect(ctx context.Context, in *gitalypb.GarbageCollect
"WriteBitmaps": in.GetCreateBitmap(),
}).Debug("GarbageCollect")
+ if in.GetRepository() == nil {
+ return nil, helper.ErrInvalidArgument(gitalyerrors.ErrEmptyRepository)
+ }
+
repo := s.localrepo(in.GetRepository())
if err := housekeeping.CleanupWorktrees(ctx, repo); err != nil {
diff --git a/internal/gitaly/service/repository/gc_test.go b/internal/gitaly/service/repository/gc_test.go
index d72be668b..d3c42e2c5 100644
--- a/internal/gitaly/service/repository/gc_test.go
+++ b/internal/gitaly/service/repository/gc_test.go
@@ -4,6 +4,7 @@ import (
"fmt"
"os"
"path/filepath"
+ "strings"
"testing"
"time"
@@ -18,6 +19,7 @@ import (
"gitlab.com/gitlab-org/gitaly/v14/internal/testhelper/testserver"
"gitlab.com/gitlab-org/gitaly/v14/proto/go/gitalypb"
"google.golang.org/grpc/codes"
+ "google.golang.org/grpc/status"
)
var (
@@ -356,23 +358,38 @@ func TestGarbageCollectFailure(t *testing.T) {
t.Parallel()
ctx := testhelper.Context(t)
- _, repo, _, client := setupRepositoryService(ctx, t)
+ _, repo, repoPath, client := setupRepositoryService(ctx, t)
+ storagePath := strings.TrimSuffix(repoPath, "/"+repo.RelativePath)
tests := []struct {
repo *gitalypb.Repository
- code codes.Code
+ err error
}{
- {repo: nil, code: codes.InvalidArgument},
- {repo: &gitalypb.Repository{StorageName: "foo"}, code: codes.InvalidArgument},
- {repo: &gitalypb.Repository{RelativePath: "bar"}, code: codes.InvalidArgument},
- {repo: &gitalypb.Repository{StorageName: repo.GetStorageName(), RelativePath: "bar"}, code: codes.NotFound},
+ {
+ repo: nil,
+ err: status.Error(codes.InvalidArgument, gitalyOrPraefect("empty Repository", "repo scoped: empty Repository")),
+ },
+ {
+ repo: &gitalypb.Repository{StorageName: "foo"},
+ err: status.Error(codes.InvalidArgument, gitalyOrPraefect(`GetStorageByName: no such storage: "foo"`, "repo scoped: invalid Repository")),
+ },
+ {
+ repo: &gitalypb.Repository{StorageName: repo.StorageName, RelativePath: "bar"},
+ err: status.Error(
+ codes.NotFound,
+ gitalyOrPraefect(
+ fmt.Sprintf(`GetRepoPath: not a git repository: "%s/bar"`, storagePath),
+ `mutator call: route repository mutator: get repository id: repository "default"/"bar" not found`,
+ ),
+ ),
+ },
}
- for _, test := range tests {
- t.Run(fmt.Sprintf("%v", test.repo), func(t *testing.T) {
+ for _, tc := range tests {
+ t.Run(fmt.Sprintf("%v", tc.repo), func(t *testing.T) {
//nolint:staticcheck
- _, err := client.GarbageCollect(ctx, &gitalypb.GarbageCollectRequest{Repository: test.repo})
- testhelper.RequireGrpcCode(t, err, test.code)
+ _, err := client.GarbageCollect(ctx, &gitalypb.GarbageCollectRequest{Repository: tc.repo})
+ testhelper.RequireGrpcError(t, err, tc.err)
})
}
}