github.com/vmware/transport-go@v1.3.4/plank/utils/logger_test.go (about) 1 // Copyright 2019-2021 VMware, Inc. 2 // SPDX-License-Identifier: BSD-2-Clause 3 4 package utils 5 6 import ( 7 "github.com/sirupsen/logrus" 8 "github.com/stretchr/testify/assert" 9 "testing" 10 ) 11 12 var logMsg string 13 var logLevel logrus.Level 14 15 func TestPlankLogger(t *testing.T) { 16 resetLogger() 17 assert.NotNil(t, Log) 18 } 19 20 func TestPlankLogger_Debug(t *testing.T) { 21 resetLogger() 22 23 Log.Debug("debug") 24 assert.EqualValues(t, "debug", logMsg) 25 assert.EqualValues(t, logrus.DebugLevel, logLevel) 26 } 27 28 func TestPlankLogger_Info(t *testing.T) { 29 resetLogger() 30 31 Log.Info("info") 32 assert.EqualValues(t, "info", logMsg) 33 assert.EqualValues(t, logrus.InfoLevel, logLevel) 34 } 35 36 func TestPlankLogger_Warn(t *testing.T) { 37 resetLogger() 38 39 Log.Warn("warn") 40 assert.EqualValues(t, "warn", logMsg) 41 assert.EqualValues(t, logrus.WarnLevel, logLevel) 42 } 43 44 func TestPlankLogger_Error(t *testing.T) { 45 resetLogger() 46 47 Log.Error("error") 48 assert.EqualValues(t, "error", logMsg) 49 assert.EqualValues(t, logrus.ErrorLevel, logLevel) 50 } 51 52 func resetLogger() { 53 logMsg = "" 54 logLevel = logrus.TraceLevel 55 56 Log = nil 57 Log = &PlankLogger{logrus.New()} 58 Log.SetLevel(logrus.DebugLevel) 59 Log.AddHook(newTestHook( 60 []logrus.Level{logrus.DebugLevel, logrus.InfoLevel, logrus.WarnLevel, logrus.ErrorLevel}, 61 func(entry *logrus.Entry) error { 62 logMsg = entry.Message 63 logLevel = entry.Level 64 return nil 65 })) 66 } 67 68 func TestCreateTextFormatterFromFormatOptions(t *testing.T) { 69 options := &LogFormatOption{ 70 ForceColors: true, 71 DisableColors: true, 72 ForceQuote: true, 73 DisableQuote: true, 74 EnvironmentOverrideColors: true, 75 DisableTimestamp: true, 76 FullTimestamp: true, 77 TimestampFormat: "Format", 78 DisableSorting: true, 79 DisableLevelTruncation: true, 80 PadLevelText: true, 81 QuoteEmptyFields: true, 82 isTerminal: true, 83 } 84 txtFormatter := CreateTextFormatterFromFormatOptions(options) 85 assert.NotNil(t, txtFormatter) 86 } 87 88 // test models and utilities 89 type testHook struct { 90 levels []logrus.Level 91 fireFunc func(entry *logrus.Entry) error 92 } 93 94 func (th *testHook) Levels() []logrus.Level { 95 return th.levels 96 } 97 98 func (th *testHook) Fire(entry *logrus.Entry) error { 99 return th.fireFunc(entry) 100 } 101 102 func (th *testHook) setFireFunc(f func(entry *logrus.Entry) error) { 103 th.fireFunc = f 104 } 105 106 func newTestHook(levels []logrus.Level, firefunc func(entry *logrus.Entry) error) logrus.Hook { 107 nh := &testHook{ 108 levels: levels, 109 } 110 nh.setFireFunc(firefunc) 111 return nh 112 }