1
1
package zlogsentry
2
2
3
3
import (
4
+ "errors"
5
+ "io"
4
6
"testing"
5
7
"time"
6
8
@@ -22,6 +24,9 @@ func TestParseLogEvent(t *testing.T) {
22
24
23
25
ev , ok := w .parseLogEvent (logEventJSON )
24
26
require .True (t , ok )
27
+ zLevel , err := w .parseLogLevel (logEventJSON )
28
+ assert .Nil (t , err )
29
+ ev .Level = levelsMapping [zLevel ]
25
30
26
31
assert .Equal (t , ts , ev .Timestamp )
27
32
assert .Equal (t , sentry .LevelError , ev .Level )
@@ -35,6 +40,125 @@ func TestParseLogEvent(t *testing.T) {
35
40
assert .Equal (t , "bee07485-2485-4f64-99e1-d10165884ca7" , ev .Extra ["requestId" ])
36
41
}
37
42
43
+ func TestParseLogLevel (t * testing.T ) {
44
+ w , err := New ("" )
45
+ require .Nil (t , err )
46
+
47
+ level , err := w .parseLogLevel (logEventJSON )
48
+ require .Nil (t , err )
49
+ assert .Equal (t , zerolog .ErrorLevel , level )
50
+ }
51
+
52
+ func TestWrite (t * testing.T ) {
53
+ beforeSendCalled := false
54
+ writer , err := New ("" , WithBeforeSend (func (event * sentry.Event , hint * sentry.EventHint ) * sentry.Event {
55
+ assert .Equal (t , sentry .LevelError , event .Level )
56
+ assert .Equal (t , "test message" , event .Message )
57
+ require .Len (t , event .Exception , 1 )
58
+ assert .Equal (t , "dial timeout" , event .Exception [0 ].Value )
59
+ assert .True (t , time .Since (event .Timestamp ).Minutes () < 1 )
60
+ assert .Equal (t , "bee07485-2485-4f64-99e1-d10165884ca7" , event .Extra ["requestId" ])
61
+ beforeSendCalled = true
62
+ return event
63
+ }))
64
+ require .Nil (t , err )
65
+
66
+ var zerologError error
67
+ zerolog .ErrorHandler = func (err error ) {
68
+ zerologError = err
69
+ }
70
+
71
+ // use io.MultiWriter to enforce using the Write() method
72
+ log := zerolog .New (io .MultiWriter (writer )).With ().Timestamp ().
73
+ Str ("requestId" , "bee07485-2485-4f64-99e1-d10165884ca7" ).
74
+ Logger ()
75
+ log .Err (errors .New ("dial timeout" )).
76
+ Msg ("test message" )
77
+
78
+ require .Nil (t , zerologError )
79
+ require .True (t , beforeSendCalled )
80
+ }
81
+
82
+ func TestWriteLevel (t * testing.T ) {
83
+ beforeSendCalled := false
84
+ writer , err := New ("" , WithBeforeSend (func (event * sentry.Event , hint * sentry.EventHint ) * sentry.Event {
85
+ assert .Equal (t , sentry .LevelError , event .Level )
86
+ assert .Equal (t , "test message" , event .Message )
87
+ require .Len (t , event .Exception , 1 )
88
+ assert .Equal (t , "dial timeout" , event .Exception [0 ].Value )
89
+ assert .True (t , time .Since (event .Timestamp ).Minutes () < 1 )
90
+ assert .Equal (t , "bee07485-2485-4f64-99e1-d10165884ca7" , event .Extra ["requestId" ])
91
+ beforeSendCalled = true
92
+ return event
93
+ }))
94
+ require .Nil (t , err )
95
+
96
+ var zerologError error
97
+ zerolog .ErrorHandler = func (err error ) {
98
+ zerologError = err
99
+ }
100
+
101
+ log := zerolog .New (writer ).With ().Timestamp ().
102
+ Str ("requestId" , "bee07485-2485-4f64-99e1-d10165884ca7" ).
103
+ Logger ()
104
+ log .Err (errors .New ("dial timeout" )).
105
+ Msg ("test message" )
106
+
107
+ require .Nil (t , zerologError )
108
+ require .True (t , beforeSendCalled )
109
+ }
110
+
111
+ func TestWrite_Disabled (t * testing.T ) {
112
+ beforeSendCalled := false
113
+ writer , err := New ("" ,
114
+ WithLevels (zerolog .FatalLevel ),
115
+ WithBeforeSend (func (event * sentry.Event , hint * sentry.EventHint ) * sentry.Event {
116
+ beforeSendCalled = true
117
+ return event
118
+ }))
119
+ require .Nil (t , err )
120
+
121
+ var zerologError error
122
+ zerolog .ErrorHandler = func (err error ) {
123
+ zerologError = err
124
+ }
125
+
126
+ // use io.MultiWriter to enforce using the Write() method
127
+ log := zerolog .New (io .MultiWriter (writer )).With ().Timestamp ().
128
+ Str ("requestId" , "bee07485-2485-4f64-99e1-d10165884ca7" ).
129
+ Logger ()
130
+ log .Err (errors .New ("dial timeout" )).
131
+ Msg ("test message" )
132
+
133
+ require .Nil (t , zerologError )
134
+ require .False (t , beforeSendCalled )
135
+ }
136
+
137
+ func TestWriteLevel_Disabled (t * testing.T ) {
138
+ beforeSendCalled := false
139
+ writer , err := New ("" ,
140
+ WithLevels (zerolog .FatalLevel ),
141
+ WithBeforeSend (func (event * sentry.Event , hint * sentry.EventHint ) * sentry.Event {
142
+ beforeSendCalled = true
143
+ return event
144
+ }))
145
+ require .Nil (t , err )
146
+
147
+ var zerologError error
148
+ zerolog .ErrorHandler = func (err error ) {
149
+ zerologError = err
150
+ }
151
+
152
+ log := zerolog .New (writer ).With ().Timestamp ().
153
+ Str ("requestId" , "bee07485-2485-4f64-99e1-d10165884ca7" ).
154
+ Logger ()
155
+ log .Err (errors .New ("dial timeout" )).
156
+ Msg ("test message" )
157
+
158
+ require .Nil (t , zerologError )
159
+ require .False (t , beforeSendCalled )
160
+ }
161
+
38
162
func BenchmarkParseLogEvent (b * testing.B ) {
39
163
w , err := New ("" )
40
164
if err != nil {
@@ -46,7 +170,7 @@ func BenchmarkParseLogEvent(b *testing.B) {
46
170
}
47
171
}
48
172
49
- func BenchmarkParseLogEvent_DisabledLevel (b * testing.B ) {
173
+ func BenchmarkParseLogEvent_Disabled (b * testing.B ) {
50
174
w , err := New ("" , WithLevels (zerolog .FatalLevel ))
51
175
if err != nil {
52
176
b .Errorf ("failed to create writer: %v" , err )
@@ -56,3 +180,47 @@ func BenchmarkParseLogEvent_DisabledLevel(b *testing.B) {
56
180
w .parseLogEvent (logEventJSON )
57
181
}
58
182
}
183
+
184
+ func BenchmarkWriteLogEvent (b * testing.B ) {
185
+ w , err := New ("" )
186
+ if err != nil {
187
+ b .Errorf ("failed to create writer: %v" , err )
188
+ }
189
+
190
+ for i := 0 ; i < b .N ; i ++ {
191
+ _ , _ = w .Write (logEventJSON )
192
+ }
193
+ }
194
+
195
+ func BenchmarkWriteLogEvent_Disabled (b * testing.B ) {
196
+ w , err := New ("" , WithLevels (zerolog .FatalLevel ))
197
+ if err != nil {
198
+ b .Errorf ("failed to create writer: %v" , err )
199
+ }
200
+
201
+ for i := 0 ; i < b .N ; i ++ {
202
+ _ , _ = w .Write (logEventJSON )
203
+ }
204
+ }
205
+
206
+ func BenchmarkWriteLogLevelEvent (b * testing.B ) {
207
+ w , err := New ("" )
208
+ if err != nil {
209
+ b .Errorf ("failed to create writer: %v" , err )
210
+ }
211
+
212
+ for i := 0 ; i < b .N ; i ++ {
213
+ _ , _ = w .WriteLevel (zerolog .ErrorLevel , logEventJSON )
214
+ }
215
+ }
216
+
217
+ func BenchmarkWriteLogLevelEvent_Disabled (b * testing.B ) {
218
+ w , err := New ("" , WithLevels (zerolog .FatalLevel ))
219
+ if err != nil {
220
+ b .Errorf ("failed to create writer: %v" , err )
221
+ }
222
+
223
+ for i := 0 ; i < b .N ; i ++ {
224
+ _ , _ = w .WriteLevel (zerolog .ErrorLevel , logEventJSON )
225
+ }
226
+ }
0 commit comments