diff options
author | John Cai <jcai@gitlab.com> | 2021-11-19 19:31:21 +0300 |
---|---|---|
committer | John Cai <jcai@gitlab.com> | 2021-11-23 22:29:38 +0300 |
commit | e683147d511a8d1ab4897d34a8a462480812e164 (patch) | |
tree | c9342b4fa3e1dee7c4ea63fc0c464b6833bbf246 | |
parent | 5eb94b765d5a3f4a98697929de2efc551c1a4f26 (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.go | 9 | ||||
-rw-r--r-- | internal/gitaly/service/repository/repack_test.go | 37 |
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 } } |