unraid: parse dimm/nic/pcie and annotate duplicate serials
This commit is contained in:
116
internal/parser/vendors/unraid/parser_test.go
vendored
116
internal/parser/vendors/unraid/parser_test.go
vendored
@@ -275,3 +275,119 @@ func TestParser_Metadata(t *testing.T) {
|
||||
t.Error("Version() should not be empty")
|
||||
}
|
||||
}
|
||||
|
||||
func TestParse_MemoryDIMMsFromMeminfo(t *testing.T) {
|
||||
memInfo := `MemTotal: 53393436 kB
|
||||
|
||||
Handle 0x002D, DMI type 17, 34 bytes
|
||||
Memory Device
|
||||
Size: 16 GB
|
||||
Locator: Node0_Dimm1
|
||||
Bank Locator: Node0_Bank0
|
||||
Type: DDR3
|
||||
Speed: 1333 MT/s
|
||||
Manufacturer: Samsung
|
||||
Serial Number: 238F7649
|
||||
Part Number: M393B2G70BH0-
|
||||
Rank: 4
|
||||
Configured Memory Speed: 1333 MT/s
|
||||
|
||||
Handle 0x002F, DMI type 17, 34 bytes
|
||||
Memory Device
|
||||
Size: No Module Installed
|
||||
Locator: Node0_Dimm2
|
||||
`
|
||||
|
||||
files := []parser.ExtractedFile{
|
||||
{Path: "diagnostics/system/memory.txt", Content: []byte("Mem: 50Gi")},
|
||||
{Path: "diagnostics/system/meminfo.txt", Content: []byte(memInfo)},
|
||||
}
|
||||
|
||||
p := &Parser{}
|
||||
result, err := p.Parse(files)
|
||||
if err != nil {
|
||||
t.Fatalf("Parse() error = %v", err)
|
||||
}
|
||||
|
||||
if got := len(result.Hardware.Memory); got != 1 {
|
||||
t.Fatalf("expected only installed DIMM entries, got %d entries", got)
|
||||
}
|
||||
dimm := result.Hardware.Memory[0]
|
||||
if dimm.Slot != "Node0_Dimm1" {
|
||||
t.Errorf("Slot = %q, want Node0_Dimm1", dimm.Slot)
|
||||
}
|
||||
if dimm.SizeMB != 16*1024 {
|
||||
t.Errorf("SizeMB = %d, want %d", dimm.SizeMB, 16*1024)
|
||||
}
|
||||
if dimm.Type != "DDR3" {
|
||||
t.Errorf("Type = %q, want DDR3", dimm.Type)
|
||||
}
|
||||
if dimm.SerialNumber != "238F7649" {
|
||||
t.Errorf("SerialNumber = %q, want 238F7649", dimm.SerialNumber)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParse_NetworkAndPCIeFromLSPCIAndEthtool(t *testing.T) {
|
||||
lspci := `03:00.0 SCSI storage controller [0100]: Broadcom / LSI SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] [1000:0072] (rev 03)
|
||||
07:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 06)
|
||||
`
|
||||
ethtool := `Settings for eth0:
|
||||
Speed: 1000Mb/s
|
||||
Link detected: yes
|
||||
driver: r8168
|
||||
firmware-version:
|
||||
bus-info: 0000:07:00.0
|
||||
--------------------------------
|
||||
`
|
||||
files := []parser.ExtractedFile{
|
||||
{Path: "diagnostics/system/lspci.txt", Content: []byte(lspci)},
|
||||
{Path: "diagnostics/system/ethtool.txt", Content: []byte(ethtool)},
|
||||
}
|
||||
|
||||
p := &Parser{}
|
||||
result, err := p.Parse(files)
|
||||
if err != nil {
|
||||
t.Fatalf("Parse() error = %v", err)
|
||||
}
|
||||
|
||||
if len(result.Hardware.NetworkAdapters) != 1 {
|
||||
t.Fatalf("expected 1 network adapter, got %d", len(result.Hardware.NetworkAdapters))
|
||||
}
|
||||
nic := result.Hardware.NetworkAdapters[0]
|
||||
if nic.Location != "0000:07:00.0" {
|
||||
t.Errorf("Location = %q, want 0000:07:00.0", nic.Location)
|
||||
}
|
||||
if nic.Model == "" {
|
||||
t.Error("Model should not be empty")
|
||||
}
|
||||
if nic.Vendor == "" {
|
||||
t.Error("Vendor should not be empty")
|
||||
}
|
||||
|
||||
if len(result.Hardware.PCIeDevices) < 2 {
|
||||
t.Fatalf("expected at least 2 PCIe devices, got %d", len(result.Hardware.PCIeDevices))
|
||||
}
|
||||
}
|
||||
|
||||
func TestParse_HostSerialFallbackFromVarsUUID(t *testing.T) {
|
||||
vars := ` [flashGUID] => 1...
|
||||
[regGUID] => 1...7
|
||||
[uuid] => 2713440667722491190
|
||||
`
|
||||
files := []parser.ExtractedFile{
|
||||
{Path: "diagnostics/system/vars.txt", Content: []byte(vars)},
|
||||
}
|
||||
|
||||
p := &Parser{}
|
||||
result, err := p.Parse(files)
|
||||
if err != nil {
|
||||
t.Fatalf("Parse() error = %v", err)
|
||||
}
|
||||
|
||||
if result.Hardware.BoardInfo.SerialNumber != "2713440667722491190" {
|
||||
t.Fatalf("BoardInfo.SerialNumber = %q, want vars uuid", result.Hardware.BoardInfo.SerialNumber)
|
||||
}
|
||||
if result.Hardware.BoardInfo.UUID != "2713440667722491190" {
|
||||
t.Fatalf("BoardInfo.UUID = %q, want vars uuid", result.Hardware.BoardInfo.UUID)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user