package app import ( "os" "path/filepath" "testing" "bee/audit/internal/schema" ) func TestApplyLatestSATStatusesMarksStorageByDevice(t *testing.T) { baseDir := t.TempDir() runDir := filepath.Join(baseDir, "storage-20260325-161151") if err := os.MkdirAll(runDir, 0755); err != nil { t.Fatal(err) } raw := "run_at_utc=2026-03-25T16:11:51Z\nnvme0n1_nvme_smart_log_status=OK\nsda_smartctl_health_status=FAILED\noverall_status=FAILED\n" if err := os.WriteFile(filepath.Join(runDir, "summary.txt"), []byte(raw), 0644); err != nil { t.Fatal(err) } nvme := schema.HardwareStorage{Telemetry: map[string]any{"linux_device": "/dev/nvme0n1"}} usb := schema.HardwareStorage{Telemetry: map[string]any{"linux_device": "/dev/sda"}} snap := schema.HardwareSnapshot{Storage: []schema.HardwareStorage{nvme, usb}} applyLatestSATStatuses(&snap, baseDir, nil) if snap.Storage[0].Status == nil || *snap.Storage[0].Status != "OK" { t.Fatalf("nvme status=%v want OK", snap.Storage[0].Status) } if snap.Storage[1].Status == nil || *snap.Storage[1].Status != "Critical" { t.Fatalf("sda status=%v want Critical", snap.Storage[1].Status) } } func TestApplyLatestSATStatusesMarksAMDGPUs(t *testing.T) { baseDir := t.TempDir() runDir := filepath.Join(baseDir, "gpu-amd-20260325-161436") if err := os.MkdirAll(runDir, 0755); err != nil { t.Fatal(err) } raw := "run_at_utc=2026-03-25T16:14:36Z\noverall_status=FAILED\n" if err := os.WriteFile(filepath.Join(runDir, "summary.txt"), []byte(raw), 0644); err != nil { t.Fatal(err) } class := "DisplayController" manufacturer := "Advanced Micro Devices, Inc. [AMD/ATI]" snap := schema.HardwareSnapshot{ PCIeDevices: []schema.HardwarePCIeDevice{{ DeviceClass: &class, Manufacturer: &manufacturer, }}, } applyLatestSATStatuses(&snap, baseDir, nil) if snap.PCIeDevices[0].Status == nil || *snap.PCIeDevices[0].Status != "Critical" { t.Fatalf("gpu status=%v want Critical", snap.PCIeDevices[0].Status) } } func TestApplyLatestSATStatusesMarksNvidiaGPUByPerGPUStatusFile(t *testing.T) { baseDir := t.TempDir() runDir := filepath.Join(baseDir, "gpu-nvidia-20260407-162123") if err := os.MkdirAll(runDir, 0755); err != nil { t.Fatal(err) } if err := os.WriteFile(filepath.Join(runDir, "summary.txt"), []byte("run_at_utc=2026-04-07T16:21:23Z\noverall_status=FAILED\n"), 0644); err != nil { t.Fatal(err) } if err := os.WriteFile(filepath.Join(runDir, "gpu-1-status.txt"), []byte("gpu_index=1\ngpu_name=NVIDIA H100 PCIe\nrun_status=FAILED\nreason=GPU requires reset\n"), 0644); err != nil { t.Fatal(err) } class := "VideoController" manufacturer := "NVIDIA Corporation" bdf0 := "0000:4b:00.0" bdf1 := "0000:4f:00.0" snap := schema.HardwareSnapshot{ PCIeDevices: []schema.HardwarePCIeDevice{ { DeviceClass: &class, Manufacturer: &manufacturer, BDF: &bdf0, Telemetry: map[string]any{"nvidia_gpu_index": 0}, }, { DeviceClass: &class, Manufacturer: &manufacturer, BDF: &bdf1, Telemetry: map[string]any{"nvidia_gpu_index": 1}, }, }, } applyLatestSATStatuses(&snap, baseDir, nil) if snap.PCIeDevices[1].Status == nil || *snap.PCIeDevices[1].Status != "Critical" { t.Fatalf("gpu1 status=%v want Critical", snap.PCIeDevices[1].Status) } if snap.PCIeDevices[1].ErrorDescription == nil || *snap.PCIeDevices[1].ErrorDescription != "GPU requires reset failed" { got := "" if snap.PCIeDevices[1].ErrorDescription != nil { got = *snap.PCIeDevices[1].ErrorDescription } t.Fatalf("gpu1 error=%q want per-gpu reason", got) } }