Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Cai <jcai@gitlab.com>2021-11-19 19:31:21 +0300
committerJohn Cai <jcai@gitlab.com>2021-11-23 22:29:38 +0300
commite683147d511a8d1ab4897d34a8a462480812e164 (patch)
treec9342b4fa3e1dee7c4ea63fc0c464b6833bbf246
parent5eb94b765d5a3f4a98697929de2efc551c1a4f26 (diff)
repository: use log hooks in tests
For thread safety, use logger hooks that are part of the logrus library instead of using a buffer as the writer.
-rw-r--r--internal/gitaly/service/repository/gc_test.go9
-rw-r--r--internal/gitaly/service/repository/repack_test.go37
2 files changed, 18 insertions, 28 deletions
diff --git a/internal/gitaly/service/repository/gc_test.go b/internal/gitaly/service/repository/gc_test.go
index 35727167c..c11e51594 100644
--- a/internal/gitaly/service/repository/gc_test.go
+++ b/internal/gitaly/service/repository/gc_test.go
@@ -1,14 +1,13 @@
package repository
import (
- "bytes"
"fmt"
"os"
"path/filepath"
"testing"
"time"
- "github.com/sirupsen/logrus"
+ "github.com/sirupsen/logrus/hooks/test"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"gitlab.com/gitlab-org/gitaly/v14/internal/git"
@@ -141,15 +140,13 @@ func TestGarbageCollectLogStatistics(t *testing.T) {
ctx, cancel := testhelper.Context()
defer cancel()
- logBuffer := &bytes.Buffer{}
- logger := &logrus.Logger{Out: logBuffer, Formatter: &logrus.JSONFormatter{}, Level: logrus.InfoLevel}
-
+ logger, hook := test.NewNullLogger()
_, repo, _, client := setupRepositoryService(t, testserver.WithLogger(logger))
_, err := client.GarbageCollect(ctx, &gitalypb.GarbageCollectRequest{Repository: repo})
require.NoError(t, err)
- mustCountObjectLog(t, logBuffer.String())
+ mustCountObjectLog(t, hook.AllEntries()...)
}
func TestGarbageCollectDeletesRefsLocks(t *testing.T) {
diff --git a/internal/gitaly/service/repository/repack_test.go b/internal/gitaly/service/repository/repack_test.go
index 5a9a1b13d..4111bb064 100644
--- a/internal/gitaly/service/repository/repack_test.go
+++ b/internal/gitaly/service/repository/repack_test.go
@@ -1,15 +1,13 @@
package repository
import (
- "bytes"
- "encoding/json"
"os/exec"
"path/filepath"
- "strings"
"testing"
"time"
"github.com/sirupsen/logrus"
+ "github.com/sirupsen/logrus/hooks/test"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"gitlab.com/gitlab-org/gitaly/v14/internal/git/gittest"
@@ -51,15 +49,13 @@ func TestRepackIncrementalCollectLogStatistics(t *testing.T) {
ctx, cancel := testhelper.Context()
defer cancel()
- logBuffer := &bytes.Buffer{}
- logger := &logrus.Logger{Out: logBuffer, Formatter: &logrus.JSONFormatter{}, Level: logrus.InfoLevel}
-
+ logger, hook := test.NewNullLogger()
_, repo, _, client := setupRepositoryService(t, testserver.WithLogger(logger))
_, err := client.RepackIncremental(ctx, &gitalypb.RepackIncrementalRequest{Repository: repo})
assert.NoError(t, err)
- mustCountObjectLog(t, logBuffer.String())
+ mustCountObjectLog(t, hook.AllEntries()...)
}
func TestRepackLocal(t *testing.T) {
@@ -178,31 +174,28 @@ func TestRepackFullCollectLogStatistics(t *testing.T) {
ctx, cancel := testhelper.Context()
defer cancel()
- logBuffer := &bytes.Buffer{}
- logger := &logrus.Logger{Out: logBuffer, Formatter: &logrus.JSONFormatter{}, Level: logrus.InfoLevel}
-
+ logger, hook := test.NewNullLogger()
_, repo, _, client := setupRepositoryService(t, testserver.WithLogger(logger))
_, err := client.RepackFull(ctx, &gitalypb.RepackFullRequest{Repository: repo})
require.NoError(t, err)
- mustCountObjectLog(t, logBuffer.String())
+ mustCountObjectLog(t, hook.AllEntries()...)
}
-func mustCountObjectLog(t testing.TB, logData string) {
+func mustCountObjectLog(t testing.TB, entries ...*logrus.Entry) {
t.Helper()
- msgs := strings.Split(logData, "\n")
const key = "count_objects"
- for _, msg := range msgs {
- if strings.Contains(msg, key) {
- var out map[string]interface{}
- require.NoError(t, json.NewDecoder(strings.NewReader(msg)).Decode(&out))
- require.Contains(t, out, "grpc.request.glProjectPath")
- require.Contains(t, out, "grpc.request.glRepository")
- require.Contains(t, out, key, "there is no any information about statistics")
- countObjects := out[key].(map[string]interface{})
- require.Contains(t, countObjects, "count")
+ for _, entry := range entries {
+ if entry.Message == "git repo statistic" {
+ require.Contains(t, entry.Data, "grpc.request.glProjectPath")
+ require.Contains(t, entry.Data, "grpc.request.glRepository")
+ require.Contains(t, entry.Data, key, "statistics not found")
+
+ objectStats, ok := entry.Data[key].(map[string]interface{})
+ require.True(t, ok, "expected count_objects to be a map")
+ require.Contains(t, objectStats, "count")
return
}
}