Files
statuspanel/internal/probe/probe_test.go
2026-07-05 14:26:03 -03:00

100 lines
2.8 KiB
Go

package probe
import (
"net"
"testing"
)
func TestHumanizeBitsPerSecond(t *testing.T) {
tests := []struct {
name string
rate float64
want string
}{
{name: "bits", rate: 999, want: "999 bit/s"},
{name: "kilobits", rate: 1500, want: "1.50 kbit/s"},
{name: "megabits", rate: 2500000, want: "2.50 Mbit/s"},
{name: "gigabits", rate: 4200000000, want: "4.20 Gbit/s"},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := HumanizeBitsPerSecond(tt.rate); got != tt.want {
t.Fatalf("HumanizeBitsPerSecond(%v) = %q, want %q", tt.rate, got, tt.want)
}
})
}
}
func TestParseNetDev(t *testing.T) {
data := []byte(`Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 1000 0 0 0 0 0 0 0 2000 0 0 0 0 0 0 0
eth0: 12345 1 0 0 0 0 0 0 67890 2 0 0 0 0 0 0
`)
stats, err := parseNetDev(data, "eth0")
if err != nil {
t.Fatalf("parseNetDev() error = %v", err)
}
if stats.RXBytes != 12345 || stats.TXBytes != 67890 {
t.Fatalf("stats = %+v, want rx 12345 tx 67890", stats)
}
}
func TestLittleEndianHexIPv4(t *testing.T) {
ip, err := littleEndianHexIPv4("0102A8C0")
if err != nil {
t.Fatalf("littleEndianHexIPv4() error = %v", err)
}
if !ip.Equal(net.IPv4(192, 168, 2, 1)) {
t.Fatalf("ip = %v, want 192.168.2.1", ip)
}
}
func TestParseLinuxDefaultGateway(t *testing.T) {
t.Run("explicit gateway default route", func(t *testing.T) {
data := []byte(`Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT
eth0 00000000 0102A8C0 0003 0 0 100 00000000 0 0 0
`)
ip, err := parseLinuxDefaultGateway(data, "eth0")
if err != nil {
t.Fatalf("parseLinuxDefaultGateway() error = %v", err)
}
if !ip.Equal(net.IPv4(192, 168, 2, 1)) {
t.Fatalf("ip = %v, want 192.168.2.1", ip)
}
})
t.Run("point to point peer route", func(t *testing.T) {
data := []byte(`Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT
ppp0 00000000 00000000 0001 0 0 0 00000000 0 0 0
ppp0 0100400A 00000000 0005 0 0 0 FFFFFFFF 0 0 0
`)
ip, err := parseLinuxDefaultGateway(data, "ppp0")
if err != nil {
t.Fatalf("parseLinuxDefaultGateway() error = %v", err)
}
if !ip.Equal(net.IPv4(10, 64, 0, 1)) {
t.Fatalf("ip = %v, want 10.64.0.1", ip)
}
})
t.Run("prefers explicit gateway over peer route", func(t *testing.T) {
data := []byte(`Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT
ppp0 00000000 FE00400A 0003 0 0 0 00000000 0 0 0
ppp0 0100400A 00000000 0005 0 0 0 FFFFFFFF 0 0 0
`)
ip, err := parseLinuxDefaultGateway(data, "ppp0")
if err != nil {
t.Fatalf("parseLinuxDefaultGateway() error = %v", err)
}
if !ip.Equal(net.IPv4(10, 64, 0, 254)) {
t.Fatalf("ip = %v, want 10.64.0.254", ip)
}
})
}