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:
authorPavlo Strokov <pstrokov@gitlab.com>2021-11-16 19:02:13 +0300
committerPavlo Strokov <pstrokov@gitlab.com>2021-11-16 19:02:13 +0300
commit099aba7980795feb759f60d0045ecaf663d51d08 (patch)
tree9758d9e3aebf733a6cd4d1d5b0cc10e058a371e3
parentbb7fa728e9206c7b2f9ede313f3db7b616af9350 (diff)
parent1fd88271f4af2d29ad60a6c56cc14f59a4922868 (diff)
Merge branch 'pks-objectpool-fix-logging-data-race' into 'master'
objectpool: Fix data race with logger Closes #3914 See merge request gitlab-org/gitaly!4080
-rw-r--r--internal/gitaly/service/objectpool/fetch_into_object_pool_test.go36
1 files changed, 22 insertions, 14 deletions
diff --git a/internal/gitaly/service/objectpool/fetch_into_object_pool_test.go b/internal/gitaly/service/objectpool/fetch_into_object_pool_test.go
index 185b1173d..42175a8fb 100644
--- a/internal/gitaly/service/objectpool/fetch_into_object_pool_test.go
+++ b/internal/gitaly/service/objectpool/fetch_into_object_pool_test.go
@@ -1,16 +1,13 @@
package objectpool
import (
- "bytes"
- "encoding/json"
"os"
"path/filepath"
- "strings"
"testing"
"time"
"github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus/ctxlogrus"
- "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/backchannel"
@@ -117,8 +114,8 @@ func TestFetchIntoObjectPool_CollectLogStatistics(t *testing.T) {
testcfg.BuildGitalyHooks(t, cfg)
locator := config.NewLocator(cfg)
- logBuffer := &bytes.Buffer{}
- logger := &logrus.Logger{Out: logBuffer, Formatter: &logrus.JSONFormatter{}, Level: logrus.InfoLevel}
+
+ logger, hook := test.NewNullLogger()
serverSocketPath := runObjectPoolServer(t, cfg, locator, logger)
conn, err := grpc.Dial(serverSocketPath, grpc.WithInsecure())
@@ -141,15 +138,26 @@ func TestFetchIntoObjectPool_CollectLogStatistics(t *testing.T) {
_, err = client.FetchIntoObjectPool(ctx, req)
require.NoError(t, err)
- msgs := strings.Split(logBuffer.String(), "\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, key, "there is no any information about statistics")
- countObjects := out[key].(map[string]interface{})
- assert.Contains(t, countObjects, "count")
+ for _, logEntry := range hook.AllEntries() {
+ if stats, ok := logEntry.Data[key]; ok {
+ require.IsType(t, map[string]interface{}{}, stats)
+
+ var keys []string
+ for key := range stats.(map[string]interface{}) {
+ keys = append(keys, key)
+ }
+
+ require.ElementsMatch(t, []string{
+ "count",
+ "garbage",
+ "in-pack",
+ "packs",
+ "prune-packable",
+ "size",
+ "size-garbage",
+ "size-pack",
+ }, keys)
return
}
}