fix(pcie): verify GPU links under real bandwidth load

This commit is contained in:
Mikhail Chusavitin
2026-09-03 10:23:39 +03:00
parent 642e68631d
commit 347bc8310a
27 changed files with 384 additions and 902 deletions
@@ -0,0 +1,77 @@
package platform
import (
"os"
"path/filepath"
"strings"
"testing"
)
func TestPCIeLinkSummaryAcceptsIdleGen1WhenLinkReachesMaximumUnderLoad(t *testing.T) {
path := filepath.Join(t.TempDir(), "summary.txt")
if err := os.WriteFile(path, []byte("overall_status=OK\n"), 0644); err != nil {
t.Fatal(err)
}
findings := []nvidiaPCIeBandwidthFinding{{
Index: 0, BDF: "0000:05:00.0", BeforeSpeed: "Gen1", AfterSpeed: "Gen5",
MaxSpeed: "Gen5", Width: 16, MaxWidth: 16, Supported: true, Sampled: true,
}}
if err := appendNvidiaPCIeLinkSummary(path, findings); err != nil {
t.Fatal(err)
}
raw, err := os.ReadFile(path)
if err != nil {
t.Fatal(err)
}
got := string(raw)
if !strings.Contains(got, "overall_status=OK\n") || !strings.Contains(got, "pcie_link_under_load_status=OK\n") {
t.Fatalf("summary did not accept a link that rose from idle Gen1 to maximum under load:\n%s", got)
}
}
func TestPCIeLinkSummaryFailsLinkStillBelowMaximumAfterLoad(t *testing.T) {
path := filepath.Join(t.TempDir(), "summary.txt")
if err := os.WriteFile(path, []byte("overall_status=UNSUPPORTED\n"), 0644); err != nil {
t.Fatal(err)
}
findings := []nvidiaPCIeBandwidthFinding{{
Index: 0, BDF: "0000:05:00.0", BeforeSpeed: "Gen1", AfterSpeed: "Gen1",
MaxSpeed: "Gen5", Width: 16, MaxWidth: 16, Supported: true, Sampled: true, Degraded: true,
}}
if err := appendNvidiaPCIeLinkSummary(path, findings); err != nil {
t.Fatal(err)
}
raw, err := os.ReadFile(path)
if err != nil {
t.Fatal(err)
}
got := string(raw)
if !strings.Contains(got, "overall_status=FAILED\n") || !strings.Contains(got, "pcie_link_under_load_status=FAILED\n") {
t.Fatalf("summary did not fail a link that stayed degraded under load:\n%s", got)
}
}
func TestPCIeLinkSummaryIsUnsupportedWhenLoadNeverRan(t *testing.T) {
path := filepath.Join(t.TempDir(), "summary.txt")
if err := os.WriteFile(path, []byte("overall_status=FAILED\n"), 0644); err != nil {
t.Fatal(err)
}
findings := []nvidiaPCIeBandwidthFinding{{
Index: 0, BDF: "0000:05:00.0", BeforeSpeed: "Gen1", MaxSpeed: "Gen5",
MaxWidth: 16, Supported: true,
}}
if err := appendNvidiaPCIeLinkSummary(path, findings); err != nil {
t.Fatal(err)
}
raw, err := os.ReadFile(path)
if err != nil {
t.Fatal(err)
}
got := string(raw)
if !strings.Contains(got, "pcie_link_under_load_status=UNSUPPORTED\n") {
t.Fatalf("summary claimed a link verdict although the load callback never ran:\n%s", got)
}
}