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  }