feat(hardware): 自 go-hua 迁入硬件信息采集与变更检测
- WMI 采集主板/BIOS/显卡/内存/CPU/硬盘等 11 类设备 + 变更比对 - 新增依赖 gopsutil/yusufpapurcu/wmi, 附测试、例程与 README
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
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("网卡变化应判定变更")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user