test: add vm_pressure collector test and fixture

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Davíð Steinn Geirsson 2026-03-20 15:28:17 +00:00
parent 496a46460c
commit 1e4e3af1d5
2 changed files with 53 additions and 0 deletions

View file

@ -0,0 +1 @@
{"data":[{"vmid":112,"status":"running","name":"karmada","cpus":4,"pressurecpusome":1.5,"pressurecpufull":0.3,"pressurememorysome":2.1,"pressurememoryfull":0.0,"pressureiosome":0.8,"pressureiofull":0.1,"mem":6287664128,"maxmem":8589934592},{"vmid":104,"status":"stopped","name":"test3","cpus":2,"mem":0,"maxmem":4294967296}]}

View file

@ -0,0 +1,52 @@
package collector
import (
"log/slog"
"strings"
"testing"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/testutil"
)
func TestVMPressureCollector(t *testing.T) {
client := newTestClient(t, map[string]string{
"/nodes/node01/qemu": "node_qemu_pressure.json",
})
collector := newVMPressureCollector(slog.Default())
collector.SetNodes([]string{"node01"})
adapter := &testCollectorAdapter{client: client, collector: collector}
reg := prometheus.NewRegistry()
reg.MustRegister(adapter)
expected := `
# HELP pve_vm_pressure_cpu_full_ratio CPU pressure (full) ratio.
# TYPE pve_vm_pressure_cpu_full_ratio gauge
pve_vm_pressure_cpu_full_ratio{id="qemu/112",node="node01"} 0.003
# HELP pve_vm_pressure_cpu_some_ratio CPU pressure (some) ratio.
# TYPE pve_vm_pressure_cpu_some_ratio gauge
pve_vm_pressure_cpu_some_ratio{id="qemu/112",node="node01"} 0.015
# HELP pve_vm_pressure_io_full_ratio I/O pressure (full) ratio.
# TYPE pve_vm_pressure_io_full_ratio gauge
pve_vm_pressure_io_full_ratio{id="qemu/112",node="node01"} 0.001
# HELP pve_vm_pressure_io_some_ratio I/O pressure (some) ratio.
# TYPE pve_vm_pressure_io_some_ratio gauge
pve_vm_pressure_io_some_ratio{id="qemu/112",node="node01"} 0.008
# HELP pve_vm_pressure_memory_full_ratio Memory pressure (full) ratio.
# TYPE pve_vm_pressure_memory_full_ratio gauge
pve_vm_pressure_memory_full_ratio{id="qemu/112",node="node01"} 0
# HELP pve_vm_pressure_memory_some_ratio Memory pressure (some) ratio.
# TYPE pve_vm_pressure_memory_some_ratio gauge
pve_vm_pressure_memory_some_ratio{id="qemu/112",node="node01"} 0.021
`
if err := testutil.GatherAndCompare(reg, strings.NewReader(expected),
"pve_vm_pressure_cpu_some_ratio", "pve_vm_pressure_cpu_full_ratio",
"pve_vm_pressure_memory_some_ratio", "pve_vm_pressure_memory_full_ratio",
"pve_vm_pressure_io_some_ratio", "pve_vm_pressure_io_full_ratio",
); err != nil {
t.Errorf("unexpected metrics: %s", err)
}
}