-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlogger_test.go
89 lines (80 loc) · 1.48 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
package franz
import (
"errors"
"io"
"reflect"
"testing"
)
type mockCloser struct {
closed int
err error
}
func (m *mockCloser) Close() error {
m.closed++
return m.err
}
type mockLoggerEvent struct {
event string
err error
data map[string]string
}
type mockLoggerGauge struct {
gauge string
value float64
}
type mockLogger struct {
events []mockLoggerEvent
gauges []mockLoggerGauge
}
func (m *mockLogger) Event(event string, err error, data map[string]string) {
m.events = append(m.events, mockLoggerEvent{
event: event,
err: err,
data: data,
})
}
func (m *mockLogger) Gauge(gauge string, value float64) {
m.gauges = append(m.gauges, mockLoggerGauge{
gauge: gauge,
value: value,
})
}
func TestCloseAndLog(t *testing.T) {
tests := []struct {
err error
mc *mockCloser
me []mockLoggerEvent
}{
{},
{
mc: &mockCloser{},
},
{
err: errors.New("test error"),
mc: &mockCloser{},
me: []mockLoggerEvent{
mockLoggerEvent{
event: "test_event",
err: errors.New("test error"),
data: nil,
},
},
},
}
for _, tt := range tests {
t.Logf("testing: %+v", tt)
ml := &mockLogger{}
var closer io.Closer
if tt.mc != nil {
closer = tt.mc
tt.mc.err = tt.err
}
closeAndLog(ml, closer, "test_event")
if tt.mc != nil && tt.mc.closed != 1 {
t.Errorf("tt.mc.closed = %d; expected 1", tt.mc.closed)
}
if !reflect.DeepEqual(ml.events, tt.me) {
t.Errorf("ml.events = %#v; expected %#v", ml.events, tt.me)
}
}
}