- WMI 采集主板/BIOS/显卡/内存/CPU/硬盘等 11 类设备 + 变更比对 - 新增依赖 gopsutil/yusufpapurcu/wmi, 附测试、例程与 README
99 lines
3.4 KiB
Go
99 lines
3.4 KiB
Go
package hardware
|
|
|
|
import "testing"
|
|
|
|
func TestCheckBaseBoardChanged(t *testing.T) {
|
|
now := []BaseBoard{{Product: "X570", Manufacturer: "ASUS"}}
|
|
if CheckBaseBoardChanged(now, []BaseBoard{{Product: "X570", Manufacturer: "ASUS"}}) {
|
|
t.Error("相同主板不应判定变更")
|
|
}
|
|
if !CheckBaseBoardChanged(now, []BaseBoard{{Product: "B550", Manufacturer: "ASUS"}}) {
|
|
t.Error("主板型号变化应判定变更")
|
|
}
|
|
if !CheckBaseBoardChanged(now, []BaseBoard{{Product: "X570", Manufacturer: "ASUS"}, {Product: "B550", Manufacturer: "MSI"}}) {
|
|
t.Error("数量变化应判定变更")
|
|
}
|
|
if !CheckBaseBoardChanged(now, nil) {
|
|
t.Error("数量变化应判定变更")
|
|
}
|
|
}
|
|
|
|
func TestCheckBiosChanged(t *testing.T) {
|
|
now := []Bios{{SMBIOSBIOSVersion: "1.0"}}
|
|
if CheckBiosChanged(now, []Bios{{SMBIOSBIOSVersion: "1.0"}}) {
|
|
t.Error("相同 BIOS 不应判定变更")
|
|
}
|
|
if !CheckBiosChanged(now, []Bios{{SMBIOSBIOSVersion: "2.0"}}) {
|
|
t.Error("BIOS 版本变化应判定变更")
|
|
}
|
|
}
|
|
|
|
func TestCheckProcessorChanged(t *testing.T) {
|
|
now := []Processor{{Name: "Ryzen 5800X"}}
|
|
if CheckProcessorChanged(now, []Processor{{Name: "Ryzen 5800X"}}) {
|
|
t.Error("相同 CPU 不应判定变更")
|
|
}
|
|
if !CheckProcessorChanged(now, []Processor{{Name: "Ryzen 5900X"}}) {
|
|
t.Error("CPU 型号变化应判定变更")
|
|
}
|
|
// 多个相同硬件乱序
|
|
now2 := []Processor{{Name: "A"}, {Name: "B"}}
|
|
if CheckProcessorChanged(now2, []Processor{{Name: "B"}, {Name: "A"}}) {
|
|
t.Error("乱序但集合相同不应判定变更")
|
|
}
|
|
// 重复硬件与新增硬件
|
|
if !CheckProcessorChanged([]Processor{{Name: "A"}, {Name: "A"}}, []Processor{{Name: "A"}, {Name: "B"}}) {
|
|
t.Error("重复硬件与不同硬件混合应判定变更")
|
|
}
|
|
}
|
|
|
|
func TestCheckPhysicalMemoryChanged(t *testing.T) {
|
|
now := []PhysicalMemory{{Capacity: 8589934592}}
|
|
if CheckPhysicalMemoryChanged(now, []PhysicalMemory{{Capacity: 8589934592}}) {
|
|
t.Error("相同容量不应判定变更")
|
|
}
|
|
if !CheckPhysicalMemoryChanged(now, []PhysicalMemory{{Capacity: 17179869184}}) {
|
|
t.Error("容量变化应判定变更")
|
|
}
|
|
}
|
|
|
|
func TestCheckVideoControllerChanged(t *testing.T) {
|
|
now := []VideoController{{Name: "RTX 3060"}}
|
|
if CheckVideoControllerChanged(now, []VideoController{{Name: "RTX 3060"}}) {
|
|
t.Error("相同显卡不应判定变更")
|
|
}
|
|
if !CheckVideoControllerChanged(now, []VideoController{{Name: "RTX 4060"}}) {
|
|
t.Error("显卡变化应判定变更")
|
|
}
|
|
}
|
|
|
|
func TestCheckDiskDriveChanged(t *testing.T) {
|
|
now := []DiskDrive{{Caption: "Samsung SSD 980"}}
|
|
if CheckDiskDriveChanged(now, []DiskDrive{{Caption: "Samsung SSD 980"}}) {
|
|
t.Error("相同硬盘不应判定变更")
|
|
}
|
|
if !CheckDiskDriveChanged(now, []DiskDrive{{Caption: "Samsung SSD 990"}}) {
|
|
t.Error("硬盘变化应判定变更")
|
|
}
|
|
}
|
|
|
|
func TestCheckSoundDeviceChanged(t *testing.T) {
|
|
now := []SoundDevice{{Name: "Realtek"}}
|
|
if CheckSoundDeviceChanged(now, []SoundDevice{{Name: "Realtek"}}) {
|
|
t.Error("相同声卡不应判定变更")
|
|
}
|
|
if !CheckSoundDeviceChanged(now, []SoundDevice{{Name: "Creative"}}) {
|
|
t.Error("声卡变化应判定变更")
|
|
}
|
|
}
|
|
|
|
func TestCheckNetworkAdapterChanged(t *testing.T) {
|
|
now := []NetworkAdapter{{Name: "Intel I219"}}
|
|
if CheckNetworkAdapterChanged(now, []NetworkAdapter{{Name: "Intel I219"}}) {
|
|
t.Error("相同网卡不应判定变更")
|
|
}
|
|
if !CheckNetworkAdapterChanged(now, []NetworkAdapter{{Name: "Realtek 8168"}}) {
|
|
t.Error("网卡变化应判定变更")
|
|
}
|
|
}
|