github.com/shuguocloud/go-zero@v1.3.0/core/logx/rotatelogger_test.go (about) 1 package logx 2 3 import ( 4 "os" 5 "path/filepath" 6 "syscall" 7 "testing" 8 "time" 9 10 "github.com/stretchr/testify/assert" 11 "github.com/shuguocloud/go-zero/core/fs" 12 ) 13 14 func TestDailyRotateRuleMarkRotated(t *testing.T) { 15 var rule DailyRotateRule 16 rule.MarkRotated() 17 assert.Equal(t, getNowDate(), rule.rotatedTime) 18 } 19 20 func TestDailyRotateRuleOutdatedFiles(t *testing.T) { 21 var rule DailyRotateRule 22 assert.Empty(t, rule.OutdatedFiles()) 23 rule.days = 1 24 assert.Empty(t, rule.OutdatedFiles()) 25 rule.gzip = true 26 assert.Empty(t, rule.OutdatedFiles()) 27 } 28 29 func TestDailyRotateRuleShallRotate(t *testing.T) { 30 var rule DailyRotateRule 31 rule.rotatedTime = time.Now().Add(time.Hour * 24).Format(dateFormat) 32 assert.True(t, rule.ShallRotate()) 33 } 34 35 func TestRotateLoggerClose(t *testing.T) { 36 filename, err := fs.TempFilenameWithText("foo") 37 assert.Nil(t, err) 38 if len(filename) > 0 { 39 defer os.Remove(filename) 40 } 41 logger, err := NewLogger(filename, new(DailyRotateRule), false) 42 assert.Nil(t, err) 43 assert.Nil(t, logger.Close()) 44 } 45 46 func TestRotateLoggerGetBackupFilename(t *testing.T) { 47 filename, err := fs.TempFilenameWithText("foo") 48 assert.Nil(t, err) 49 if len(filename) > 0 { 50 defer os.Remove(filename) 51 } 52 logger, err := NewLogger(filename, new(DailyRotateRule), false) 53 assert.Nil(t, err) 54 assert.True(t, len(logger.getBackupFilename()) > 0) 55 logger.backup = "" 56 assert.True(t, len(logger.getBackupFilename()) > 0) 57 } 58 59 func TestRotateLoggerMayCompressFile(t *testing.T) { 60 filename, err := fs.TempFilenameWithText("foo") 61 assert.Nil(t, err) 62 if len(filename) > 0 { 63 defer os.Remove(filename) 64 } 65 logger, err := NewLogger(filename, new(DailyRotateRule), false) 66 assert.Nil(t, err) 67 logger.maybeCompressFile(filename) 68 _, err = os.Stat(filename) 69 assert.Nil(t, err) 70 } 71 72 func TestRotateLoggerMayCompressFileTrue(t *testing.T) { 73 filename, err := fs.TempFilenameWithText("foo") 74 assert.Nil(t, err) 75 logger, err := NewLogger(filename, new(DailyRotateRule), true) 76 assert.Nil(t, err) 77 if len(filename) > 0 { 78 defer func() { 79 os.Remove(filename) 80 os.Remove(filepath.Base(logger.getBackupFilename()) + ".gz") 81 }() 82 } 83 logger.maybeCompressFile(filename) 84 _, err = os.Stat(filename) 85 assert.NotNil(t, err) 86 } 87 88 func TestRotateLoggerRotate(t *testing.T) { 89 filename, err := fs.TempFilenameWithText("foo") 90 assert.Nil(t, err) 91 logger, err := NewLogger(filename, new(DailyRotateRule), true) 92 assert.Nil(t, err) 93 if len(filename) > 0 { 94 defer func() { 95 os.Remove(filename) 96 os.Remove(logger.getBackupFilename()) 97 os.Remove(filepath.Base(logger.getBackupFilename()) + ".gz") 98 }() 99 } 100 err = logger.rotate() 101 switch v := err.(type) { 102 case *os.LinkError: 103 // avoid rename error on docker container 104 assert.Equal(t, syscall.EXDEV, v.Err) 105 default: 106 assert.Nil(t, err) 107 } 108 } 109 110 func TestRotateLoggerWrite(t *testing.T) { 111 filename, err := fs.TempFilenameWithText("foo") 112 assert.Nil(t, err) 113 rule := new(DailyRotateRule) 114 logger, err := NewLogger(filename, rule, true) 115 assert.Nil(t, err) 116 if len(filename) > 0 { 117 defer func() { 118 os.Remove(filename) 119 os.Remove(logger.getBackupFilename()) 120 os.Remove(filepath.Base(logger.getBackupFilename()) + ".gz") 121 }() 122 } 123 logger.write([]byte(`foo`)) 124 rule.rotatedTime = time.Now().Add(-time.Hour * 24).Format(dateFormat) 125 logger.write([]byte(`bar`)) 126 }