mirror of https://github.com/status-im/consul.git
Merge pull request #12265 from hashicorp/dnephin/logging-in-tests
sdk: add TestLogLevel for setting log level in tests
This commit is contained in:
commit
7ec658b7ac
|
@ -67,7 +67,7 @@ func NewTestACLAgent(t *testing.T, name string, hcl string, resolveAuthz authzRe
|
||||||
|
|
||||||
bd.Logger = hclog.NewInterceptLogger(&hclog.LoggerOptions{
|
bd.Logger = hclog.NewInterceptLogger(&hclog.LoggerOptions{
|
||||||
Name: name,
|
Name: name,
|
||||||
Level: hclog.Debug,
|
Level: testutil.TestLogLevel,
|
||||||
Output: logBuffer,
|
Output: logBuffer,
|
||||||
TimeFormat: "04:05.000",
|
TimeFormat: "04:05.000",
|
||||||
})
|
})
|
||||||
|
|
|
@ -8,10 +8,11 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/hashicorp/consul/lib"
|
|
||||||
"github.com/hashicorp/consul/sdk/testutil"
|
|
||||||
"github.com/hashicorp/go-hclog"
|
"github.com/hashicorp/go-hclog"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
|
"github.com/hashicorp/consul/lib"
|
||||||
|
"github.com/hashicorp/consul/sdk/testutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestAE_scaleFactor(t *testing.T) {
|
func TestAE_scaleFactor(t *testing.T) {
|
||||||
|
@ -401,7 +402,6 @@ func (m *mock) SyncChanges() error {
|
||||||
|
|
||||||
func testSyncer(t *testing.T) *StateSyncer {
|
func testSyncer(t *testing.T) *StateSyncer {
|
||||||
logger := hclog.New(&hclog.LoggerOptions{
|
logger := hclog.New(&hclog.LoggerOptions{
|
||||||
Level: 0,
|
|
||||||
Output: testutil.NewLogBuffer(t),
|
Output: testutil.NewLogBuffer(t),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -507,7 +507,7 @@ func newDefaultDeps(t *testing.T, c *Config) Deps {
|
||||||
|
|
||||||
logger := hclog.NewInterceptLogger(&hclog.LoggerOptions{
|
logger := hclog.NewInterceptLogger(&hclog.LoggerOptions{
|
||||||
Name: c.NodeName,
|
Name: c.NodeName,
|
||||||
Level: hclog.Debug,
|
Level: testutil.TestLogLevel,
|
||||||
Output: testutil.NewLogBuffer(t),
|
Output: testutil.NewLogBuffer(t),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -1445,7 +1445,7 @@ func TestLeader_ConfigEntryBootstrap_Fail(t *testing.T) {
|
||||||
|
|
||||||
logger := hclog.NewInterceptLogger(&hclog.LoggerOptions{
|
logger := hclog.NewInterceptLogger(&hclog.LoggerOptions{
|
||||||
Name: config.NodeName,
|
Name: config.NodeName,
|
||||||
Level: hclog.Debug,
|
Level: testutil.TestLogLevel,
|
||||||
Output: io.MultiWriter(pw, testutil.NewLogBuffer(t)),
|
Output: io.MultiWriter(pw, testutil.NewLogBuffer(t)),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -3017,9 +3017,7 @@ func TestPreparedQuery_queryFailover(t *testing.T) {
|
||||||
if queries := mock.JoinQueryLog(); queries != "dc1:PreparedQuery.ExecuteRemote|dc2:PreparedQuery.ExecuteRemote|dc4:PreparedQuery.ExecuteRemote" {
|
if queries := mock.JoinQueryLog(); queries != "dc1:PreparedQuery.ExecuteRemote|dc2:PreparedQuery.ExecuteRemote|dc4:PreparedQuery.ExecuteRemote" {
|
||||||
t.Fatalf("bad: %s", queries)
|
t.Fatalf("bad: %s", queries)
|
||||||
}
|
}
|
||||||
if !strings.Contains(mock.LogBuffer.String(), "Skipping unknown datacenter") {
|
require.Contains(t, mock.LogBuffer.String(), "Skipping unknown datacenter")
|
||||||
t.Fatalf("bad: %s", mock.LogBuffer.String())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Same setup as before but dc1 is going to return an error and should
|
// Same setup as before but dc1 is going to return an error and should
|
||||||
|
|
|
@ -21,6 +21,7 @@ import (
|
||||||
|
|
||||||
"github.com/NYTimes/gziphandler"
|
"github.com/NYTimes/gziphandler"
|
||||||
cleanhttp "github.com/hashicorp/go-cleanhttp"
|
cleanhttp "github.com/hashicorp/go-cleanhttp"
|
||||||
|
"github.com/hashicorp/go-hclog"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
"golang.org/x/net/http2"
|
"golang.org/x/net/http2"
|
||||||
|
@ -651,7 +652,10 @@ func TestHTTP_wrap_obfuscateLog(t *testing.T) {
|
||||||
|
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
buf := &syncBuffer{b: new(bytes.Buffer)}
|
buf := &syncBuffer{b: new(bytes.Buffer)}
|
||||||
a := StartTestAgent(t, TestAgent{LogOutput: buf})
|
a := StartTestAgent(t, TestAgent{
|
||||||
|
LogOutput: buf,
|
||||||
|
LogLevel: hclog.Debug,
|
||||||
|
})
|
||||||
defer a.Shutdown()
|
defer a.Shutdown()
|
||||||
|
|
||||||
handler := func(resp http.ResponseWriter, req *http.Request) (interface{}, error) {
|
handler := func(resp http.ResponseWriter, req *http.Request) (interface{}, error) {
|
||||||
|
@ -694,9 +698,7 @@ func TestHTTP_wrap_obfuscateLog(t *testing.T) {
|
||||||
req, _ := http.NewRequest("GET", url, nil)
|
req, _ := http.NewRequest("GET", url, nil)
|
||||||
a.srv.wrap(handler, []string{"GET"})(resp, req)
|
a.srv.wrap(handler, []string{"GET"})(resp, req)
|
||||||
bufout := buf.String()
|
bufout := buf.String()
|
||||||
if !strings.Contains(bufout, want) {
|
require.Contains(t, bufout, want)
|
||||||
t.Fatalf("got %s want %s", bufout, want)
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,10 +25,7 @@ func init() {
|
||||||
|
|
||||||
func GetBufferedLogger() hclog.Logger {
|
func GetBufferedLogger() hclog.Logger {
|
||||||
localLogBuffer = new(bytes.Buffer)
|
localLogBuffer = new(bytes.Buffer)
|
||||||
return hclog.New(&hclog.LoggerOptions{
|
return hclog.New(&hclog.LoggerOptions{Output: localLogBuffer})
|
||||||
Level: 0,
|
|
||||||
Output: localLogBuffer,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type fauxConnPool struct {
|
type fauxConnPool struct {
|
||||||
|
|
|
@ -56,6 +56,7 @@ type TestAgent struct {
|
||||||
// The io.Writer must allow concurrent reads and writes. Note that
|
// The io.Writer must allow concurrent reads and writes. Note that
|
||||||
// bytes.Buffer is not safe for concurrent reads and writes.
|
// bytes.Buffer is not safe for concurrent reads and writes.
|
||||||
LogOutput io.Writer
|
LogOutput io.Writer
|
||||||
|
LogLevel hclog.Level
|
||||||
|
|
||||||
// DataDir may be set to a directory which exists. If is it not set,
|
// DataDir may be set to a directory which exists. If is it not set,
|
||||||
// TestAgent.Start will create one and set DataDir to the directory path.
|
// TestAgent.Start will create one and set DataDir to the directory path.
|
||||||
|
@ -158,8 +159,12 @@ func (a *TestAgent) Start(t *testing.T) error {
|
||||||
logOutput = testutil.NewLogBuffer(t)
|
logOutput = testutil.NewLogBuffer(t)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if a.LogLevel == 0 {
|
||||||
|
a.LogLevel = testutil.TestLogLevel
|
||||||
|
}
|
||||||
|
|
||||||
logger := hclog.NewInterceptLogger(&hclog.LoggerOptions{
|
logger := hclog.NewInterceptLogger(&hclog.LoggerOptions{
|
||||||
Level: hclog.Debug,
|
Level: a.LogLevel,
|
||||||
Output: logOutput,
|
Output: logOutput,
|
||||||
TimeFormat: "04:05.000",
|
TimeFormat: "04:05.000",
|
||||||
Name: name,
|
Name: name,
|
||||||
|
|
|
@ -10,6 +10,20 @@ import (
|
||||||
"github.com/hashicorp/go-hclog"
|
"github.com/hashicorp/go-hclog"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// TestLogLevel is set from the TEST_LOG_LEVEL environment variable. It can
|
||||||
|
// be used by tests to set the log level of a hclog.Logger. Defaults to
|
||||||
|
// hclog.Warn if the environment variable is unset, or if the value of the
|
||||||
|
// environment variable can not be matched to a log level.
|
||||||
|
var TestLogLevel = testLogLevel()
|
||||||
|
|
||||||
|
func testLogLevel() hclog.Level {
|
||||||
|
level := hclog.LevelFromString(os.Getenv("TEST_LOG_LEVEL"))
|
||||||
|
if level != hclog.NoLevel {
|
||||||
|
return level
|
||||||
|
}
|
||||||
|
return hclog.Warn
|
||||||
|
}
|
||||||
|
|
||||||
func Logger(t TestingTB) hclog.InterceptLogger {
|
func Logger(t TestingTB) hclog.InterceptLogger {
|
||||||
return LoggerWithOutput(t, NewLogBuffer(t))
|
return LoggerWithOutput(t, NewLogBuffer(t))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue