Files
zogo/monitor/monitor_test.go
4566704 30a0889ffa feat(monitor): 自 go-hua 迁入系统资源监控
- Start 后台每秒采集(CPU/内存/磁盘/网络/进程/连接/主机), GetInfo 取快照
- 基于 gopsutil, 附测试、examples/monitor 例程与包 README
2026-09-20 12:29:37 +08:00

83 lines
2.4 KiB
Go

package monitor
import "testing"
func TestToLiteInfo(t *testing.T) {
info := MonInfo{
Ver: "1.0.0",
Cpu: CpuInfo{
CpuBaseInfo: CpuBaseInfo{
Core: 4,
Logic: 8,
Info: []CPU{{CPU: 0, ModelName: "TestCPU"}},
},
CpuUsedInfo: CpuUsedInfo{UsedPercent: 55.5},
},
Mem: MemInfo{Total: 16 * 1024 * 1024 * 1024, UsedPercent: 60},
Load: LoadInfo{Load1: 0.5},
Net: []NetInfo{
{Name: "eth0", BytesSent: 10, BytesRecv: 20, PacketsSent: 1, PacketsRecv: 2, TotalBytesSent: 100, TotalBytesRecv: 200},
{Name: "eth1", BytesSent: 30, BytesRecv: 40, PacketsSent: 3, PacketsRecv: 4, TotalBytesSent: 300, TotalBytesRecv: 400},
},
Disk: []DiskInfo{
{Device: "C:", MountPoint: "C:\\", UsedPercent: 80, UsedVolume: "80GB", ReadBytes: 5, WriteBytes: 6},
},
}
lite := ToLiteInfo(info)
if lite.Ver != "1.0.0" {
t.Errorf("Ver = %q", lite.Ver)
}
if lite.Cpu.Core != 4 || lite.Cpu.Logic != 8 {
t.Errorf("Cpu Core/Logic = %d/%d, want 4/8", lite.Cpu.Core, lite.Cpu.Logic)
}
if lite.Cpu.UsedPercent != 55.5 {
t.Errorf("Cpu.UsedPercent = %v", lite.Cpu.UsedPercent)
}
if len(lite.Cpu.Name) != 1 || lite.Cpu.Name[0] != "TestCPU" {
t.Errorf("Cpu.Name = %v", lite.Cpu.Name)
}
if lite.Mem.Total != 16*1024*1024*1024 {
t.Errorf("Mem.Total = %d", lite.Mem.Total)
}
if lite.Load.Load1 != 0.5 {
t.Errorf("Load1 = %v", lite.Load.Load1)
}
// Net 多网卡应累加
if lite.Net.BytesSent != 40 || lite.Net.BytesRecv != 60 {
t.Errorf("Net.BytesSent/Recv = %d/%d, want 40/60", lite.Net.BytesSent, lite.Net.BytesRecv)
}
if lite.Net.TotalBytesSent != 400 || lite.Net.TotalBytesRecv != 600 {
t.Errorf("Net.Total = %d/%d, want 400/600", lite.Net.TotalBytesSent, lite.Net.TotalBytesRecv)
}
if len(lite.Disk) != 1 || lite.Disk[0].Device != "C:" || lite.Disk[0].ReadBytes != 5 {
t.Errorf("Disk = %+v", lite.Disk)
}
}
func TestFormatFileSize(t *testing.T) {
cases := []struct {
in uint64
want string
}{
{512, "512.00B"},
{1536, "1.50KB"},
{1024 * 1024, "1.00MB"},
{1024 * 1024 * 1024, "1.00GB"},
}
for _, c := range cases {
if got := formatFileSize(c.in); got != c.want {
t.Errorf("formatFileSize(%d) = %q, want %q", c.in, got, c.want)
}
}
}
func TestGetInfoZeroValue(t *testing.T) {
// 未调用 Start 时 GetInfo 返回零值快照且不 panic
info := GetInfo()
if info.Ver != "" {
t.Errorf("未启动时 Ver 应为空: %q", info.Ver)
}
}