Skip to content

Commit 08db87b

Browse files
committed
Add tests for NetBSD's net implementation.
1 parent 37101c6 commit 08db87b

3 files changed

Lines changed: 84 additions & 0 deletions

File tree

net/net_netbsd_test.go

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
// SPDX-License-Identifier: BSD-3-Clause
2+
package net
3+
4+
import (
5+
"os"
6+
"path/filepath"
7+
"runtime"
8+
"testing"
9+
10+
"github.com/stretchr/testify/assert"
11+
"github.com/stretchr/testify/require"
12+
)
13+
14+
func TestParseNetstat(t *testing.T) {
15+
if runtime.GOOS != "netbsd" {
16+
t.SkipNow()
17+
}
18+
19+
tests := []struct {
20+
file string
21+
mode string
22+
// expected values per interface name
23+
want map[string]IOCountersStat
24+
}{
25+
{
26+
file: "netstat_inb.txt",
27+
mode: "inb",
28+
want: map[string]IOCountersStat{
29+
"vioif": {Name: "vioif", BytesRecv: 3716508243, BytesSent: 2240547599},
30+
"lo0": {Name: "lo0", BytesRecv: 41764800, BytesSent: 41764800},
31+
},
32+
},
33+
{
34+
file: "netstat_ind.txt",
35+
mode: "ind",
36+
want: map[string]IOCountersStat{
37+
"vioif": {Name: "vioif", PacketsRecv: 11524361, PacketsSent: 18735351},
38+
"lo0": {Name: "lo0", PacketsRecv: 835296, PacketsSent: 835296},
39+
},
40+
},
41+
}
42+
43+
for _, tt := range tests {
44+
t.Run(tt.file, func(t *testing.T) {
45+
data, err := os.ReadFile(filepath.Join("testdata", "netbsd", tt.file))
46+
require.NoErrorf(t, err, "reading %s", tt.file)
47+
48+
iocs := make(map[string]IOCountersStat)
49+
err = parseNetstat(string(data), tt.mode, iocs)
50+
require.NoErrorf(t, err, "parseNetstat(%s)", tt.file)
51+
52+
require.Len(t, iocs, len(tt.want), "unexpected number of interfaces")
53+
54+
for name, want := range tt.want {
55+
got, ok := iocs[name]
56+
require.Truef(t, ok, "interface %q not found in parsed output", name)
57+
assert.Equal(t, want.Name, got.Name)
58+
if tt.mode == "inb" {
59+
assert.Equal(t, want.BytesRecv, got.BytesRecv, "%s BytesRecv", name)
60+
assert.Equal(t, want.BytesSent, got.BytesSent, "%s BytesSent", name)
61+
} else {
62+
assert.Equal(t, want.PacketsRecv, got.PacketsRecv, "%s PacketsRecv", name)
63+
assert.Equal(t, want.PacketsSent, got.PacketsSent, "%s PacketsSent", name)
64+
}
65+
}
66+
})
67+
}
68+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Name Mtu Network Address Ibytes Obytes
2+
vioif 1500 <Link> 58:9c:fc:0c:f0:97 3716508243 2240547599
3+
vioif 1500 172.16.0/24 172.16.0.5 3716508243 2240547599
4+
vioif 1500 fe80::/64 fe80::5a9c:fcff:f 3716508243 2240547599
5+
lo0 33624 <Link> 41764800 41764800
6+
lo0 33624 127/8 127.0.0.1 41764800 41764800
7+
lo0 33624 ::1/128 ::1 41764800 41764800
8+
lo0 33624 fe80::/64 fe80::1 41764800 41764800
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Name Mtu Network Address Ipkts Ierrs Idrops Opkts Oerrs Colls Odrops
2+
vioif 1500 <Link> 58:9c:fc:0c:f0:97 11524361 0 0 18735351 0 0 0
3+
vioif 1500 172.16.0/24 172.16.0.5 11524361 0 0 18735351 0 0 0
4+
vioif 1500 fe80::/64 fe80::5a9c:fcff:f 11524361 0 0 18735351 0 0 0
5+
lo0 33624 <Link> 835296 0 0 835296 0 0 0
6+
lo0 33624 127/8 127.0.0.1 835296 0 0 835296 0 0 0
7+
lo0 33624 ::1/128 ::1 835296 0 0 835296 0 0 0
8+
lo0 33624 fe80::/64 fe80::1 835296 0 0 835296 0 0 0

0 commit comments

Comments
 (0)