go_study/fabric-main/common/flogging/floggingtest/logger_test.go

93 lines
2.8 KiB
Go

/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package floggingtest
import (
"testing"
. "github.com/onsi/gomega"
"github.com/onsi/gomega/gbytes"
"go.uber.org/zap/zapcore"
)
func TestLoggerRecorder(t *testing.T) {
gt := NewGomegaWithT(t)
tl, recorder := NewTestLogger(t, Named("test-logging"), AtLevel(zapcore.InfoLevel))
tl.Error("this", "is", "an", "error")
gt.Expect(recorder.Entries()).To(HaveLen(1))
gt.Expect(recorder.Entries()).To(ConsistOf("[test-logging] TestLoggerRecorder -> ERRO 0001 this is an error"))
gt.Expect(recorder.Messages()).To(HaveLen(1))
gt.Expect(recorder.Messages()).To(ConsistOf("this is an error"))
gt.Expect(string(recorder.Buffer().Contents())).To(Equal("[test-logging] TestLoggerRecorder -> ERRO 0001 this is an error\n"))
gt.Expect(recorder).NotTo(gbytes.Say("nothing good"))
gt.Expect(recorder).To(gbytes.Say(`\Q[test-logging] TestLoggerRecorder -> ERRO 0001 this is an error\E`))
}
func TestLoggerRecorderRegex(t *testing.T) {
gt := NewGomegaWithT(t)
tl, recorder := NewTestLogger(t, Named("test-logging"))
tl.Debug("message one")
tl.Debug("message two")
tl.Debug("message three")
gt.Expect(recorder.EntriesContaining("message")).To(HaveLen(3))
gt.Expect(recorder.EntriesMatching("test-logging.*message t")).To(HaveLen(2))
gt.Expect(recorder.MessagesContaining("message")).To(HaveLen(3))
gt.Expect(recorder.MessagesMatching("^message t")).To(HaveLen(2))
gt.Expect(recorder.EntriesContaining("one")).To(HaveLen(1))
gt.Expect(recorder.MessagesContaining("one")).To(HaveLen(1))
gt.Expect(recorder.EntriesContaining("two")).To(HaveLen(1))
gt.Expect(recorder.MessagesContaining("two")).To(HaveLen(1))
gt.Expect(recorder.EntriesContaining("")).To(HaveLen(3))
gt.Expect(recorder.MessagesContaining("")).To(HaveLen(3))
gt.Expect(recorder.EntriesContaining("mismatch")).To(HaveLen(0))
gt.Expect(recorder.MessagesContaining("mismatch")).To(HaveLen(0))
}
func TestRecorderReset(t *testing.T) {
gt := NewGomegaWithT(t)
tl, recorder := NewTestLogger(t, Named("test-logging"))
tl.Debug("message one")
tl.Debug("message two")
tl.Debug("message three")
gt.Expect(recorder.Entries()).To(HaveLen(3))
gt.Expect(recorder.Messages()).To(HaveLen(3))
gt.Expect(recorder.Buffer().Contents()).NotTo(BeEmpty())
recorder.Reset()
gt.Expect(recorder.Entries()).To(HaveLen(0))
gt.Expect(recorder.Messages()).To(HaveLen(0))
gt.Expect(recorder.Buffer().Contents()).To(BeEmpty())
}
func TestFatalAsPanic(t *testing.T) {
gt := NewGomegaWithT(t)
tl, _ := NewTestLogger(t)
gt.Expect(func() { tl.Fatal("this", "is", "an", "error") }).To(Panic())
}
func TestRecordingCoreWith(t *testing.T) {
gt := NewGomegaWithT(t)
logger, recorder := NewTestLogger(t)
logger = logger.With("key", "value")
logger.Debug("message")
gt.Expect(recorder).To(gbytes.Say(`message key=value`))
}