From 1e4e3af1d5ee082b22b8721451959304ae787243 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dav=C3=AD=C3=B0=20Steinn=20Geirsson?= Date: Fri, 20 Mar 2026 15:28:17 +0000 Subject: [PATCH] test: add vm_pressure collector test and fixture Co-Authored-By: Claude Sonnet 4.6 --- collector/fixtures/node_qemu_pressure.json | 1 + collector/vm_pressure_test.go | 52 ++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 collector/fixtures/node_qemu_pressure.json create mode 100644 collector/vm_pressure_test.go diff --git a/collector/fixtures/node_qemu_pressure.json b/collector/fixtures/node_qemu_pressure.json new file mode 100644 index 0000000..4418d4f --- /dev/null +++ b/collector/fixtures/node_qemu_pressure.json @@ -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}]} diff --git a/collector/vm_pressure_test.go b/collector/vm_pressure_test.go new file mode 100644 index 0000000..03e28bc --- /dev/null +++ b/collector/vm_pressure_test.go @@ -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) + } +}