mirror of
https://github.com/go-gitea/gitea.git
synced 2026-10-27 13:12:09 +01:00
test: speed up go tests (#39914)
- Skip race instrumentation of the transpiled SQLite engine `modernc.org/sqlite/lib` when `GOTEST_FLAGS` contains `-race`, Gitea code and the driver boundary stay instrumented. `models/issues` drops from ~10s to ~5s. - Hash OAuth2 client secrets with `bcrypt.MinCost` in tests, like user passwords already use the `dummy` hasher. `TestOAuth2` drops from ~22s to ~2s on the PostgreSQL job. - Stop the Redis locker's extension loop directly on `Close` instead of waiting for its next tick, and run the memory locker tests under `testing/synctest`. `modules/globallock` drops from ~12s to ~4s. Signed-off-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
6 files changed
+57
-26
No files matched your search
@@ -217,7 +217,7 @@ func (app *OAuth2Application) GenerateClientSecret(ctx context.Context) (string,
|
||||
// for code scanners to grab sensitive tokens.
|
||||
clientSecret := "gto_" + base32Lower.EncodeToString(rBytes)
|
||||
|
||||
hashedSecret, err := bcrypt.GenerateFromPassword([]byte(clientSecret), bcrypt.DefaultCost)
|
||||
hashedSecret, err := bcrypt.GenerateFromPassword([]byte(clientSecret), util.Iif(setting.IsInTesting, bcrypt.MinCost, bcrypt.DefaultCost))
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
@@ -9,10 +9,13 @@ import (
|
||||
|
||||
auth_model "gitea.dev/models/auth"
|
||||
"gitea.dev/models/unittest"
|
||||
"gitea.dev/modules/setting"
|
||||
"gitea.dev/modules/test"
|
||||
"gitea.dev/modules/timeutil"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
"golang.org/x/oauth2"
|
||||
)
|
||||
|
||||
@@ -147,6 +150,13 @@ func TestOAuth2ApplicationAndGrant(t *testing.T) {
|
||||
unittest.AssertExistsAndLoadBean(t, &auth_model.OAuth2Application{ID: 1, ClientSecret: app.ClientSecret})
|
||||
assert.True(t, app.ValidateClientSecret([]byte(secret)))
|
||||
assert.False(t, app.ValidateClientSecret([]byte("fewijfowejgfiowjeoifew")))
|
||||
|
||||
defer test.MockVariableValue(&setting.IsInTesting, false)()
|
||||
_, err = app.GenerateClientSecret(t.Context())
|
||||
require.NoError(t, err)
|
||||
cost, err := bcrypt.Cost([]byte(app.ClientSecret))
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, bcrypt.DefaultCost, cost)
|
||||
})
|
||||
|
||||
t.Run("CreateOAuth2Application", func(t *testing.T) {
|
||||
@@ -161,6 +171,7 @@ func TestOAuth2ApplicationAndGrant(t *testing.T) {
|
||||
func BenchmarkOAuth2Application_GenerateClientSecret(b *testing.B) {
|
||||
assert.NoError(b, unittest.PrepareTestDatabase())
|
||||
app := unittest.AssertExistsAndLoadBean(b, &auth_model.OAuth2Application{ID: 1})
|
||||
defer test.MockVariableValue(&setting.IsInTesting, false)()
|
||||
for b.Loop() {
|
||||
_, _ = app.GenerateClientSecret(b.Context())
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user