fix data race in tests

master
kevin 4 years ago
parent 8115a0932e
commit 3733b06f1b

@ -9,6 +9,7 @@ import (
"os" "os"
"runtime" "runtime"
"strings" "strings"
"sync"
"sync/atomic" "sync/atomic"
"testing" "testing"
"time" "time"
@ -22,10 +23,13 @@ var (
) )
type mockWriter struct { type mockWriter struct {
lock sync.Mutex
builder strings.Builder builder strings.Builder
} }
func (mw *mockWriter) Write(data []byte) (int, error) { func (mw *mockWriter) Write(data []byte) (int, error) {
mw.lock.Lock()
defer mw.lock.Unlock()
return mw.builder.Write(data) return mw.builder.Write(data)
} }
@ -33,12 +37,22 @@ func (mw *mockWriter) Close() error {
return nil return nil
} }
func (mw *mockWriter) Contains(text string) bool {
mw.lock.Lock()
defer mw.lock.Unlock()
return strings.Contains(mw.builder.String(), text)
}
func (mw *mockWriter) Reset() { func (mw *mockWriter) Reset() {
mw.lock.Lock()
defer mw.lock.Unlock()
mw.builder.Reset() mw.builder.Reset()
} }
func (mw *mockWriter) Contains(text string) bool { func (mw *mockWriter) String() string {
return strings.Contains(mw.builder.String(), text) mw.lock.Lock()
defer mw.lock.Unlock()
return mw.builder.String()
} }
func TestFileLineFileMode(t *testing.T) { func TestFileLineFileMode(t *testing.T) {

@ -19,7 +19,7 @@ const (
var mock tracespec.Trace = new(mockTrace) var mock tracespec.Trace = new(mockTrace)
func TestTraceLog(t *testing.T) { func TestTraceLog(t *testing.T) {
var buf strings.Builder var buf mockWriter
ctx := context.WithValue(context.Background(), tracespec.TracingKey, mock) ctx := context.WithValue(context.Background(), tracespec.TracingKey, mock)
WithContext(ctx).(*traceLogger).write(&buf, levelInfo, testlog) WithContext(ctx).(*traceLogger).write(&buf, levelInfo, testlog)
assert.True(t, strings.Contains(buf.String(), mockTraceId)) assert.True(t, strings.Contains(buf.String(), mockTraceId))
@ -27,7 +27,7 @@ func TestTraceLog(t *testing.T) {
} }
func TestTraceError(t *testing.T) { func TestTraceError(t *testing.T) {
var buf strings.Builder var buf mockWriter
ctx := context.WithValue(context.Background(), tracespec.TracingKey, mock) ctx := context.WithValue(context.Background(), tracespec.TracingKey, mock)
l := WithContext(ctx).(*traceLogger) l := WithContext(ctx).(*traceLogger)
SetLevel(InfoLevel) SetLevel(InfoLevel)
@ -42,7 +42,7 @@ func TestTraceError(t *testing.T) {
} }
func TestTraceInfo(t *testing.T) { func TestTraceInfo(t *testing.T) {
var buf strings.Builder var buf mockWriter
ctx := context.WithValue(context.Background(), tracespec.TracingKey, mock) ctx := context.WithValue(context.Background(), tracespec.TracingKey, mock)
l := WithContext(ctx).(*traceLogger) l := WithContext(ctx).(*traceLogger)
SetLevel(InfoLevel) SetLevel(InfoLevel)
@ -57,7 +57,7 @@ func TestTraceInfo(t *testing.T) {
} }
func TestTraceSlow(t *testing.T) { func TestTraceSlow(t *testing.T) {
var buf strings.Builder var buf mockWriter
ctx := context.WithValue(context.Background(), tracespec.TracingKey, mock) ctx := context.WithValue(context.Background(), tracespec.TracingKey, mock)
l := WithContext(ctx).(*traceLogger) l := WithContext(ctx).(*traceLogger)
SetLevel(InfoLevel) SetLevel(InfoLevel)
@ -72,7 +72,7 @@ func TestTraceSlow(t *testing.T) {
} }
func TestTraceWithoutContext(t *testing.T) { func TestTraceWithoutContext(t *testing.T) {
var buf strings.Builder var buf mockWriter
l := WithContext(context.Background()).(*traceLogger) l := WithContext(context.Background()).(*traceLogger)
SetLevel(InfoLevel) SetLevel(InfoLevel)
infoLog = newLogWriter(log.New(&buf, "", flags)) infoLog = newLogWriter(log.New(&buf, "", flags))

Loading…
Cancel
Save