65 lines
1.7 KiB
Go
65 lines
1.7 KiB
Go
package metrics
|
|
|
|
import "testing"
|
|
|
|
func TestParseProcStat(t *testing.T) {
|
|
data := "cpu 10 20 30 40 50 60 70 80 90 100\n"
|
|
stat, err := ParseProcStat(data)
|
|
if err != nil {
|
|
t.Fatalf("parse: %v", err)
|
|
}
|
|
if stat.Total != 550 {
|
|
t.Fatalf("total mismatch: %d", stat.Total)
|
|
}
|
|
if stat.Idle != 90 {
|
|
t.Fatalf("idle mismatch: %d", stat.Idle)
|
|
}
|
|
}
|
|
|
|
func TestParseMemInfo(t *testing.T) {
|
|
data := "MemTotal: 1000 kB\nMemAvailable: 400 kB\nMemFree: 100 kB\nBuffers: 50 kB\nCached: 200 kB\n"
|
|
mem, err := ParseMemInfo(data)
|
|
if err != nil {
|
|
t.Fatalf("parse: %v", err)
|
|
}
|
|
if mem.TotalKB != 1000 || mem.AvailableKB != 400 || mem.CachedKB != 200 {
|
|
t.Fatalf("mem mismatch: %+v", mem)
|
|
}
|
|
}
|
|
|
|
func TestParseNetDev(t *testing.T) {
|
|
data := "Inter-| Receive | Transmit\n" +
|
|
" face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed\n" +
|
|
" lo: 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0\n" +
|
|
"eth0: 100 0 0 0 0 0 0 0 200 0 0 0 0 0 0 0\n"
|
|
netio, err := ParseNetDev(data)
|
|
if err != nil {
|
|
t.Fatalf("parse: %v", err)
|
|
}
|
|
if netio.RxBytes != 100 || netio.TxBytes != 200 {
|
|
t.Fatalf("net mismatch: %+v", netio)
|
|
}
|
|
}
|
|
|
|
func TestParseDiskStats(t *testing.T) {
|
|
data := " 8 0 sda 1 0 10 0 2 0 20 0 0 0 0 0 0\n"
|
|
io, err := ParseDiskStats(data)
|
|
if err != nil {
|
|
t.Fatalf("parse: %v", err)
|
|
}
|
|
if io.ReadBytes != 10*512 || io.WriteBytes != 20*512 {
|
|
t.Fatalf("disk io mismatch: %+v", io)
|
|
}
|
|
}
|
|
|
|
func TestParseLoadAvg(t *testing.T) {
|
|
data := "0.10 0.20 0.30 1/100 1234\n"
|
|
la, err := ParseLoadAvg(data)
|
|
if err != nil {
|
|
t.Fatalf("parse: %v", err)
|
|
}
|
|
if la.One != 0.10 || la.Five != 0.20 || la.Fifteen != 0.30 {
|
|
t.Fatalf("load mismatch: %+v", la)
|
|
}
|
|
}
|