loading up the forgejo repo on tangled to test page performance
at forgejo 103 lines 3.1 kB view raw
1// Copyright 2019 The Gitea Authors. All rights reserved. 2// SPDX-License-Identifier: MIT 3 4package integration 5 6import ( 7 "testing" 8 9 "forgejo.org/models/db" 10 repo_model "forgejo.org/models/repo" 11 "forgejo.org/models/unittest" 12 user_model "forgejo.org/models/user" 13 "forgejo.org/modules/git" 14 "forgejo.org/modules/gitrepo" 15 "forgejo.org/modules/migration" 16 mirror_service "forgejo.org/services/mirror" 17 release_service "forgejo.org/services/release" 18 repo_service "forgejo.org/services/repository" 19 "forgejo.org/tests" 20 21 "github.com/stretchr/testify/assert" 22 "github.com/stretchr/testify/require" 23) 24 25func TestMirrorPull(t *testing.T) { 26 defer tests.PrepareTestEnv(t)() 27 28 user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}) 29 repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) 30 repoPath := repo_model.RepoPath(user.Name, repo.Name) 31 32 opts := migration.MigrateOptions{ 33 RepoName: "test_mirror", 34 Description: "Test mirror", 35 Private: false, 36 Mirror: true, 37 CloneAddr: repoPath, 38 Wiki: true, 39 Releases: false, 40 } 41 42 mirrorRepo, err := repo_service.CreateRepositoryDirectly(db.DefaultContext, user, user, repo_service.CreateRepoOptions{ 43 Name: opts.RepoName, 44 Description: opts.Description, 45 IsPrivate: opts.Private, 46 IsMirror: opts.Mirror, 47 Status: repo_model.RepositoryBeingMigrated, 48 }) 49 require.NoError(t, err) 50 assert.True(t, mirrorRepo.IsMirror, "expected pull-mirror repo to be marked as a mirror immediately after its creation") 51 52 ctx := t.Context() 53 54 mirror, err := repo_service.MigrateRepositoryGitData(ctx, user, mirrorRepo, opts, nil) 55 require.NoError(t, err) 56 57 gitRepo, err := gitrepo.OpenRepository(git.DefaultContext, repo) 58 require.NoError(t, err) 59 defer gitRepo.Close() 60 61 findOptions := repo_model.FindReleasesOptions{ 62 IncludeDrafts: true, 63 IncludeTags: true, 64 RepoID: mirror.ID, 65 } 66 initCount, err := db.Count[repo_model.Release](db.DefaultContext, findOptions) 67 require.NoError(t, err) 68 69 require.NoError(t, release_service.CreateRelease(gitRepo, &repo_model.Release{ 70 RepoID: repo.ID, 71 Repo: repo, 72 PublisherID: user.ID, 73 Publisher: user, 74 TagName: "v0.2", 75 Target: "master", 76 Title: "v0.2 is released", 77 Note: "v0.2 is released", 78 IsDraft: false, 79 IsPrerelease: false, 80 IsTag: true, 81 }, "", []*release_service.AttachmentChange{})) 82 83 _, err = repo_model.GetMirrorByRepoID(ctx, mirror.ID) 84 require.NoError(t, err) 85 86 ok := mirror_service.SyncPullMirror(ctx, mirror.ID) 87 assert.True(t, ok) 88 89 count, err := db.Count[repo_model.Release](db.DefaultContext, findOptions) 90 require.NoError(t, err) 91 assert.Equal(t, initCount+1, count) 92 93 release, err := repo_model.GetRelease(db.DefaultContext, repo.ID, "v0.2") 94 require.NoError(t, err) 95 require.NoError(t, release_service.DeleteReleaseByID(ctx, repo, release, user, true)) 96 97 ok = mirror_service.SyncPullMirror(ctx, mirror.ID) 98 assert.True(t, ok) 99 100 count, err = db.Count[repo_model.Release](db.DefaultContext, findOptions) 101 require.NoError(t, err) 102 assert.Equal(t, initCount, count) 103}