fix racy ping test (#17400)
- ensure no logging is attempted after unit test is completed by explicitly shutting down the mock server, and ensuring no reference to testing.T is held.
Этот коммит содержится в:
@@ -6,6 +6,7 @@ package remotecluster
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"go.uber.org/zap/zapcore"
|
"go.uber.org/zap/zapcore"
|
||||||
@@ -51,34 +52,69 @@ func (ms *mockServer) GetStore() store.Store {
|
|||||||
storeMock.On("RemoteCluster").Return(remoteClusterStoreMock)
|
storeMock.On("RemoteCluster").Return(remoteClusterStoreMock)
|
||||||
return storeMock
|
return storeMock
|
||||||
}
|
}
|
||||||
|
func (ms *mockServer) Shutdown() { ms.logger.Shutdown() }
|
||||||
|
|
||||||
type mockLogger struct {
|
type mockLogger struct {
|
||||||
t *testing.T
|
t *testing.T
|
||||||
|
mux sync.Mutex
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ml *mockLogger) IsLevelEnabled(level mlog.LogLevel) bool {
|
func (ml *mockLogger) IsLevelEnabled(level mlog.LogLevel) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
func (ml *mockLogger) Debug(s string, flds ...mlog.Field) {
|
func (ml *mockLogger) Debug(s string, flds ...mlog.Field) {
|
||||||
ml.t.Log("debug", s, fieldsToStrings(flds))
|
ml.mux.Lock()
|
||||||
|
defer ml.mux.Unlock()
|
||||||
|
if ml.t != nil {
|
||||||
|
ml.t.Log("debug", s, fieldsToStrings(flds))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
func (ml *mockLogger) Info(s string, flds ...mlog.Field) {
|
func (ml *mockLogger) Info(s string, flds ...mlog.Field) {
|
||||||
ml.t.Log("info", s, fieldsToStrings(flds))
|
ml.mux.Lock()
|
||||||
|
defer ml.mux.Unlock()
|
||||||
|
if ml.t != nil {
|
||||||
|
ml.t.Log("info", s, fieldsToStrings(flds))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
func (ml *mockLogger) Warn(s string, flds ...mlog.Field) {
|
func (ml *mockLogger) Warn(s string, flds ...mlog.Field) {
|
||||||
ml.t.Log("warn", s, fieldsToStrings(flds))
|
ml.mux.Lock()
|
||||||
|
defer ml.mux.Unlock()
|
||||||
|
if ml.t != nil {
|
||||||
|
ml.t.Log("warn", s, fieldsToStrings(flds))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
func (ml *mockLogger) Error(s string, flds ...mlog.Field) {
|
func (ml *mockLogger) Error(s string, flds ...mlog.Field) {
|
||||||
ml.t.Log("error", s, fieldsToStrings(flds))
|
ml.mux.Lock()
|
||||||
|
defer ml.mux.Unlock()
|
||||||
|
if ml.t != nil {
|
||||||
|
ml.t.Log("error", s, fieldsToStrings(flds))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
func (ml *mockLogger) Critical(s string, flds ...mlog.Field) {
|
func (ml *mockLogger) Critical(s string, flds ...mlog.Field) {
|
||||||
ml.t.Log("crit", s, fieldsToStrings(flds))
|
ml.mux.Lock()
|
||||||
|
defer ml.mux.Unlock()
|
||||||
|
if ml.t != nil {
|
||||||
|
ml.t.Log("crit", s, fieldsToStrings(flds))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
func (ml *mockLogger) Log(level mlog.LogLevel, s string, flds ...mlog.Field) {
|
func (ml *mockLogger) Log(level mlog.LogLevel, s string, flds ...mlog.Field) {
|
||||||
ml.t.Log(level.Name, s, fieldsToStrings(flds))
|
ml.mux.Lock()
|
||||||
|
defer ml.mux.Unlock()
|
||||||
|
if ml.t != nil {
|
||||||
|
ml.t.Log(level.Name, s, fieldsToStrings(flds))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
func (ml *mockLogger) LogM(levels []mlog.LogLevel, s string, flds ...mlog.Field) {
|
func (ml *mockLogger) LogM(levels []mlog.LogLevel, s string, flds ...mlog.Field) {
|
||||||
ml.t.Log(levelsToString(levels), s, fieldsToStrings(flds))
|
ml.mux.Lock()
|
||||||
|
defer ml.mux.Unlock()
|
||||||
|
if ml.t != nil {
|
||||||
|
ml.t.Log(levelsToString(levels), s, fieldsToStrings(flds))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
func (ml *mockLogger) Shutdown() {
|
||||||
|
ml.mux.Lock()
|
||||||
|
defer ml.mux.Unlock()
|
||||||
|
ml.t = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func levelsToString(levels []mlog.LogLevel) string {
|
func levelsToString(levels []mlog.LogLevel) string {
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestPing(t *testing.T) {
|
func TestPing(t *testing.T) {
|
||||||
t.Skip("MM-34785")
|
|
||||||
disablePing = false
|
disablePing = false
|
||||||
|
|
||||||
t.Run("No error", func(t *testing.T) {
|
t.Run("No error", func(t *testing.T) {
|
||||||
@@ -65,6 +64,8 @@ func TestPing(t *testing.T) {
|
|||||||
defer ts.Close()
|
defer ts.Close()
|
||||||
|
|
||||||
mockServer := newMockServer(t, makeRemoteClusters(NumRemotes, ts.URL))
|
mockServer := newMockServer(t, makeRemoteClusters(NumRemotes, ts.URL))
|
||||||
|
defer mockServer.Shutdown()
|
||||||
|
|
||||||
service, err := NewRemoteClusterService(mockServer)
|
service, err := NewRemoteClusterService(mockServer)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
@@ -111,6 +112,8 @@ func TestPing(t *testing.T) {
|
|||||||
defer ts.Close()
|
defer ts.Close()
|
||||||
|
|
||||||
mockServer := newMockServer(t, makeRemoteClusters(NumRemotes, ts.URL))
|
mockServer := newMockServer(t, makeRemoteClusters(NumRemotes, ts.URL))
|
||||||
|
defer mockServer.Shutdown()
|
||||||
|
|
||||||
service, err := NewRemoteClusterService(mockServer)
|
service, err := NewRemoteClusterService(mockServer)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
|||||||
@@ -82,6 +82,8 @@ func TestBroadcastMsg(t *testing.T) {
|
|||||||
defer ts.Close()
|
defer ts.Close()
|
||||||
|
|
||||||
mockServer := newMockServer(t, makeRemoteClusters(NumRemotes, ts.URL))
|
mockServer := newMockServer(t, makeRemoteClusters(NumRemotes, ts.URL))
|
||||||
|
defer mockServer.Shutdown()
|
||||||
|
|
||||||
service, err := NewRemoteClusterService(mockServer)
|
service, err := NewRemoteClusterService(mockServer)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
@@ -137,6 +139,8 @@ func TestBroadcastMsg(t *testing.T) {
|
|||||||
defer ts.Close()
|
defer ts.Close()
|
||||||
|
|
||||||
mockServer := newMockServer(t, makeRemoteClusters(NumRemotes, ts.URL))
|
mockServer := newMockServer(t, makeRemoteClusters(NumRemotes, ts.URL))
|
||||||
|
defer mockServer.Shutdown()
|
||||||
|
|
||||||
service, err := NewRemoteClusterService(mockServer)
|
service, err := NewRemoteClusterService(mockServer)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ func TestService_AddTopicListener(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mockServer := newMockServer(t, makeRemoteClusters(NumRemotes, ""))
|
mockServer := newMockServer(t, makeRemoteClusters(NumRemotes, ""))
|
||||||
|
defer mockServer.Shutdown()
|
||||||
|
|
||||||
service, err := NewRemoteClusterService(mockServer)
|
service, err := NewRemoteClusterService(mockServer)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user