loading up the forgejo repo on tangled to test page performance
at forgejo 108 lines 3.2 kB view raw
1// Copyright 2024 The Forgejo Authors 2// SPDX-License-Identifier: MIT 3 4package integration 5 6import ( 7 "testing" 8 "time" 9 10 "forgejo.org/models/db" 11 issues_model "forgejo.org/models/issues" 12 repo_model "forgejo.org/models/repo" 13 "forgejo.org/models/unittest" 14 user_model "forgejo.org/models/user" 15 "forgejo.org/modules/git" 16 "forgejo.org/modules/log" 17 repo_module "forgejo.org/modules/repository" 18 "forgejo.org/modules/test" 19 "forgejo.org/modules/timeutil" 20 pull_service "forgejo.org/services/pull" 21 repo_service "forgejo.org/services/repository" 22 "forgejo.org/tests" 23 24 "github.com/stretchr/testify/assert" 25 "github.com/stretchr/testify/require" 26) 27 28func TestPullRequestSynchronized(t *testing.T) { 29 defer tests.PrepareTestEnv(t)() 30 31 // unmerged pull request of user2/repo1 from branch2 to master 32 pull := unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{ID: 2}) 33 // tip of tests/gitea-repositories-meta/user2/repo1 branch2 34 pull.HeadCommitID = "985f0301dba5e7b34be866819cd15ad3d8f508ee" 35 pull.LoadIssue(db.DefaultContext) 36 pull.Issue.Created = timeutil.TimeStampNanoNow() 37 issues_model.UpdateIssueCols(db.DefaultContext, pull.Issue, "created") 38 39 require.Equal(t, pull.HeadRepoID, pull.BaseRepoID) 40 repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: pull.HeadRepoID}) 41 owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) 42 43 for _, testCase := range []struct { 44 name string 45 timeNano int64 46 expected bool 47 }{ 48 { 49 name: "AddTestPullRequestTask process PR", 50 timeNano: int64(pull.Issue.Created), 51 expected: true, 52 }, 53 { 54 name: "AddTestPullRequestTask skip PR", 55 timeNano: 0, 56 expected: false, 57 }, 58 } { 59 t.Run(testCase.name, func(t *testing.T) { 60 logChecker, cleanup := test.NewLogChecker(log.DEFAULT, log.TRACE) 61 logChecker.Filter("Updating PR").StopMark("TestPullRequest ") 62 defer cleanup() 63 64 opt := &repo_module.PushUpdateOptions{ 65 PusherID: owner.ID, 66 PusherName: owner.Name, 67 RepoUserName: owner.Name, 68 RepoName: repo.Name, 69 RefFullName: git.RefName("refs/heads/branch2"), 70 OldCommitID: pull.HeadCommitID, 71 NewCommitID: pull.HeadCommitID, 72 TimeNano: testCase.timeNano, 73 } 74 require.NoError(t, repo_service.PushUpdate(opt)) 75 logFiltered, logStopped := logChecker.Check(5 * time.Second) 76 assert.True(t, logStopped) 77 assert.Equal(t, testCase.expected, logFiltered[0]) 78 }) 79 } 80 81 for _, testCase := range []struct { 82 name string 83 olderThan int64 84 expected bool 85 }{ 86 { 87 name: "TestPullRequest process PR", 88 olderThan: int64(pull.Issue.Created), 89 expected: true, 90 }, 91 { 92 name: "TestPullRequest skip PR", 93 olderThan: int64(pull.Issue.Created) - 1, 94 expected: false, 95 }, 96 } { 97 t.Run(testCase.name, func(t *testing.T) { 98 logChecker, cleanup := test.NewLogChecker(log.DEFAULT, log.TRACE) 99 logChecker.Filter("Updating PR").StopMark("TestPullRequest ") 100 defer cleanup() 101 102 pull_service.TestPullRequest(t.Context(), owner, repo.ID, testCase.olderThan, "branch2", true, pull.HeadCommitID, pull.HeadCommitID) 103 logFiltered, logStopped := logChecker.Check(5 * time.Second) 104 assert.True(t, logStopped) 105 assert.Equal(t, testCase.expected, logFiltered[0]) 106 }) 107 } 108}