github.com/kaisenlinux/docker.io@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 }