diff options
author | Patrick Steinhardt <psteinhardt@gitlab.com> | 2022-10-19 14:44:45 +0300 |
---|---|---|
committer | Patrick Steinhardt <psteinhardt@gitlab.com> | 2022-10-19 17:02:33 +0300 |
commit | 3a87f62eb5228af36dcc084de789e4d1b791140c (patch) | |
tree | 30540d1ede2dfbcc676304cb26eac686ef2926b6 | |
parent | e102cd5a80e6d37835de1b218b8b965c793c6b47 (diff) |
git/stats: Refactor `LooseObjects()` to receive a repo executor
We're about to drop the almost-unused `UnpackedObjects()` function in
favor of `LooseObjects()`, which in fact is unused outside of our tests
right now. In order to easily convert existing callers we thus adapt the
function's parameters to receive a `git.RepositoryExecuter()`, which is
the same signature as for `UnpackedObjects()`.
-rw-r--r-- | internal/git/stats/profile.go | 8 | ||||
-rw-r--r-- | internal/git/stats/profile_test.go | 39 |
2 files changed, 25 insertions, 22 deletions
diff --git a/internal/git/stats/profile.go b/internal/git/stats/profile.go index 85c4015f8..f00d24c60 100644 --- a/internal/git/stats/profile.go +++ b/internal/git/stats/profile.go @@ -10,7 +10,6 @@ import ( "time" "gitlab.com/gitlab-org/gitaly/v15/internal/git" - "gitlab.com/gitlab-org/gitaly/v15/internal/git/repository" ) // HasBitmap returns whether or not the repository contains an object bitmap. @@ -61,8 +60,11 @@ func UnpackedObjects(repoPath string) (int64, error) { } // LooseObjects returns the number of loose objects that are not in a packfile. -func LooseObjects(ctx context.Context, gitCmdFactory git.CommandFactory, repository repository.GitRepo) (int64, error) { - cmd, err := gitCmdFactory.New(ctx, repository, git.SubCmd{Name: "count-objects", Flags: []git.Option{git.Flag{Name: "--verbose"}}}) +func LooseObjects(ctx context.Context, repo git.RepositoryExecutor) (int64, error) { + cmd, err := repo.Exec(ctx, git.SubCmd{ + Name: "count-objects", + Flags: []git.Option{git.Flag{Name: "--verbose"}}, + }) if err != nil { return 0, err } diff --git a/internal/git/stats/profile_test.go b/internal/git/stats/profile_test.go index 9d1c5ecf3..e0fe5dabb 100644 --- a/internal/git/stats/profile_test.go +++ b/internal/git/stats/profile_test.go @@ -11,6 +11,7 @@ import ( "github.com/stretchr/testify/require" "gitlab.com/gitlab-org/gitaly/v15/internal/git" "gitlab.com/gitlab-org/gitaly/v15/internal/git/gittest" + "gitlab.com/gitlab-org/gitaly/v15/internal/git/localrepo" "gitlab.com/gitlab-org/gitaly/v15/internal/testhelper" "gitlab.com/gitlab-org/gitaly/v15/internal/testhelper/testcfg" ) @@ -19,68 +20,68 @@ func TestRepositoryProfile(t *testing.T) { ctx := testhelper.Context(t) cfg := testcfg.Build(t) - testRepo, testRepoPath := gittest.CreateRepository(t, ctx, cfg, gittest.CreateRepositoryConfig{ + repoProto, repoPath := gittest.CreateRepository(t, ctx, cfg, gittest.CreateRepositoryConfig{ SkipCreationViaService: true, }) + repo := localrepo.NewTestRepo(t, cfg, repoProto) - hasBitmap, err := HasBitmap(testRepoPath) + hasBitmap, err := HasBitmap(repoPath) require.NoError(t, err) require.False(t, hasBitmap, "repository should not have a bitmap initially") - unpackedObjects, err := UnpackedObjects(testRepoPath) + unpackedObjects, err := UnpackedObjects(repoPath) require.NoError(t, err) require.Zero(t, unpackedObjects) - packfiles, err := GetPackfiles(testRepoPath) + packfiles, err := GetPackfiles(repoPath) require.NoError(t, err) require.Empty(t, packfiles) - packfilesCount, err := PackfilesCount(testRepoPath) + packfilesCount, err := PackfilesCount(repoPath) require.NoError(t, err) require.Zero(t, packfilesCount) blobs := 10 - blobIDs := gittest.WriteBlobs(t, cfg, testRepoPath, blobs) + blobIDs := gittest.WriteBlobs(t, cfg, repoPath, blobs) - unpackedObjects, err = UnpackedObjects(testRepoPath) + unpackedObjects, err = UnpackedObjects(repoPath) require.NoError(t, err) require.Equal(t, int64(blobs), unpackedObjects) - gitCmdFactory := gittest.NewCommandFactory(t, cfg) - looseObjects, err := LooseObjects(ctx, gitCmdFactory, testRepo) + looseObjects, err := LooseObjects(ctx, repo) require.NoError(t, err) require.Equal(t, int64(blobs), looseObjects) for _, blobID := range blobIDs { - commitID := gittest.WriteCommit(t, cfg, testRepoPath, + commitID := gittest.WriteCommit(t, cfg, repoPath, gittest.WithTreeEntries(gittest.TreeEntry{ Mode: "100644", Path: "blob", OID: git.ObjectID(blobID), }), ) - gittest.Exec(t, cfg, "-C", testRepoPath, "update-ref", "refs/heads/"+blobID, commitID.String()) + gittest.Exec(t, cfg, "-C", repoPath, "update-ref", "refs/heads/"+blobID, commitID.String()) } // write a loose object - gittest.WriteBlobs(t, cfg, testRepoPath, 1) + gittest.WriteBlobs(t, cfg, repoPath, 1) - gittest.Exec(t, cfg, "-C", testRepoPath, "repack", "-A", "-b", "-d") + gittest.Exec(t, cfg, "-C", repoPath, "repack", "-A", "-b", "-d") - unpackedObjects, err = UnpackedObjects(testRepoPath) + unpackedObjects, err = UnpackedObjects(repoPath) require.NoError(t, err) require.Zero(t, unpackedObjects) - looseObjects, err = LooseObjects(ctx, gitCmdFactory, testRepo) + looseObjects, err = LooseObjects(ctx, repo) require.NoError(t, err) require.Equal(t, int64(1), looseObjects) // write another loose object - blobID := gittest.WriteBlobs(t, cfg, testRepoPath, 1)[0] + blobID := gittest.WriteBlobs(t, cfg, repoPath, 1)[0] // due to OS semantics, ensure that the blob has a timestamp that is after the packfile theFuture := time.Now().Add(10 * time.Minute) - require.NoError(t, os.Chtimes(filepath.Join(testRepoPath, "objects", blobID[0:2], blobID[2:]), theFuture, theFuture)) + require.NoError(t, os.Chtimes(filepath.Join(repoPath, "objects", blobID[0:2], blobID[2:]), theFuture, theFuture)) - unpackedObjects, err = UnpackedObjects(testRepoPath) + unpackedObjects, err = UnpackedObjects(repoPath) require.NoError(t, err) require.Equal(t, int64(1), unpackedObjects) - looseObjects, err = LooseObjects(ctx, gitCmdFactory, testRepo) + looseObjects, err = LooseObjects(ctx, repo) require.NoError(t, err) require.Equal(t, int64(2), looseObjects) } |