forked from gocraft/health
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjson_writer_sink_test.go
118 lines (94 loc) · 2.68 KB
/
json_writer_sink_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 health
import (
"bytes"
"encoding/json"
"errors"
"testing"
"github.com/stretchr/testify/assert"
)
type testJsonEvent struct {
Job string
Event string
Timestamp string
Err string
Nanoseconds int64
Status string
Kvs map[string]string
}
func TestJsonWriterSinkEvent(t *testing.T) {
var buf bytes.Buffer
someKvs := map[string]string{"foo": "bar", "qux": "dog"}
sink := JsonWriterSink{&buf}
sink.EmitEvent("myjob", "myevent", someKvs)
dec := json.NewDecoder(&buf)
event := &testJsonEvent{}
err := dec.Decode(event)
assert.NoError(t, err)
assert.Equal(t, "bar", event.Kvs["foo"])
assert.Equal(t, "myjob", event.Job)
assert.Equal(t, "myevent", event.Event)
}
func TestJsonWriterSinkEventErr(t *testing.T) {
var buf bytes.Buffer
sink := JsonWriterSink{&buf}
someKvs := map[string]string{"foo": "bar", "qux": "dog"}
sink.EmitEventErr("myjob", "myevent", errors.New("test err"), someKvs)
dec := json.NewDecoder(&buf)
event := &testJsonEvent{}
err := dec.Decode(event)
assert.NoError(t, err)
assert.Equal(t, "bar", event.Kvs["foo"])
assert.Equal(t, "myjob", event.Job)
assert.Equal(t, "myevent", event.Event)
assert.Equal(t, "test err", event.Err)
}
func TestJsonWriterSinkEventTiming(t *testing.T) {
var buf bytes.Buffer
sink := JsonWriterSink{&buf}
someKvs := map[string]string{"foo": "bar", "qux": "dog"}
sink.EmitTiming("myjob", "myevent", 34567890, someKvs)
event := &testJsonEvent{}
dec := json.NewDecoder(&buf)
err := dec.Decode(event)
assert.NoError(t, err)
assert.Equal(t, "bar", event.Kvs["foo"])
assert.Equal(t, "myjob", event.Job)
assert.Equal(t, "myevent", event.Event)
assert.EqualValues(t, 34567890, event.Nanoseconds)
}
func TestJsonWriterSinkEventComplete(t *testing.T) {
var buf bytes.Buffer
dec := json.NewDecoder(&buf)
for kind, kindStr := range completionStatusToString {
sink := JsonWriterSink{&buf}
sink.EmitComplete("myjob", kind, 1204000, nil)
event := &testJsonEvent{}
err := dec.Decode(event)
assert.NoError(t, err)
assert.Equal(t, "myjob", event.Job)
assert.Equal(t, kindStr, event.Status)
assert.EqualValues(t, 1204000, event.Nanoseconds)
buf.Reset()
}
}
func BenchmarkJsonWriterSinkEmitBlankEvent(b *testing.B) {
var buf bytes.Buffer
sink := JsonWriterSink{&buf}
b.ResetTimer()
for i := 0; i < b.N; i++ {
buf.Reset()
sink.EmitEvent("myjob", "myevent", nil)
}
b.ReportAllocs()
}
func BenchmarkJsonWriterSinkEmitSmallEvent(b *testing.B) {
var buf bytes.Buffer
someKvs := map[string]string{"foo": "bar", "qux": "dog"}
sink := JsonWriterSink{&buf}
b.ResetTimer()
for i := 0; i < b.N; i++ {
buf.Reset()
sink.EmitEvent("myjob", "myevent", someKvs)
}
b.ReportAllocs()
}