Skip to content

Commit 8c3c0b5

Browse files
author
shadowy-pycoder
committed
Added basic tests for tcp and udp parsers
1 parent b394f46 commit 8c3c0b5

File tree

4 files changed

+89
-0
lines changed

4 files changed

+89
-0
lines changed

layers/tcp_test.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package layers
2+
3+
import (
4+
"fmt"
5+
"io"
6+
"testing"
7+
8+
"github.com/stretchr/testify/require"
9+
)
10+
11+
func BenchmarkParseTCP(b *testing.B) {
12+
packet, close := testPacketBench(b, "tcp")
13+
defer close()
14+
b.ResetTimer()
15+
tcp := &TCPSegment{}
16+
for i := 0; i < b.N; i++ {
17+
_ = tcp.Parse(packet)
18+
fmt.Fprint(io.Discard, tcp.String())
19+
}
20+
}
21+
22+
func TestParseTCP(t *testing.T) {
23+
expected := &TCPSegment{
24+
SrcPort: 42776,
25+
DstPort: 443,
26+
SeqNumber: 2726715057,
27+
AckNumber: 0,
28+
DataOffset: 10,
29+
Reserved: 0,
30+
Flags: &TCPFlags{
31+
Raw: 2,
32+
SYN: 1,
33+
},
34+
WindowSize: 64240,
35+
Checksum: 30263,
36+
Options: []byte{
37+
0x02, 0x04, 0x05, 0xb4, 0x04, 0x02, 0x08, 0x0a, 0xac, 0xf8,
38+
0x48, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07},
39+
payload: []byte{},
40+
}
41+
tcp := &TCPSegment{}
42+
packet, close := testPacket(t, "tcp")
43+
defer close()
44+
if err := tcp.Parse(packet); err != nil {
45+
t.Fatal(err)
46+
}
47+
require.Equal(t, expected, tcp)
48+
}

layers/testdata/tcp.bin

40 Bytes
Binary file not shown.

layers/testdata/udp.bin

52 Bytes
Binary file not shown.

layers/udp_test.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package layers
2+
3+
import (
4+
"fmt"
5+
"io"
6+
"testing"
7+
8+
"github.com/stretchr/testify/require"
9+
)
10+
11+
func BenchmarkParseUDP(b *testing.B) {
12+
packet, close := testPacketBench(b, "udp")
13+
defer close()
14+
b.ResetTimer()
15+
udp := &UDPSegment{}
16+
for i := 0; i < b.N; i++ {
17+
_ = udp.Parse(packet)
18+
fmt.Fprint(io.Discard, udp.String())
19+
}
20+
}
21+
22+
func TestParseUDP(t *testing.T) {
23+
expected := &UDPSegment{
24+
SrcPort: 33168,
25+
DstPort: 53,
26+
UDPLength: 52,
27+
Checksum: 3985,
28+
payload: []byte{
29+
0xa8, 0x24, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
30+
0x01, 0x03, 0x77, 0x77, 0x77, 0x07, 0x67, 0x73, 0x74, 0x61, 0x74,
31+
0x69, 0x63, 0x03, 0x63, 0x6f, 0x6d, 0x00, 0x00, 0x41, 0x00, 0x01,
32+
0x00, 0x00, 0x29, 0x05, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
33+
}
34+
udp := &UDPSegment{}
35+
packet, close := testPacket(t, "udp")
36+
defer close()
37+
if err := udp.Parse(packet); err != nil {
38+
t.Fatal(err)
39+
}
40+
require.Equal(t, expected, udp)
41+
}

0 commit comments

Comments
 (0)