-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathrx_test.go
96 lines (86 loc) · 2.44 KB
/
rx_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
package gofast
import "testing"
import "bytes"
import "reflect"
func TestReadtagp(t *testing.T) {
// read tag and its payload
payload := []byte{
216, 43, 191, 216, 44, 2, 216, 45, 87, 159, 109, 116, 101, 115,
116, 116, 114, 97, 110, 115, 112, 111, 114, 116, 1, 26, 0,
160, 0, 0, 96, 255, 255}
tag, bs := readtp(payload)
// read tagMsg and its payload
if tag != tagMsg {
t.Errorf("expected %v, got %v", tagMsg, tag)
} else if bytes.Compare(payload[2:], bs) != 0 {
t.Errorf("expected %v, got %v", payload[2:], bs)
}
}
func TestUnmessage(t *testing.T) {
addr := <-testBindAddrs
lis, serverch := newServer("server", addr, "") // init server
transc := newClient("client", addr, "")
if err := transc.Handshake(); err != nil { // init client
t.Fatal(err)
}
transv := <-serverch
// read tag and its payload
payload := []byte{
216, 43, 191, 216, 44, 2, 216, 45, 82,
6, 99, 108, 105, 101, 110, 116, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
255}
_, bs := readtp(payload)
// unmessage
var wai whoamiMsg
ref := newWhoami(transc)
bmsg := transc.unmessage(100, bs)
wai.transport = transc
wai.version = transc.version
wai.Decode(bmsg.Data)
if ref.name != wai.name {
t.Errorf("expected %v, got %v", ref.name, wai.name)
} else if !reflect.DeepEqual(ref.version, wai.version) {
t.Errorf("expected %v, got %v", ref.version, wai.version)
} else if ref.buffersize != wai.buffersize {
t.Errorf("expected %v, got %v", ref.buffersize, wai.buffersize)
} else if ref.tags != wai.tags {
t.Errorf("expected %v, got %v", ref.tags, wai.tags)
}
lis.Close()
transc.Close()
transv.Close()
}
func BenchmarkReadtagp(b *testing.B) {
// read tag and its payload
payload := []byte{
216, 43, 191, 216, 44, 2, 216, 45, 87,
159, 109, 116, 101, 115, 116, 116, 114, 97, 110, 115, 112, 111,
114, 116, 1, 26, 0, 160, 0, 0, 96, 255,
255}
for i := 0; i < b.N; i++ {
readtp(payload)
}
}
func BenchmarkUnmessage(b *testing.B) {
addr := <-testBindAddrs
lis, serverch := newServer("server", addr, "") // init server
transc := newClient("client", addr, "")
if err := transc.Handshake(); err != nil { // init client
b.Fatal(err)
}
transv := <-serverch
// read tag and its payload
payload := []byte{
216, 43, 191, 216, 44, 2, 216, 45, 78,
159, 70, 99, 108, 105, 101, 110, 116, 1, 25, 2, 0, 64, 255,
255}
_, bs := readtp(payload)
b.ResetTimer()
// unmessage
for i := 0; i < b.N; i++ {
transc.unmessage(100, bs)
}
lis.Close()
transc.Close()
transv.Close()
}