github.com/kaisenlinux/docker@v0.0.0-20230510090727-ea55db55fac7/swarmkit/log/grpc_test.go (about)

     1  package log
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/sirupsen/logrus"
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestGRPCLogrusLevelTranslation(t *testing.T) {
    11  	logger := logrus.New()
    12  	wrapped := logrusWrapper{Entry: logrus.NewEntry(logger)}
    13  	for _, tc := range []struct {
    14  		level     logrus.Level
    15  		grpcLevel int
    16  	}{
    17  		{
    18  			level:     logrus.InfoLevel,
    19  			grpcLevel: 0,
    20  		},
    21  		{
    22  			level:     logrus.WarnLevel,
    23  			grpcLevel: 1,
    24  		},
    25  		{
    26  			level:     logrus.ErrorLevel,
    27  			grpcLevel: 2,
    28  		},
    29  		{
    30  			level:     logrus.FatalLevel,
    31  			grpcLevel: 3,
    32  		},
    33  		// these don't translate to valid grpc log levels, but should still work
    34  		{
    35  			level:     logrus.DebugLevel,
    36  			grpcLevel: -1,
    37  		},
    38  		{
    39  			level:     logrus.PanicLevel,
    40  			grpcLevel: 4,
    41  		},
    42  	} {
    43  		logger.SetLevel(tc.level)
    44  		for i := -1; i < 5; i++ {
    45  			verbosityAtLeastI := wrapped.V(i)
    46  			require.Equal(t, i <= tc.grpcLevel, verbosityAtLeastI,
    47  				"Is verbosity at least %d? Logrus level at %v", i, tc.level)
    48  		}
    49  	}
    50  
    51  	// these values should also always work, even though they're not valid grpc log values
    52  	logrus.SetLevel(logrus.DebugLevel)
    53  	require.True(t, wrapped.V(-100))
    54  
    55  	logrus.SetLevel(logrus.PanicLevel)
    56  	require.False(t, wrapped.V(100))
    57  }