-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlogger_test.go
118 lines (101 loc) · 2.94 KB
/
logger_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package rotatorr_test
import (
"log"
"os"
"testing"
"time"
"github.com/golang/mock/gomock"
"github.com/stretchr/testify/assert"
"golift.io/rotatorr"
"golift.io/rotatorr/introtator"
"golift.io/rotatorr/mocks"
)
// Basic run of the mill usage. Hits 85% of the code just doing normal things.
func TestNew(t *testing.T) {
t.Parallel()
assert := assert.New(t)
logger := rotatorr.NewMust(&rotatorr.Config{
FileSize: 50,
Rotatorr: &introtator.Layout{},
})
log.SetOutput(logger)
log.Println("weeeeeeeee!")
log.Println("weee!")
err := log.Output(1, "weeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee!")
assert.ErrorIs(err, rotatorr.ErrWriteTooLarge)
//
_, err = logger.Rotate()
assert.Nil(err)
assert.Nil(logger.Close())
}
func TestRotateSize(t *testing.T) {
t.Parallel()
assert := assert.New(t)
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockRotatorr := mocks.NewMockRotatorr(mockCtrl)
testFile, err := os.CreateTemp("", "*.log")
assert.NoError(err, "problem creating temp file")
assert.NoError(testFile.Close(), "problem closing temp file")
mockRotatorr.EXPECT().Dirs(gomock.Any())
//
logger, err := rotatorr.New(&rotatorr.Config{
Filepath: testFile.Name(),
FileSize: 50,
Rotatorr: mockRotatorr,
})
if err != nil {
assert.Nil(err)
return
}
//
msg := "log message" // len: 11
s, err := logger.Write([]byte(msg + msg + msg + msg + msg)) // len: 55
assert.ErrorIs(err, rotatorr.ErrWriteTooLarge, "writing more data than our filesize must produce an error")
assert.Equal(0, s, "size must be 0 if the write fails.")
check := func(s int, err error) {
assert.Nil(err)
assert.Equal(len(msg), s)
}
check(logger.Write([]byte(msg))) // 11
check(logger.Write([]byte(msg))) // 22
check(logger.Write([]byte(msg))) // 33
check(logger.Write([]byte(msg))) // 44
mockRotatorr.EXPECT().Rotate(testFile.Name())
check(logger.Write([]byte(msg))) // 55 > 50, rotate!
}
func TestRotateEvery(t *testing.T) {
t.Parallel()
assert := assert.New(t)
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
mockRotatorr := mocks.NewMockRotatorr(mockCtrl)
testFile, err := os.CreateTemp("", "*.log")
assert.NoError(err, "problem creating temp file")
assert.NoError(testFile.Close(), "problem closing temp file")
mockRotatorr.EXPECT().Dirs(gomock.Any())
//
logger, err := rotatorr.New(&rotatorr.Config{
Filepath: testFile.Name(),
Every: time.Second,
Rotatorr: mockRotatorr,
})
if err != nil {
assert.Nil(err)
return
}
//
msg := "log message" // len: 11
s, err := logger.Write([]byte(msg + msg + msg + msg + msg)) // len: 55
assert.Nil(err)
assert.Equal(len(msg)*5, s)
check := func(s int, err error) {
assert.Nil(err)
assert.Equal(len(msg), s)
}
check(logger.Write([]byte(msg))) // 11
check(logger.Write([]byte(msg))) // 22
time.Sleep(time.Second)
mockRotatorr.EXPECT().Rotate(testFile.Name())
check(logger.Write([]byte(msg))) // 33
}