-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathhandler_test.go
124 lines (113 loc) · 2.22 KB
/
handler_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
119
120
121
122
123
124
package logging
import (
"bytes"
"fmt"
"strings"
"testing"
"time"
)
var h *Handler
var b *bytes.Buffer
func init() {
b = bytes.NewBuffer(nil)
h = NewHandler(b)
DisableStdout()
AddHandler("", h)
}
func TestSetLevel(t *testing.T) {
b.Reset()
h.SetLevel(DEBUG)
Debug("%d, %s", 1, "OK")
h.SetLevel(INFO)
Debug("%d, %s", 1, "OK")
if b.Len() != 34 {
t.Fail()
}
}
func TestSetLevelString(t *testing.T) {
b.Reset()
h.SetLevel(DEBUG)
Debug("%d, %s", 1, "OK")
h.SetLevelString("info")
Debug("%d, %s", 1, "OK")
if b.Len() != 34 {
t.Fail()
}
}
func TestSetLevelRange(t *testing.T) {
b.Reset()
h.SetLevel(DEBUG)
Debug("%d, %s", 1, "OK")
Info("%d, %s", 1, "OK")
Error("%d, %s", 1, "OK")
h.SetLevelRange(INFO, WARNING)
Debug("%d, %s", 1, "OK")
Info("%d, %s", 1, "OK")
Error("%d, %s", 1, "OK")
if b.Len() != 34*4 {
t.Fail()
}
h.lRange = nil
}
func TestSetLevelRangeString(t *testing.T) {
b.Reset()
h.SetLevel(DEBUG)
Debug("%d, %s", 1, "OK")
Info("%d, %s", 1, "OK")
Error("%d, %s", 1, "OK")
h.SetLevelRangeString("INFO", "WARNING")
Debug("%d, %s", 1, "OK")
Info("%d, %s", 1, "OK")
Error("%d, %s", 1, "OK")
if b.Len() != 34*4 {
t.Fail()
}
h.lRange = nil
}
func TestSetTimeLayout(t *testing.T) {
b.Reset()
h.SetLevel(DEBUG)
h.SetTimeLayout("2006/01/02-15:04:05")
Error("%d, %s", 1, "OK")
if b.Len() != 34 {
t.Fail()
}
h.SetTimeLayout(DefaultTimeLayout)
}
func TestSetFilter(t *testing.T) {
b.Reset()
h.SetLevel(DEBUG)
h.SetFilter(func(rd *Record) bool {
return strings.Contains(rd.Message, "OK")
})
Error("%d, %s", 1, "OK")
if b.Len() != 0 {
t.Fail()
}
h.SetFilter(nil)
}
func TestLoggerHandlerName(t *testing.T) {
b.Reset()
DefaultLogger.Name = "DefaultLogger"
h.SetFormat(func(name, timeString string, rd *Record) string {
return "[" + timeString + "] " + rd.LoggerName + "." + name + " " + rd.Level.String() + " " + rd.Message + "\n"
})
Error("%d, %s", 1, "OK")
if b.Len() != 49 {
t.Fail()
}
h.SetFormat(DefaultFormat)
}
func BenchmarkEmit(bench *testing.B) {
h.SetLevel(DEBUG)
for i := 0; i < bench.N; i++ {
b.Reset()
rd := &Record{
Time: time.Now(),
Level: INFO,
Message: fmt.Sprintf("%s, %s", "Hello", "world!"),
LoggerName: "R",
}
h.Emit("SS", rd)
}
}