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:
authorJames Fargher <proglottis@gmail.com>2021-11-11 04:58:21 +0300
committerJames Fargher <proglottis@gmail.com>2021-11-11 04:58:21 +0300
commit4892c8502cc45217903a8a584a7b5edb15edf86e (patch)
tree7b0f9e3c92274106cec1a1b1c7560dec51526b83
parentb18ec6ffefc833eb7ebc2f34cf8eae4d886d6f1a (diff)
parent32306bb442196d8c73a8c783495569e547513c29 (diff)
Merge branch 'ps-fix-flaky-TestLogObjectInfo' into 'master'
stats: Fix flaky TestLogObjectInfo Closes #3901 See merge request gitlab-org/gitaly!4059
-rw-r--r--internal/git/stats/git_test.go51
1 files changed, 28 insertions, 23 deletions
diff --git a/internal/git/stats/git_test.go b/internal/git/stats/git_test.go
index 96954c01c..30e688312 100644
--- a/internal/git/stats/git_test.go
+++ b/internal/git/stats/git_test.go
@@ -1,8 +1,6 @@
package stats
import (
- "bytes"
- "encoding/json"
"os"
"path/filepath"
"strings"
@@ -10,6 +8,7 @@ import (
"github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
"github.com/sirupsen/logrus"
+ "github.com/sirupsen/logrus/hooks/test"
"github.com/stretchr/testify/require"
"gitlab.com/gitlab-org/gitaly/v14/internal/git"
"gitlab.com/gitlab-org/gitaly/v14/internal/git/gittest"
@@ -28,25 +27,27 @@ func TestLogObjectInfo(t *testing.T) {
ctx, cancel := testhelper.Context()
defer cancel()
- logBuffer := &bytes.Buffer{}
- log := &logrus.Logger{Out: logBuffer, Formatter: &logrus.JSONFormatter{}, Level: logrus.InfoLevel}
- testCtx := ctxlogrus.ToContext(ctx, log.WithField("test", "logging"))
gitCmdFactory := git.NewExecCommandFactory(cfg)
- requireLog := func(msg string) map[string]interface{} {
- var out map[string]interface{}
- require.NoError(t, json.NewDecoder(strings.NewReader(msg)).Decode(&out))
- const key = "count_objects"
- require.Contains(t, out, key, "there is no any information about statistics")
- countObjects := out[key].(map[string]interface{})
- require.Contains(t, countObjects, "count")
- require.Contains(t, countObjects, "size")
- require.Contains(t, countObjects, "in-pack")
- require.Contains(t, countObjects, "packs")
- require.Contains(t, countObjects, "size-pack")
- require.Contains(t, countObjects, "garbage")
- require.Contains(t, countObjects, "size-garbage")
- return countObjects
+ requireLog := func(entries []*logrus.Entry) map[string]interface{} {
+ for _, entry := range entries {
+ if entry.Message == "git repo statistic" {
+ const key = "count_objects"
+ data := entry.Data[key]
+ require.NotNil(t, data, "there is no any information about statistics")
+ countObjects, ok := data.(map[string]interface{})
+ require.True(t, ok)
+ require.Contains(t, countObjects, "count")
+ require.Contains(t, countObjects, "size")
+ require.Contains(t, countObjects, "in-pack")
+ require.Contains(t, countObjects, "packs")
+ require.Contains(t, countObjects, "size-pack")
+ require.Contains(t, countObjects, "garbage")
+ require.Contains(t, countObjects, "size-garbage")
+ return countObjects
+ }
+ }
+ return nil
}
t.Run("shared repo with multiple alternates", func(t *testing.T) {
@@ -61,21 +62,25 @@ func TestLogObjectInfo(t *testing.T) {
// clone existing local repo with two alternates
gittest.Exec(t, cfg, "clone", "--shared", repoPath1, "--reference", repoPath1, "--reference", repoPath2, tmpDir)
- logBuffer.Reset()
+ logger, hook := test.NewNullLogger()
+ testCtx := ctxlogrus.ToContext(ctx, logger.WithField("test", "logging"))
+
LogObjectsInfo(testCtx, gitCmdFactory, &gitalypb.Repository{
StorageName: repo1.StorageName,
RelativePath: filepath.Join(strings.TrimPrefix(tmpDir, storagePath), ".git"),
})
- countObjects := requireLog(logBuffer.String())
+ countObjects := requireLog(hook.AllEntries())
require.ElementsMatch(t, []string{repoPath1 + "/objects", repoPath2 + "/objects"}, countObjects["alternate"])
})
t.Run("repo without alternates", func(t *testing.T) {
- logBuffer.Reset()
+ logger, hook := test.NewNullLogger()
+ testCtx := ctxlogrus.ToContext(ctx, logger.WithField("test", "logging"))
+
LogObjectsInfo(testCtx, gitCmdFactory, repo2)
- countObjects := requireLog(logBuffer.String())
+ countObjects := requireLog(hook.AllEntries())
require.Contains(t, countObjects, "prune-packable")
})
}