Files
havline-native/app-src/internal/sysinfo/sysinfo_test.go
T

62 lines
2.1 KiB
Go
Raw Normal View History

package sysinfo
import "testing"
func TestCPUPercent(t *testing.T) {
prev := CPUSample{Total: 1000, Idle: 400}
if got := CPUPercent(prev, CPUSample{Total: 1200, Idle: 500}); got != 50 {
t.Fatalf("expected 50%%, got %v", got)
}
// 首次采样(prev 为零值)不给出占用率
if got := CPUPercent(CPUSample{}, CPUSample{Total: 1200, Idle: 500}); got != 0 {
t.Fatalf("expected 0 on first sample, got %v", got)
}
// 计数器未前进
if got := CPUPercent(prev, prev); got != 0 {
t.Fatalf("expected 0 when counters stalled, got %v", got)
}
}
func TestParseProcStat(t *testing.T) {
raw := "cpu 100 20 80 400 10 0 5 0 0 0\ncpu0 1 2 3 4 5 6 7 8 9 10\n"
sample := parseProcStat(raw)
// 总时间 100+20+80+400+10+0+5 = 615,空闲 400(idle)+10(iowait) = 410
if sample.Total != 615 || sample.Idle != 410 {
t.Fatalf("unexpected sample: %+v", sample)
}
}
func TestParseMemInfo(t *testing.T) {
raw := "MemTotal: 16384000 kB\nMemFree: 1000000 kB\nMemAvailable: 8192000 kB\n"
total, used := parseMemInfo(raw)
if total != 16384000*1024 {
t.Fatalf("unexpected total: %d", total)
}
if used != (16384000-8192000)*1024 {
t.Fatalf("unexpected used: %d", used)
}
// 缺少 MemAvailable 时回落到 MemFree + Buffers + Cached
fallback := "MemTotal: 1000 kB\nMemFree: 200 kB\nBuffers: 100 kB\nCached: 300 kB\n"
total, used = parseMemInfo(fallback)
if total != 1000*1024 || used != 400*1024 {
t.Fatalf("unexpected fallback: total=%d used=%d", total, used)
}
}
func TestReadReportsHostResources(t *testing.T) {
stats, sample := Read(CPUSample{})
if stats.MemTotalBytes == 0 && stats.DiskTotalBytes == 0 {
t.Skip("当前平台未实现资源采集")
}
if stats.MemTotalBytes == 0 || stats.MemUsedBytes > stats.MemTotalBytes {
t.Fatalf("unexpected memory: used=%d total=%d", stats.MemUsedBytes, stats.MemTotalBytes)
}
if stats.DiskTotalBytes == 0 || stats.DiskUsedBytes > stats.DiskTotalBytes {
t.Fatalf("unexpected disk: used=%d total=%d", stats.DiskUsedBytes, stats.DiskTotalBytes)
}
if sample.Total == 0 {
t.Fatalf("expected non-zero cpu counters")
}
}