mirror of https://github.com/go-gitea/gitea
Backport #26122 by @Zettat123 This PR - Fix #26093. Replace `time.Time` with `timeutil.TimeStamp` - Fix #26135. Add missing `xorm:"extends"` to `CountLFSMetaObject` for LFS meta object query - Add a unit test for LFS meta object garbage collection Co-authored-by: Zettat123 <zettat123@gmail.com>pull/26166/head
parent
65d6bdf0be
commit
a12d036a68
@ -0,0 +1,64 @@ |
||||
// Copyright 2023 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package repository |
||||
|
||||
import ( |
||||
"bytes" |
||||
"context" |
||||
"testing" |
||||
"time" |
||||
|
||||
"code.gitea.io/gitea/models/db" |
||||
git_model "code.gitea.io/gitea/models/git" |
||||
repo_model "code.gitea.io/gitea/models/repo" |
||||
"code.gitea.io/gitea/models/unittest" |
||||
"code.gitea.io/gitea/modules/lfs" |
||||
"code.gitea.io/gitea/modules/setting" |
||||
"code.gitea.io/gitea/modules/storage" |
||||
|
||||
"github.com/stretchr/testify/assert" |
||||
) |
||||
|
||||
func TestGarbageCollectLFSMetaObjects(t *testing.T) { |
||||
assert.NoError(t, unittest.PrepareTestDatabase()) |
||||
|
||||
setting.LFS.StartServer = true |
||||
err := storage.Init() |
||||
assert.NoError(t, err) |
||||
|
||||
repo, err := repo_model.GetRepositoryByOwnerAndName(db.DefaultContext, "user2", "repo1") |
||||
assert.NoError(t, err) |
||||
|
||||
// add lfs object
|
||||
lfsContent := []byte("gitea1") |
||||
lfsOid := storeObjectInRepo(t, repo.ID, &lfsContent) |
||||
|
||||
// gc
|
||||
err = GarbageCollectLFSMetaObjects(context.Background(), GarbageCollectLFSMetaObjectsOptions{ |
||||
AutoFix: true, |
||||
OlderThan: time.Now().Add(7 * 24 * time.Hour).Add(5 * 24 * time.Hour), |
||||
UpdatedLessRecentlyThan: time.Now().Add(7 * 24 * time.Hour).Add(3 * 24 * time.Hour), |
||||
}) |
||||
assert.NoError(t, err) |
||||
|
||||
// lfs meta has been deleted
|
||||
_, err = git_model.GetLFSMetaObjectByOid(db.DefaultContext, repo.ID, lfsOid) |
||||
assert.ErrorIs(t, err, git_model.ErrLFSObjectNotExist) |
||||
} |
||||
|
||||
func storeObjectInRepo(t *testing.T, repositoryID int64, content *[]byte) string { |
||||
pointer, err := lfs.GeneratePointer(bytes.NewReader(*content)) |
||||
assert.NoError(t, err) |
||||
|
||||
_, err = git_model.NewLFSMetaObject(db.DefaultContext, &git_model.LFSMetaObject{Pointer: pointer, RepositoryID: repositoryID}) |
||||
assert.NoError(t, err) |
||||
contentStore := lfs.NewContentStore() |
||||
exist, err := contentStore.Exists(pointer) |
||||
assert.NoError(t, err) |
||||
if !exist { |
||||
err := contentStore.Put(pointer, bytes.NewReader(*content)) |
||||
assert.NoError(t, err) |
||||
} |
||||
return pointer.Oid |
||||
} |
Loading…
Reference in new issue