Files
prysm/testing/util/logging_test.go
Bastin 92bd211e4d upgrade v6 to v7 (#15989)
* upgrade v6 to v7

* changelog

* update-go-ssz
2025-11-06 16:16:23 +00:00

74 lines
1.9 KiB
Go

package util
import (
"slices"
"testing"
"time"
"github.com/OffchainLabs/prysm/v7/testing/require"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
)
func TestUnregister(t *testing.T) {
logger := logrus.New()
logger.SetLevel(logrus.PanicLevel) // set to lowest log level to test level override in
assertNoHooks(t, logger)
c := make(chan *logrus.Entry, 1)
tl := NewChannelEntryWriter(c)
undo := RegisterHookWithUndo(logger, tl)
assertRegistered(t, logger, tl)
logger.Trace("test")
select {
case <-c:
default:
t.Fatalf("Expected log entry, got none")
}
undo()
assertNoHooks(t, logger)
require.Equal(t, logrus.PanicLevel, logger.Level)
}
var logTestErr = errors.New("test")
func TestChannelEntryWriter(t *testing.T) {
logger := logrus.New()
c := make(chan *logrus.Entry)
tl := NewChannelEntryWriter(c)
logger.AddHook(tl)
msg := "test"
go func() {
logger.WithError(logTestErr).Info(msg)
}()
select {
case e := <-c:
gotErr := e.Data[logrus.ErrorKey]
if gotErr == nil {
t.Fatalf("Expected error in log entry, got nil")
}
ge, ok := gotErr.(error)
require.Equal(t, true, ok, "Expected error in log entry to be of type error, got %T", gotErr)
require.ErrorIs(t, ge, logTestErr)
require.Equal(t, msg, e.Message)
require.Equal(t, logrus.InfoLevel, e.Level)
case <-time.After(10 * time.Millisecond):
t.Fatalf("Timed out waiting for log entry")
}
}
func assertNoHooks(t *testing.T, logger *logrus.Logger) {
for lvl, hooks := range logger.Hooks {
for _, hook := range hooks {
t.Fatalf("Expected no hooks, got %v at level %s", hook, lvl.String())
}
}
}
func assertRegistered(t *testing.T, logger *logrus.Logger, hook ComparableHook) {
for _, lvl := range hook.Levels() {
registered := logger.Hooks[lvl]
found := slices.ContainsFunc(registered, hook.Equal)
require.Equal(t, true, found, "Expected hook %v to be registered at level %s, but it was not", hook, lvl.String())
}
}