-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdecode_test.go
115 lines (104 loc) · 4.71 KB
/
decode_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
package mndp_test
import (
"fmt"
"log"
"testing"
"time"
"github.com/bgptools/mndp"
)
func TestDecode(t *testing.T) {
pkt, err := mndp.DecodePacket([]byte("\x63\x2f\x01\x00\x00\x01\x00\x06\xb8\x69\xf4\xbe\x3c\x29\x00\x05" +
"\x00\x15\x47\x4e\x53\x5f\x53\x41\x49\x58\x5f\x54\x45\x52\x41\x43" +
"\x4f\x5f\x43\x43\x52\x30\x31\x00\x07\x00\x13\x36\x2e\x34\x37\x2e" +
"\x31\x30\x20\x28\x6c\x6f\x6e\x67\x2d\x74\x65\x72\x6d\x29\x00\x08" +
"\x00\x08\x4d\x69\x6b\x72\x6f\x54\x69\x6b\x00\x0a\x00\x04\x4d\x25" +
"\x47\x00\x00\x0b\x00\x09\x33\x47\x4e\x58\x2d\x41\x37\x53\x47\x00" +
"\x0c\x00\x0f\x43\x43\x52\x31\x30\x31\x36\x2d\x31\x32\x53\x2d\x31" +
"\x53\x2b\x00\x0e\x00\x01\x00\x00\x10\x00\x04\x73\x66\x70\x35\x00" +
"\x11\x00\x04\xc4\xdf\x1f\x2a"))
if err != nil {
t.FailNow()
}
log.Printf("%v", pkt)
pkt2, err := mndp.DecodePacket([]byte("\x64\x2f\x01\x00\x00\x01\x00\x06\xb8\x69\xf4\xbe\x3c\x29\x00\x05" +
"\x00\x15\x47\x4e\x53\x5f\x53\x41\x49\x58\x5f\x54\x45\x52\x41\x43" +
"\x4f\x5f\x43\x43\x52\x30\x31\x00\x07\x00\x13\x36\x2e\x34\x37\x2e" +
"\x31\x30\x20\x28\x6c\x6f\x6e\x67\x2d\x74\x65\x72\x6d\x29\x00\x08" +
"\x00\x08\x4d\x69\x6b\x72\x6f\x54\x69\x6b\x00\x0a\x00\x04\x89\x25" +
"\x47\x00\x00\x0b\x00\x09\x33\x47\x4e\x58\x2d\x41\x37\x53\x47\x00" +
"\x0c\x00\x0f\x43\x43\x52\x31\x30\x31\x36\x2d\x31\x32\x53\x2d\x31" +
"\x53\x2b\x00\x0e\x00\x01\x00\x00\x10\x00\x04\x73\x66\x70\x35\x00" +
"\x11\x00\x04\xc4\xdf\x1f\x2a"))
if err != nil {
t.FailNow()
}
log.Printf("%v", pkt2)
if !(pkt2.SeqNo > pkt.SeqNo) {
t.FailNow()
}
pktUptime := time.Duration(0)
pkt2Uptime := time.Duration(0)
for _, v := range pkt.Parts {
if v.Type == mndp.MMDPTypeUptime {
pktUptime = v.Value.(time.Duration)
}
}
for _, v := range pkt2.Parts {
if v.Type == mndp.MMDPTypeUptime {
pkt2Uptime = v.Value.(time.Duration)
}
}
if !(pktUptime < pkt2Uptime) {
t.FailNow()
}
}
func ExampleDecodePacket() {
pkt2, err := mndp.DecodePacket([]byte("\x64\x2f\x01\x00\x00\x01\x00\x06\xb8\x69\xf4\xbe\x3c\x29\x00\x05" +
"\x00\x15\x47\x4e\x53\x5f\x53\x41\x49\x58\x5f\x54\x45\x52\x41\x43" +
"\x4f\x5f\x43\x43\x52\x30\x31\x00\x07\x00\x13\x36\x2e\x34\x37\x2e" +
"\x31\x30\x20\x28\x6c\x6f\x6e\x67\x2d\x74\x65\x72\x6d\x29\x00\x08" +
"\x00\x08\x4d\x69\x6b\x72\x6f\x54\x69\x6b\x00\x0a\x00\x04\x89\x25" +
"\x47\x00\x00\x0b\x00\x09\x33\x47\x4e\x58\x2d\x41\x37\x53\x47\x00" +
"\x0c\x00\x0f\x43\x43\x52\x31\x30\x31\x36\x2d\x31\x32\x53\x2d\x31" +
"\x53\x2b\x00\x0e\x00\x01\x00\x00\x10\x00\x04\x73\x66\x70\x35\x00" +
"\x11\x00\x04\xc4\xdf\x1f\x2a"))
if err != nil {
return
}
fmt.Printf("%#v", pkt2)
}
func FuzzDecode(f *testing.F) {
f.Add([]byte("\x63\x2f\x01\x00\x00\x01\x00\x06\xb8\x69\xf4\xbe\x3c\x29\x00\x05" +
"\x00\x15\x47\x4e\x53\x5f\x53\x41\x49\x58\x5f\x54\x45\x52\x41\x43" +
"\x4f\x5f\x43\x43\x52\x30\x31\x00\x07\x00\x13\x36\x2e\x34\x37\x2e" +
"\x31\x30\x20\x28\x6c\x6f\x6e\x67\x2d\x74\x65\x72\x6d\x29\x00\x08" +
"\x00\x08\x4d\x69\x6b\x72\x6f\x54\x69\x6b\x00\x0a\x00\x04\x4d\x25" +
"\x47\x00\x00\x0b\x00\x09\x33\x47\x4e\x58\x2d\x41\x37\x53\x47\x00" +
"\x0c\x00\x0f\x43\x43\x52\x31\x30\x31\x36\x2d\x31\x32\x53\x2d\x31" +
"\x53\x2b\x00\x0e\x00\x01\x00\x00\x10\x00\x04\x73\x66\x70\x35\x00" +
"\x11\x00\x04\xc4\xdf\x1f\x2a"))
f.Add([]byte("\x64\x2f\x01\x00\x00\x01\x00\x06\xb8\x69\xf4\xbe\x3c\x29\x00\x05" +
"\x00\x15\x47\x4e\x53\x5f\x53\x41\x49\x58\x5f\x54\x45\x52\x41\x43" +
"\x4f\x5f\x43\x43\x52\x30\x31\x00\x07\x00\x13\x36\x2e\x34\x37\x2e" +
"\x31\x30\x20\x28\x6c\x6f\x6e\x67\x2d\x74\x65\x72\x6d\x29\x00\x08" +
"\x00\x08\x4d\x69\x6b\x72\x6f\x54\x69\x6b\x00\x0a\x00\x04\x89\x25" +
"\x47\x00\x00\x0b\x00\x09\x33\x47\x4e\x58\x2d\x41\x37\x53\x47\x00" +
"\x0c\x00\x0f\x43\x43\x52\x31\x30\x31\x36\x2d\x31\x32\x53\x2d\x31" +
"\x53\x2b\x00\x0e\x00\x01\x00\x00\x10\x00\x04\x73\x66\x70\x35\x00" +
"\x11\x00\x04\xc4\xdf\x1f\x2a"))
f.Add([]byte("\x2e\xbe\x00\x00\x00\x01\x00\x06\x48\x8f\x5a\x7c\xc0\xb3\x00\x05" +
"\x00\x28\x65\x64\x67\x65\x2d\x31\x2d\x74\x65\x72\x61\x63\x6f\x2d" +
"\x6b\x7a\x6e\x2d\x64\x63\x31\x2e\x68\x75\x67\x65\x6e\x65\x74\x77" +
"\x6f\x72\x6b\x73\x2e\x63\x6f\x2e\x7a\x61\x00\x07\x00\x0f\x36\x2e" +
"\x34\x37\x2e\x38\x20\x28\x73\x74\x61\x62\x6c\x65\x29\x00\x08\x00" +
"\x08\x4d\x69\x6b\x72\x6f\x54\x69\x6b\x00\x0a\x00\x04\xec\xca\x58" +
"\x01\x00\x0b\x00\x09\x4b\x44\x33\x32\x2d\x50\x44\x41\x54\x00\x0c" +
"\x00\x0e\x43\x43\x52\x31\x30\x33\x36\x2d\x38\x47\x2d\x32\x53\x2b" +
"\x00\x0e\x00\x01\x01\x00\x0f\x00\x10\x20\x01\x43\xf8\x01\xf2\x00" +
"\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x10\x00\x16\x73\x66\x70" +
"\x2d\x73\x66\x70\x70\x6c\x75\x73\x31\x2e\x31\x35\x32\x35\x2e\x44" +
"\x49\x4e\x58\x00\x11\x00\x04\xc4\xdf\x1e\x4b"))
f.Fuzz(func(t *testing.T, b []byte) {
mndp.DecodePacket(b)
})
}