package collector import "testing" func TestXidSeverity(t *testing.T) { tests := []struct { name string line string wantSev string wantOK bool }{ { name: "xid 64 remap write failure is critical", line: "NVRM: Xid (PCI:0000:65:00): 64, pid=1234, name=python, Row Remapper: New row remapping failed", wantSev: "critical", wantOK: true, }, { name: "xid 48 uncorrectable ecc is critical", line: "NVRM: Xid (PCI:0000:65:00): 48, pid=1234, name=python", wantSev: "critical", wantOK: true, }, { name: "xid 63 remap committed is warning", line: "NVRM: Xid (PCI:0000:65:00): 63, pid=1234, Class 0x90a0", wantSev: "warning", wantOK: true, }, { name: "xid 79 GPU fell off the bus is critical", line: "NVRM: Xid (PCI:0000:65:00): 79, pid=1234, GPU has fallen off the bus", wantSev: "critical", wantOK: true, }, { name: "no xid in line", line: "NVRM: GPU 0000:65:00.0: RmInitAdapter failed", wantOK: false, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { sev, ok := XidSeverity(tt.line) if ok != tt.wantOK { t.Fatalf("ok: got %v, want %v", ok, tt.wantOK) } if ok && sev != tt.wantSev { t.Fatalf("severity: got %q, want %q", sev, tt.wantSev) } }) } }