72 lines
2.2 KiB
Go
72 lines
2.2 KiB
Go
package collector
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"bee/audit/internal/schema"
|
|
)
|
|
|
|
func TestEnrichCPUsWithTelemetry(t *testing.T) {
|
|
tmp := t.TempDir()
|
|
oldBase := cpuSysBaseDir
|
|
cpuSysBaseDir = tmp
|
|
t.Cleanup(func() { cpuSysBaseDir = oldBase })
|
|
|
|
mustWriteFile(t, filepath.Join(tmp, "cpu0", "topology", "physical_package_id"), "0\n")
|
|
mustWriteFile(t, filepath.Join(tmp, "cpu0", "thermal_throttle", "package_throttle_count"), "3\n")
|
|
mustWriteFile(t, filepath.Join(tmp, "cpu1", "topology", "physical_package_id"), "1\n")
|
|
mustWriteFile(t, filepath.Join(tmp, "cpu1", "thermal_throttle", "package_throttle_count"), "0\n")
|
|
|
|
doc := sensorsDoc{
|
|
"coretemp-isa-0000": {
|
|
"Package id 0": map[string]any{"temp1_input": 61.5},
|
|
"Package id 1": map[string]any{"temp2_input": 58.0},
|
|
},
|
|
"intel-rapl-mmio-0": {
|
|
"Package id 0": map[string]any{"power1_average": 180.0},
|
|
"Package id 1": map[string]any{"power2_average": 175.0},
|
|
},
|
|
}
|
|
|
|
socket0 := 0
|
|
socket1 := 1
|
|
status := statusOK
|
|
cpus := []schema.HardwareCPU{
|
|
{Socket: &socket0, HardwareComponentStatus: schema.HardwareComponentStatus{Status: &status}},
|
|
{Socket: &socket1, HardwareComponentStatus: schema.HardwareComponentStatus{Status: &status}},
|
|
}
|
|
|
|
got := enrichCPUsWithTelemetry(cpus, doc)
|
|
|
|
if got[0].TemperatureC == nil || *got[0].TemperatureC != 61.5 {
|
|
t.Fatalf("cpu0 temperature mismatch: %#v", got[0].TemperatureC)
|
|
}
|
|
if got[0].PowerW == nil || *got[0].PowerW != 180.0 {
|
|
t.Fatalf("cpu0 power mismatch: %#v", got[0].PowerW)
|
|
}
|
|
if got[0].Throttled == nil || !*got[0].Throttled {
|
|
t.Fatalf("cpu0 throttled mismatch: %#v", got[0].Throttled)
|
|
}
|
|
if got[1].TemperatureC == nil || *got[1].TemperatureC != 58.0 {
|
|
t.Fatalf("cpu1 temperature mismatch: %#v", got[1].TemperatureC)
|
|
}
|
|
if got[1].PowerW == nil || *got[1].PowerW != 175.0 {
|
|
t.Fatalf("cpu1 power mismatch: %#v", got[1].PowerW)
|
|
}
|
|
if got[1].Throttled != nil && *got[1].Throttled {
|
|
t.Fatalf("cpu1 throttled mismatch: %#v", got[1].Throttled)
|
|
}
|
|
}
|
|
|
|
func mustWriteFile(t *testing.T, path, content string) {
|
|
t.Helper()
|
|
if err := os.MkdirAll(filepath.Dir(path), 0755); err != nil {
|
|
t.Fatalf("mkdir %s: %v", path, err)
|
|
}
|
|
if err := os.WriteFile(path, []byte(content), 0644); err != nil {
|
|
t.Fatalf("write %s: %v", path, err)
|
|
}
|
|
}
|