MM-38016 Fix racy unit test (TestService_AddTopicListener) (#18207)

* remove CreateTestLogger API 
* add missing mockServer.Shutdown
Этот коммит содержится в:
Doug Lauder
2021-08-18 13:44:04 -04:00
коммит произвёл GitHub
родитель 117cfae0bf
Коммит 2560469bc7
7 изменённых файлов: 14 добавлений и 78 удалений

Просмотреть файл

@@ -7,40 +7,17 @@ import (
"bytes"
"io"
"os"
"strings"
"sync"
"testing"
"github.com/mattermost/logr/v2"
"github.com/mattermost/logr/v2/formatters"
"github.com/mattermost/logr/v2/targets"
)
// CreateTestLogger creates a logger for unit tests, using the `TB.Log`
func CreateTestLogger(tb testing.TB, writer io.Writer, levels ...Level) *Logger {
logger, _ := NewLogger()
filter := logr.NewCustomFilter(levels...)
formatter := &formatters.Plain{}
if tb != nil {
testtarget := newTestingTarget(tb)
if err := logger.log.Logr().AddTarget(testtarget, "_testTB", filter, formatter, 1000); err != nil {
tb.Fail()
return nil
}
}
if writer != nil {
target := targets.NewWriterTarget(writer)
if err := logger.log.Logr().AddTarget(target, "_testWriter", filter, formatter, 1000); err != nil {
tb.Fail()
return nil
}
}
return logger
}
// AddWriterTarget adds a simple io.Writer target to an existing Logger.
// The `io.Writer` can be a buffer which is useful for testing.
// When adding a buffer to collect logs make sure to use `mlog.Buffer` which is
// a thread safe version of `bytes.Buffer`.
func AddWriterTarget(logger *Logger, w io.Writer, useJSON bool, levels ...Level) error {
filter := logr.NewCustomFilter(levels...)
@@ -79,45 +56,6 @@ func CreateConsoleTestLogger(useJSON bool, level Level) *Logger {
return logger
}
// testingTarget is a simple log target that writes to the testing log.
type testingTarget struct {
mux sync.Mutex
tb testing.TB
}
func newTestingTarget(tb testing.TB) *testingTarget {
return &testingTarget{
tb: tb,
}
}
// Init is called once to initialize the target.
func (tt *testingTarget) Init() error {
return nil
}
// Write outputs bytes to this file target.
func (tt *testingTarget) Write(p []byte, rec *logr.LogRec) (int, error) {
tt.mux.Lock()
defer tt.mux.Unlock()
if tt.tb != nil {
tt.tb.Helper()
tt.tb.Log(strings.TrimSpace(string(p)))
}
return len(p), nil
}
// Shutdown is called once to free/close any resources.
// Target queue is already drained when this is called.
func (tt *testingTarget) Shutdown() error {
tt.mux.Lock()
defer tt.mux.Unlock()
tt.tb = nil
return nil
}
// Buffer provides a thread-safe buffer useful for logging to memory in unit tests.
type Buffer struct {
buf bytes.Buffer