github.com/cilium/cilium@v1.16.2/pkg/logging/logging_test.go (about)

     1  // SPDX-License-Identifier: Apache-2.0
     2  // Copyright Authors of Cilium
     3  
     4  package logging
     5  
     6  import (
     7  	"reflect"
     8  	"testing"
     9  	"time"
    10  
    11  	"github.com/sirupsen/logrus"
    12  	"github.com/stretchr/testify/require"
    13  )
    14  
    15  func TestGetLogLevel(t *testing.T) {
    16  	opts := LogOptions{}
    17  
    18  	// case doesn't matter with log options
    19  	opts[LevelOpt] = "DeBuG"
    20  	require.Equal(t, opts.GetLogLevel(), logrus.DebugLevel)
    21  
    22  	opts[LevelOpt] = "Invalid"
    23  	require.Equal(t, opts.GetLogLevel(), DefaultLogLevel)
    24  }
    25  
    26  func TestGetLogFormat(t *testing.T) {
    27  	opts := LogOptions{}
    28  
    29  	// case doesn't matter with log options
    30  	opts[FormatOpt] = "JsOn"
    31  	require.Equal(t, LogFormatJSON, opts.GetLogFormat())
    32  
    33  	opts[FormatOpt] = "Invalid"
    34  	require.Equal(t, DefaultLogFormatTimestamp, opts.GetLogFormat())
    35  
    36  	opts[FormatOpt] = "JSON-TS"
    37  	require.Equal(t, LogFormatJSONTimestamp, opts.GetLogFormat())
    38  }
    39  
    40  func TestSetLogLevel(t *testing.T) {
    41  	oldLevel := DefaultLogger.GetLevel()
    42  	defer DefaultLogger.SetLevel(oldLevel)
    43  
    44  	SetLogLevel(logrus.TraceLevel)
    45  	require.Equal(t, logrus.TraceLevel, DefaultLogger.GetLevel())
    46  }
    47  
    48  func TestSetDefaultLogLevel(t *testing.T) {
    49  	oldLevel := DefaultLogger.GetLevel()
    50  	defer DefaultLogger.SetLevel(oldLevel)
    51  
    52  	SetDefaultLogLevel()
    53  	require.Equal(t, DefaultLogLevel, DefaultLogger.GetLevel())
    54  }
    55  
    56  func TestSetLogFormat(t *testing.T) {
    57  	oldFormatter := DefaultLogger.Formatter
    58  	defer DefaultLogger.SetFormatter(oldFormatter)
    59  
    60  	SetLogFormat(LogFormatJSON)
    61  	require.Equal(t, "*logrus.JSONFormatter", reflect.TypeOf(DefaultLogger.Formatter).String())
    62  
    63  	SetLogFormat(LogFormatJSONTimestamp)
    64  	require.Equal(t, "*logrus.JSONFormatter", reflect.TypeOf(DefaultLogger.Formatter).String())
    65  	require.False(t, DefaultLogger.Formatter.(*logrus.JSONFormatter).DisableTimestamp)
    66  	require.Equal(t, time.RFC3339Nano, DefaultLogger.Formatter.(*logrus.JSONFormatter).TimestampFormat)
    67  }
    68  
    69  func TestSetDefaultLogFormat(t *testing.T) {
    70  	oldFormatter := DefaultLogger.Formatter
    71  	defer DefaultLogger.SetFormatter(oldFormatter)
    72  
    73  	SetDefaultLogFormat()
    74  	require.Equal(t, "*logrus.TextFormatter", reflect.TypeOf(DefaultLogger.Formatter).String())
    75  }
    76  
    77  func TestSetupLogging(t *testing.T) {
    78  	oldLevel := DefaultLogger.GetLevel()
    79  	defer DefaultLogger.SetLevel(oldLevel)
    80  
    81  	// Validates that we configure the DefaultLogger correctly
    82  	logOpts := LogOptions{
    83  		"format": "json",
    84  		"level":  "error",
    85  	}
    86  
    87  	SetupLogging([]string{}, logOpts, "", false)
    88  	require.Equal(t, logrus.ErrorLevel, DefaultLogger.GetLevel())
    89  	require.Equal(t, "*logrus.JSONFormatter", reflect.TypeOf(DefaultLogger.Formatter).String())
    90  
    91  	// Validate that the 'debug' flag/arg overrides the logOptions
    92  	SetupLogging([]string{}, logOpts, "", true)
    93  	require.Equal(t, logrus.DebugLevel, DefaultLogger.GetLevel())
    94  }