-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathclient_test.go
84 lines (70 loc) · 1.94 KB
/
client_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
package eventkit
import (
"context"
"reflect"
"testing"
"time"
"storj.io/eventkit/pb"
"storj.io/eventkit/transport"
)
func BenchmarkOutgoingPacket(b *testing.B) {
client := NewUDPClient("application", "v1.0.0", "instance", "127.0.0.1:99999")
event := &Event{
Name: "Name",
Scope: []string{"alpha", "beta"},
Tags: []*pb.Tag{String("key", "value")},
}
b.ReportAllocs()
b.ResetTimer()
for i := 0; i < b.N; i++ {
packet := client.newOutgoingPacket()
for k := 0; k < 70; k++ {
event.Timestamp = event.Timestamp.Add(100 * time.Millisecond)
full := packet.addEvent(&Event{})
if full {
b.Fatal("filled internal buffer")
}
}
_ = packet.finalize()
}
}
func TestZeroValueType(t *testing.T) {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
l, err := transport.ListenUDP("127.0.0.1:0")
requireNoError(t, err)
defer l.Close()
go func() {
client := NewUDPClient("application", "v1.0.0", "instance", l.LocalAddr().String())
client.FlushInterval = time.Millisecond
go client.Run(ctx)
event := &Event{
Name: "Name",
Scope: []string{"package/name"},
Tags: []*pb.Tag{Int64("key", 0)},
}
client.Submit(event)
}()
payload, _, err := l.Next()
requireNoError(t, err)
packet, err := transport.ParsePacket(payload)
requireNoError(t, err)
requireEqual(t, len(packet.Events), 1)
requireEqual(t, packet.Events[0].Name, "Name")
requireEqual(t, packet.Events[0].Scope, []string{"package/name"})
requireEqual(t, len(packet.Events[0].Tags), 1)
requireEqual(t, packet.Events[0].Tags[0].Key, "key")
val, ok := packet.Events[0].Tags[0].Value.(*pb.Tag_Int64)
requireEqual(t, ok, true)
requireEqual(t, val.Int64, int64(0))
}
func requireNoError(t *testing.T, err error) {
if err != nil {
t.Fatalf("unexpected error: %+v", err)
}
}
func requireEqual(t *testing.T, actual, expected any) {
if !reflect.DeepEqual(actual, expected) {
t.Fatalf("equality expected: %q vs %q", actual, expected)
}
}