-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathlog_test.go
135 lines (110 loc) · 3.43 KB
/
log_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
125
126
127
128
129
130
131
132
133
134
135
package clog
import (
"io/ioutil"
"log"
"strings"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func BenchmarkStreamMessages(b *testing.B) {
b.ReportAllocs()
streamHandler := NewStandardLogHandler(ioutil.Discard, "", log.LstdFlags)
logger := NewLogger(NewLevelFilter(LevelDebug, streamHandler))
param1 := "string"
param2 := 0
for i := 0; i < b.N; i++ {
logger.Info("Message with", param1, param2)
}
}
func BenchmarkStreamFilteredMessages(b *testing.B) {
b.ReportAllocs()
streamHandler := NewStandardLogHandler(ioutil.Discard, "", log.LstdFlags)
logger := NewLogger(NewLevelFilter(LevelWarning, streamHandler))
param1 := "string"
param2 := 0
for i := 0; i < b.N; i++ {
logger.Info("Message with", param1, param2)
}
}
func BenchmarkStreamFormattedMessages(b *testing.B) {
b.ReportAllocs()
streamHandler := NewStandardLogHandler(ioutil.Discard, "", log.LstdFlags)
logger := NewLogger(NewLevelFilter(LevelDebug, streamHandler))
param1 := "string"
param2 := 0
for i := 0; i < b.N; i++ {
logger.Infof("Message with a %s and a %d", param1, param2)
}
}
func BenchmarkStreamFilteredFormattedMessages(b *testing.B) {
b.ReportAllocs()
streamHandler := NewStandardLogHandler(ioutil.Discard, "", log.LstdFlags)
logger := NewLogger(NewLevelFilter(LevelWarning, streamHandler))
param1 := "string"
param2 := 0
for i := 0; i < b.N; i++ {
logger.Infof("Message with a %s and a %d", param1, param2)
}
}
func TestDefaultHandler(t *testing.T) {
// Initial type
defer SetDefaultLogger(nil)
assert.IsType(t, new(overflowHandler), GetDefaultLogger().GetHandler())
// Custom type
SetDefaultLogger(NewConsoleLogger())
assert.IsType(t, new(ConsoleHandler), GetDefaultLogger().GetHandler())
// Overflow behaviour
SetDefaultLogger(nil)
require.IsType(t, new(overflowHandler), GetDefaultLogger().GetHandler())
handler := GetDefaultLogger().GetHandler().(*overflowHandler)
assert.Equal(t, defaultLogBufferSize, handler.overflowSize)
assert.True(t, handler.Empty())
for handler == GetDefaultLogger().GetHandler() {
Info("log line")
}
assert.IsType(t, new(DiscardHandler), GetDefaultLogger().GetHandler())
}
func TestSetDefaultHandler(t *testing.T) {
// Initial type
defer SetDefaultLogger(nil)
SetDefaultLogger(nil)
Info("log line")
handler := NewMemoryHandler()
assert.True(t, handler.Empty())
GetDefaultLogger().SetHandler(handler)
assert.Same(t, handler, GetDefaultLogger().GetHandler())
assert.Equal(t, []string{"log line"}, handler.Logs())
}
func TestSetDefaultLogger(t *testing.T) {
// Initial type
defer SetDefaultLogger(nil)
SetDefaultLogger(nil)
Info("log line")
handler := NewMemoryHandler()
logger := NewLogger(handler)
assert.True(t, handler.Empty())
SetDefaultLogger(logger)
assert.Same(t, logger, GetDefaultLogger())
assert.Same(t, handler, GetDefaultLogger().GetHandler())
assert.Equal(t, []string{"log line"}, handler.Logs())
}
func TestPackage(t *testing.T) {
SetDefaultLogger(NewConsoleLogger())
defer SetDefaultLogger(nil)
buffer := &strings.Builder{}
handler := defaultLogger.GetHandler().(*ConsoleHandler)
handler.Colouring(false)
handler.logger.SetOutput(buffer)
Trace("trace")
Tracef("%s", "trace")
Debug("debug")
Debugf("%s", "debug")
Info("info")
Infof("%s", "info")
Warning("warning")
Warningf("%s", "warning")
Error("error")
Errorf("%s", "error")
assert.Equal(t, "trace\ntrace\ndebug\ndebug\ninfo\ninfo\nwarning\nwarning\nerror\nerror\n", buffer.String())
}