mirror of https://github.com/0xERR0R/blocky.git
fix(tests): properly silence log output (#1259)
* fix(tests): properly silence log output Using `init` allows it to also work for benchmarks. And `log.Silence` was sometimes getting overridden by `log.init`. * squash: fix(server): don't setup the logger again
This commit is contained in:
parent
94663eeaeb
commit
d52c598546
|
@ -105,5 +105,6 @@ issues:
|
||||||
linters:
|
linters:
|
||||||
- dupl
|
- dupl
|
||||||
- funlen
|
- funlen
|
||||||
|
- gochecknoinits
|
||||||
- gochecknoglobals
|
- gochecknoglobals
|
||||||
- gosec
|
- gosec
|
||||||
|
|
|
@ -8,8 +8,11 @@ import (
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestResolver(t *testing.T) {
|
func init() {
|
||||||
log.Silence()
|
log.Silence()
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestResolver(t *testing.T) {
|
||||||
RegisterFailHandler(Fail)
|
RegisterFailHandler(Fail)
|
||||||
RunSpecs(t, "API Suite")
|
RunSpecs(t, "API Suite")
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,11 @@ import (
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestCache(t *testing.T) {
|
func init() {
|
||||||
log.Silence()
|
log.Silence()
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCache(t *testing.T) {
|
||||||
RegisterFailHandler(Fail)
|
RegisterFailHandler(Fail)
|
||||||
RunSpecs(t, "Expiration cache suite")
|
RunSpecs(t, "Expiration cache suite")
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,11 @@ import (
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestCache(t *testing.T) {
|
func init() {
|
||||||
log.Silence()
|
log.Silence()
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCache(t *testing.T) {
|
||||||
RegisterFailHandler(Fail)
|
RegisterFailHandler(Fail)
|
||||||
RunSpecs(t, "String cache suite")
|
RunSpecs(t, "String cache suite")
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ var (
|
||||||
baseMemStats runtime.MemStats
|
baseMemStats runtime.MemStats
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() { //nolint:gochecknoinits
|
func init() {
|
||||||
// If you update either list, make sure both are the list version (see file header).
|
// If you update either list, make sure both are the list version (see file header).
|
||||||
stringTestData = loadTestdata("../../helpertest/data/oisd-big-plain.txt")
|
stringTestData = loadTestdata("../../helpertest/data/oisd-big-plain.txt")
|
||||||
|
|
||||||
|
|
|
@ -9,8 +9,11 @@ import (
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestCmd(t *testing.T) {
|
func init() {
|
||||||
log.Silence()
|
log.Silence()
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCmd(t *testing.T) {
|
||||||
RegisterFailHandler(Fail)
|
RegisterFailHandler(Fail)
|
||||||
RunSpecs(t, "Command Suite")
|
RunSpecs(t, "Command Suite")
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,8 +14,11 @@ var (
|
||||||
hook *log.MockLoggerHook
|
hook *log.MockLoggerHook
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestConfig(t *testing.T) {
|
func init() {
|
||||||
log.Silence()
|
log.Silence()
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestConfig(t *testing.T) {
|
||||||
RegisterFailHandler(Fail)
|
RegisterFailHandler(Fail)
|
||||||
RunSpecs(t, "Config Suite")
|
RunSpecs(t, "Config Suite")
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,8 +14,11 @@ import (
|
||||||
"github.com/testcontainers/testcontainers-go"
|
"github.com/testcontainers/testcontainers-go"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestLists(t *testing.T) {
|
func init() {
|
||||||
log.Silence()
|
log.Silence()
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestLists(t *testing.T) {
|
||||||
RegisterFailHandler(Fail)
|
RegisterFailHandler(Fail)
|
||||||
RunSpecs(t, "e2e Suite", Label("e2e"))
|
RunSpecs(t, "e2e Suite", Label("e2e"))
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,11 @@ import (
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestLists(t *testing.T) {
|
func init() {
|
||||||
log.Silence()
|
log.Silence()
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestLists(t *testing.T) {
|
||||||
RegisterFailHandler(Fail)
|
RegisterFailHandler(Fail)
|
||||||
RunSpecs(t, "Lists Suite")
|
RunSpecs(t, "Lists Suite")
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,11 @@ import (
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestLists(t *testing.T) {
|
func init() {
|
||||||
log.Silence()
|
log.Silence()
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestLists(t *testing.T) {
|
||||||
RegisterFailHandler(Fail)
|
RegisterFailHandler(Fail)
|
||||||
RunSpecs(t, "Parsers Suite")
|
RunSpecs(t, "Parsers Suite")
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ import (
|
||||||
"io"
|
"io"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
"sync/atomic"
|
||||||
|
|
||||||
"github.com/mattn/go-colorable"
|
"github.com/mattn/go-colorable"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
|
@ -19,7 +20,10 @@ const prefixField = "prefix"
|
||||||
// Logger is the global logging instance
|
// Logger is the global logging instance
|
||||||
//
|
//
|
||||||
//nolint:gochecknoglobals
|
//nolint:gochecknoglobals
|
||||||
var logger *logrus.Logger
|
var (
|
||||||
|
logger *logrus.Logger
|
||||||
|
initDone atomic.Bool
|
||||||
|
)
|
||||||
|
|
||||||
// FormatType format for logging ENUM(
|
// FormatType format for logging ENUM(
|
||||||
// text // logging as text
|
// text // logging as text
|
||||||
|
@ -47,6 +51,10 @@ type Config struct {
|
||||||
|
|
||||||
//nolint:gochecknoinits
|
//nolint:gochecknoinits
|
||||||
func init() {
|
func init() {
|
||||||
|
if !initDone.CompareAndSwap(false, true) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
logger = logrus.New()
|
logger = logrus.New()
|
||||||
|
|
||||||
defaultConfig := &Config{
|
defaultConfig := &Config{
|
||||||
|
@ -122,7 +130,20 @@ func ConfigureLogger(cfg *Config) {
|
||||||
|
|
||||||
// Silence disables the logger output
|
// Silence disables the logger output
|
||||||
func Silence() {
|
func Silence() {
|
||||||
logger.Out = io.Discard
|
initDone.Store(true)
|
||||||
|
|
||||||
|
logger = logrus.New()
|
||||||
|
|
||||||
|
logger.SetFormatter(nopFormatter{}) // skip expensive formatting
|
||||||
|
|
||||||
|
// not actually needed but doesn't hurt
|
||||||
|
logger.SetOutput(io.Discard)
|
||||||
|
}
|
||||||
|
|
||||||
|
type nopFormatter struct{}
|
||||||
|
|
||||||
|
func (f nopFormatter) Format(*logrus.Entry) ([]byte, error) {
|
||||||
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func WithIndent(log *logrus.Entry, prefix string, callback func(*logrus.Entry)) {
|
func WithIndent(log *logrus.Entry, prefix string, callback func(*logrus.Entry)) {
|
||||||
|
|
|
@ -1,15 +1,13 @@
|
||||||
package log
|
package log
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io"
|
|
||||||
|
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
|
"github.com/sirupsen/logrus/hooks/test"
|
||||||
"github.com/stretchr/testify/mock"
|
"github.com/stretchr/testify/mock"
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewMockEntry() (*logrus.Entry, *MockLoggerHook) {
|
func NewMockEntry() (*logrus.Entry, *MockLoggerHook) {
|
||||||
logger := logrus.New()
|
logger, _ := test.NewNullLogger()
|
||||||
logger.Out = io.Discard
|
|
||||||
logger.Level = logrus.TraceLevel
|
logger.Level = logrus.TraceLevel
|
||||||
|
|
||||||
entry := logrus.Entry{Logger: logger}
|
entry := logrus.Entry{Logger: logger}
|
||||||
|
|
|
@ -9,8 +9,11 @@ import (
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestResolver(t *testing.T) {
|
func init() {
|
||||||
log.Silence()
|
log.Silence()
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestResolver(t *testing.T) {
|
||||||
RegisterFailHandler(Fail)
|
RegisterFailHandler(Fail)
|
||||||
RunSpecs(t, "Querylog Suite")
|
RunSpecs(t, "Querylog Suite")
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,9 +10,12 @@ import (
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestRedisClient(t *testing.T) {
|
func init() {
|
||||||
log.Silence()
|
log.Silence()
|
||||||
redis.SetLogger(NoLogs{})
|
redis.SetLogger(NoLogs{})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestRedisClient(t *testing.T) {
|
||||||
RegisterFailHandler(Fail)
|
RegisterFailHandler(Fail)
|
||||||
RunSpecs(t, "Redis Suite")
|
RunSpecs(t, "Redis Suite")
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,9 +12,12 @@ import (
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestResolver(t *testing.T) {
|
func init() {
|
||||||
log.Silence()
|
log.Silence()
|
||||||
redis.SetLogger(NoLogs{})
|
redis.SetLogger(NoLogs{})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestResolver(t *testing.T) {
|
||||||
RegisterFailHandler(Fail)
|
RegisterFailHandler(Fail)
|
||||||
RunSpecs(t, "Resolver Suite")
|
RunSpecs(t, "Resolver Suite")
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,7 +104,7 @@ func (r *UpstreamTreeResolver) upstreamGroupByClient(request *model.Request) str
|
||||||
|
|
||||||
if len(groups) > 0 {
|
if len(groups) > 0 {
|
||||||
if len(groups) > 1 {
|
if len(groups) > 1 {
|
||||||
r.log().WithFields(logrus.Fields{
|
request.Log.WithFields(logrus.Fields{
|
||||||
"clientNames": request.ClientNames,
|
"clientNames": request.ClientNames,
|
||||||
"clientIP": clientIP,
|
"clientIP": clientIP,
|
||||||
"groups": groups,
|
"groups": groups,
|
||||||
|
|
|
@ -9,7 +9,6 @@ import (
|
||||||
"github.com/miekg/dns"
|
"github.com/miekg/dns"
|
||||||
. "github.com/onsi/ginkgo/v2"
|
. "github.com/onsi/ginkgo/v2"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
"github.com/sirupsen/logrus/hooks/test"
|
|
||||||
"github.com/stretchr/testify/mock"
|
"github.com/stretchr/testify/mock"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -21,8 +20,6 @@ var _ = Describe("UpstreamTreeResolver", Label("upstreamTreeResolver"), func() {
|
||||||
sutConfig config.UpstreamsConfig
|
sutConfig config.UpstreamsConfig
|
||||||
branches map[string]Resolver
|
branches map[string]Resolver
|
||||||
|
|
||||||
loggerHook *test.Hook
|
|
||||||
|
|
||||||
err error
|
err error
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -143,9 +140,6 @@ var _ = Describe("UpstreamTreeResolver", Label("upstreamTreeResolver"), func() {
|
||||||
|
|
||||||
When("client specific resolvers are defined", func() {
|
When("client specific resolvers are defined", func() {
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
loggerHook = test.NewGlobal()
|
|
||||||
log.Log().AddHook(loggerHook)
|
|
||||||
|
|
||||||
sutConfig = config.UpstreamsConfig{Groups: config.UpstreamGroups{
|
sutConfig = config.UpstreamsConfig{Groups: config.UpstreamGroups{
|
||||||
upstreamDefaultCfgName: {config.Upstream{}},
|
upstreamDefaultCfgName: {config.Upstream{}},
|
||||||
"laptop": {config.Upstream{}},
|
"laptop": {config.Upstream{}},
|
||||||
|
@ -194,10 +188,6 @@ var _ = Describe("UpstreamTreeResolver", Label("upstreamTreeResolver"), func() {
|
||||||
Expect(branches).To(HaveLen(8))
|
Expect(branches).To(HaveLen(8))
|
||||||
})
|
})
|
||||||
|
|
||||||
AfterEach(func() {
|
|
||||||
loggerHook.Reset()
|
|
||||||
})
|
|
||||||
|
|
||||||
It("Should use default if client name or IP don't match", func() {
|
It("Should use default if client name or IP don't match", func() {
|
||||||
request := newRequestWithClient("example.com.", A, "192.168.178.55", "test")
|
request := newRequestWithClient("example.com.", A, "192.168.178.55", "test")
|
||||||
|
|
||||||
|
@ -298,7 +288,10 @@ var _ = Describe("UpstreamTreeResolver", Label("upstreamTreeResolver"), func() {
|
||||||
))
|
))
|
||||||
})
|
})
|
||||||
It("Should use one of the matching resolvers & log warning", func() {
|
It("Should use one of the matching resolvers & log warning", func() {
|
||||||
|
logger, hook := log.NewMockEntry()
|
||||||
|
|
||||||
request := newRequestWithClient("example.com.", A, "0.0.0.0", "name-matches1")
|
request := newRequestWithClient("example.com.", A, "0.0.0.0", "name-matches1")
|
||||||
|
request.Log = logger
|
||||||
|
|
||||||
Expect(sut.Resolve(request)).
|
Expect(sut.Resolve(request)).
|
||||||
Should(
|
Should(
|
||||||
|
@ -311,7 +304,7 @@ var _ = Describe("UpstreamTreeResolver", Label("upstreamTreeResolver"), func() {
|
||||||
HaveReturnCode(dns.RcodeSuccess),
|
HaveReturnCode(dns.RcodeSuccess),
|
||||||
))
|
))
|
||||||
|
|
||||||
Expect(loggerHook.LastEntry().Message).Should(ContainSubstring("client matches multiple groups"))
|
Expect(hook.Messages).Should(ContainElement(ContainSubstring("client matches multiple groups")))
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -115,8 +115,6 @@ func retrieveCertificate(cfg *config.Config) (cert tls.Certificate, err error) {
|
||||||
//
|
//
|
||||||
//nolint:funlen
|
//nolint:funlen
|
||||||
func NewServer(ctx context.Context, cfg *config.Config) (server *Server, err error) {
|
func NewServer(ctx context.Context, cfg *config.Config) (server *Server, err error) {
|
||||||
log.ConfigureLogger(&cfg.Log)
|
|
||||||
|
|
||||||
var cert tls.Certificate
|
var cert tls.Certificate
|
||||||
|
|
||||||
if len(cfg.Ports.HTTPS) > 0 || len(cfg.Ports.TLS) > 0 {
|
if len(cfg.Ports.HTTPS) > 0 || len(cfg.Ports.TLS) > 0 {
|
||||||
|
|
|
@ -8,8 +8,11 @@ import (
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestDNSServer(t *testing.T) {
|
func init() {
|
||||||
log.Silence()
|
log.Silence()
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDNSServer(t *testing.T) {
|
||||||
RegisterFailHandler(Fail)
|
RegisterFailHandler(Fail)
|
||||||
RunSpecs(t, "Server Suite")
|
RunSpecs(t, "Server Suite")
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,11 @@ import (
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestTrie(t *testing.T) {
|
func init() {
|
||||||
log.Silence()
|
log.Silence()
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestTrie(t *testing.T) {
|
||||||
RegisterFailHandler(Fail)
|
RegisterFailHandler(Fail)
|
||||||
RunSpecs(t, "Trie Suite")
|
RunSpecs(t, "Trie Suite")
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,8 +8,11 @@ import (
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestLists(t *testing.T) {
|
func init() {
|
||||||
log.Silence()
|
log.Silence()
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestLists(t *testing.T) {
|
||||||
RegisterFailHandler(Fail)
|
RegisterFailHandler(Fail)
|
||||||
RunSpecs(t, "Util Suite")
|
RunSpecs(t, "Util Suite")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue