loading up the forgejo repo on tangled to test page performance
1// Copyright 2024 The Forgejo Authors. All rights reserved.
2// SPDX-License-Identifier: MIT
3
4package integration
5
6import (
7 "testing"
8
9 "forgejo.org/models/db"
10 git_model "forgejo.org/models/git"
11 "forgejo.org/models/unittest"
12 "forgejo.org/modules/structs"
13 "forgejo.org/tests"
14
15 "github.com/stretchr/testify/assert"
16 "github.com/stretchr/testify/require"
17)
18
19func TestGetLatestCommitStatusForPairs(t *testing.T) {
20 require.NoError(t, unittest.PrepareTestDatabase())
21
22 t.Run("Empty", func(t *testing.T) {
23 defer tests.PrintCurrentTest(t)()
24 pairs, err := git_model.GetLatestCommitStatusForPairs(db.DefaultContext, nil)
25 require.NoError(t, err)
26 assert.Equal(t, map[int64][]*git_model.CommitStatus{}, pairs)
27 })
28
29 t.Run("Repo 1", func(t *testing.T) {
30 defer tests.PrintCurrentTest(t)()
31 pairs, err := git_model.GetLatestCommitStatusForPairs(db.DefaultContext, []git_model.RepoSHA{{RepoID: 1, SHA: "1234123412341234123412341234123412341234"}})
32 require.NoError(t, err)
33
34 assert.Equal(t, map[int64][]*git_model.CommitStatus{
35 1: {
36 {
37 ID: 7,
38 Index: 6,
39 RepoID: 1,
40 State: structs.CommitStatusPending,
41 SHA: "1234123412341234123412341234123412341234",
42 TargetURL: "https://example.com/builds/",
43 Description: "My awesome deploy service",
44 ContextHash: "ae9547713a6665fc4261d0756904932085a41cf2",
45 Context: "deploy/awesomeness",
46 CreatorID: 2,
47 },
48 {
49 ID: 4,
50 Index: 4,
51 State: structs.CommitStatusFailure,
52 TargetURL: "https://example.com/builds/",
53 Description: "My awesome CI-service",
54 Context: "ci/awesomeness",
55 CreatorID: 2,
56 RepoID: 1,
57 SHA: "1234123412341234123412341234123412341234",
58 ContextHash: "c65f4d64a3b14a3eced0c9b36799e66e1bd5ced7",
59 },
60 {
61 ID: 3,
62 Index: 3,
63 State: structs.CommitStatusSuccess,
64 TargetURL: "https://example.com/coverage/",
65 Description: "My awesome Coverage service",
66 Context: "cov/awesomeness",
67 CreatorID: 2,
68 RepoID: 1,
69 SHA: "1234123412341234123412341234123412341234",
70 ContextHash: "3929ac7bccd3fa1bf9b38ddedb77973b1b9a8cfe",
71 },
72 },
73 }, pairs)
74 })
75 t.Run("Repo 62", func(t *testing.T) {
76 defer tests.PrintCurrentTest(t)()
77 pairs, err := git_model.GetLatestCommitStatusForPairs(db.DefaultContext, []git_model.RepoSHA{{RepoID: 62, SHA: "774f93df12d14931ea93259ae93418da4482fcc1"}})
78 require.NoError(t, err)
79
80 assert.Equal(t, map[int64][]*git_model.CommitStatus{
81 62: {
82 {
83 ID: 8,
84 Index: 2,
85 RepoID: 62,
86 State: structs.CommitStatusError,
87 TargetURL: "/user2/test_workflows/actions",
88 Description: "My awesome deploy service - v2",
89 Context: "deploy/awesomeness",
90 SHA: "774f93df12d14931ea93259ae93418da4482fcc1",
91 ContextHash: "ae9547713a6665fc4261d0756904932085a41cf2",
92 CreatorID: 2,
93 },
94 },
95 }, pairs)
96 })
97
98 t.Run("Repo 62 non-existent sha", func(t *testing.T) {
99 defer tests.PrintCurrentTest(t)()
100 pairs, err := git_model.GetLatestCommitStatusForPairs(db.DefaultContext, []git_model.RepoSHA{{RepoID: 62, SHA: "774f93df12d14931ea93259ae93418da4482fcc"}})
101 require.NoError(t, err)
102
103 assert.Equal(t, map[int64][]*git_model.CommitStatus{}, pairs)
104 })
105
106 t.Run("SHA with non-existent repo id", func(t *testing.T) {
107 defer tests.PrintCurrentTest(t)()
108 pairs, err := git_model.GetLatestCommitStatusForPairs(db.DefaultContext, []git_model.RepoSHA{{RepoID: 1, SHA: "774f93df12d14931ea93259ae93418da4482fcc1"}})
109 require.NoError(t, err)
110
111 assert.Equal(t, map[int64][]*git_model.CommitStatus{}, pairs)
112 })
113}
114
115func TestGetLatestCommitStatusForRepoCommitIDs(t *testing.T) {
116 require.NoError(t, unittest.PrepareTestDatabase())
117
118 t.Run("Empty", func(t *testing.T) {
119 defer tests.PrintCurrentTest(t)()
120 repoStatuses, err := git_model.GetLatestCommitStatusForRepoCommitIDs(db.DefaultContext, 62, nil)
121 require.NoError(t, err)
122 assert.Equal(t, map[string][]*git_model.CommitStatus{}, repoStatuses)
123 })
124
125 t.Run("Repo 1", func(t *testing.T) {
126 defer tests.PrintCurrentTest(t)()
127 repoStatuses, err := git_model.GetLatestCommitStatusForRepoCommitIDs(db.DefaultContext, 1, []string{"1234123412341234123412341234123412341234"})
128 require.NoError(t, err)
129 assert.Equal(t, map[string][]*git_model.CommitStatus{
130 "1234123412341234123412341234123412341234": {
131 {
132 ID: 3,
133 Index: 3,
134 State: structs.CommitStatusSuccess,
135 TargetURL: "https://example.com/coverage/",
136 Description: "My awesome Coverage service",
137 Context: "cov/awesomeness",
138 CreatorID: 2,
139 RepoID: 1,
140 SHA: "1234123412341234123412341234123412341234",
141 ContextHash: "3929ac7bccd3fa1bf9b38ddedb77973b1b9a8cfe",
142 },
143 {
144 ID: 4,
145 Index: 4,
146 State: structs.CommitStatusFailure,
147 TargetURL: "https://example.com/builds/",
148 Description: "My awesome CI-service",
149 Context: "ci/awesomeness",
150 CreatorID: 2,
151 RepoID: 1,
152 SHA: "1234123412341234123412341234123412341234",
153 ContextHash: "c65f4d64a3b14a3eced0c9b36799e66e1bd5ced7",
154 },
155 {
156 ID: 7,
157 Index: 6,
158 RepoID: 1,
159 State: structs.CommitStatusPending,
160 SHA: "1234123412341234123412341234123412341234",
161 TargetURL: "https://example.com/builds/",
162 Description: "My awesome deploy service",
163 ContextHash: "ae9547713a6665fc4261d0756904932085a41cf2",
164 Context: "deploy/awesomeness",
165 CreatorID: 2,
166 },
167 },
168 }, repoStatuses)
169 })
170
171 t.Run("Repo 62", func(t *testing.T) {
172 defer tests.PrintCurrentTest(t)()
173 repoStatuses, err := git_model.GetLatestCommitStatusForRepoCommitIDs(db.DefaultContext, 62, []string{"774f93df12d14931ea93259ae93418da4482fcc1"})
174 require.NoError(t, err)
175 assert.Equal(t, map[string][]*git_model.CommitStatus{
176 "774f93df12d14931ea93259ae93418da4482fcc1": {
177 {
178 ID: 8,
179 Index: 2,
180 RepoID: 62,
181 State: structs.CommitStatusError,
182 TargetURL: "/user2/test_workflows/actions",
183 Description: "My awesome deploy service - v2",
184 Context: "deploy/awesomeness",
185 SHA: "774f93df12d14931ea93259ae93418da4482fcc1",
186 ContextHash: "ae9547713a6665fc4261d0756904932085a41cf2",
187 CreatorID: 2,
188 },
189 },
190 }, repoStatuses)
191 })
192
193 t.Run("Repo 62 non-existent sha", func(t *testing.T) {
194 defer tests.PrintCurrentTest(t)()
195 repoStatuses, err := git_model.GetLatestCommitStatusForRepoCommitIDs(db.DefaultContext, 62, []string{"774f93df12d14931ea93259ae93418da4482fcc"})
196 require.NoError(t, err)
197 assert.Equal(t, map[string][]*git_model.CommitStatus{}, repoStatuses)
198 })
199
200 t.Run("non-existent repo ID", func(t *testing.T) {
201 defer tests.PrintCurrentTest(t)()
202 repoStatuses, err := git_model.GetLatestCommitStatusForRepoCommitIDs(db.DefaultContext, 1, []string{"774f93df12d14931ea93259ae93418da4482fcc"})
203 require.NoError(t, err)
204 assert.Equal(t, map[string][]*git_model.CommitStatus{}, repoStatuses)
205 })
206}