pve-exporter/collector/node_status_test.go
Davíð Steinn Geirsson 2097451d15 test: add node_status collector test and fixture
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-20 15:23:04 +00:00

68 lines
2.5 KiB
Go

package collector
import (
"log/slog"
"strings"
"testing"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/testutil"
)
func TestNodeStatusCollector(t *testing.T) {
client := newTestClient(t, map[string]string{
"/nodes/node01/status": "node_status.json",
})
collector := newNodeStatusCollector(slog.Default())
collector.SetNodes([]string{"node01"})
adapter := &testCollectorAdapter{client: client, collector: collector}
reg := prometheus.NewRegistry()
reg.MustRegister(adapter)
expected := `
# HELP pve_node_boot_mode_info Node boot mode information.
# TYPE pve_node_boot_mode_info gauge
pve_node_boot_mode_info{mode="efi",node="node01",secureboot="0"} 1
# HELP pve_node_ksm_shared_bytes KSM shared memory in bytes.
# TYPE pve_node_ksm_shared_bytes gauge
pve_node_ksm_shared_bytes{node="node01"} 4096
# HELP pve_node_load1 1-minute load average.
# TYPE pve_node_load1 gauge
pve_node_load1{node="node01"} 3.12
# HELP pve_node_load15 15-minute load average.
# TYPE pve_node_load15 gauge
pve_node_load15{node="node01"} 2.79
# HELP pve_node_load5 5-minute load average.
# TYPE pve_node_load5 gauge
pve_node_load5{node="node01"} 2.88
# HELP pve_node_rootfs_available_bytes Root filesystem available space in bytes.
# TYPE pve_node_rootfs_available_bytes gauge
pve_node_rootfs_available_bytes{node="node01"} 6.6943684608e+10
# HELP pve_node_rootfs_total_bytes Root filesystem total size in bytes.
# TYPE pve_node_rootfs_total_bytes gauge
pve_node_rootfs_total_bytes{node="node01"} 1.0086172672e+11
# HELP pve_node_rootfs_used_bytes Root filesystem used space in bytes.
# TYPE pve_node_rootfs_used_bytes gauge
pve_node_rootfs_used_bytes{node="node01"} 2.874730496e+10
# HELP pve_node_swap_free_bytes Free swap in bytes.
# TYPE pve_node_swap_free_bytes gauge
pve_node_swap_free_bytes{node="node01"} 8.58888192e+09
# HELP pve_node_swap_total_bytes Total swap in bytes.
# TYPE pve_node_swap_total_bytes gauge
pve_node_swap_total_bytes{node="node01"} 8.589930496e+09
# HELP pve_node_swap_used_bytes Used swap in bytes.
# TYPE pve_node_swap_used_bytes gauge
pve_node_swap_used_bytes{node="node01"} 1.048576e+06
`
if err := testutil.GatherAndCompare(reg, strings.NewReader(expected),
"pve_node_load1", "pve_node_load5", "pve_node_load15",
"pve_node_swap_total_bytes", "pve_node_swap_used_bytes", "pve_node_swap_free_bytes",
"pve_node_rootfs_total_bytes", "pve_node_rootfs_used_bytes", "pve_node_rootfs_available_bytes",
"pve_node_ksm_shared_bytes", "pve_node_boot_mode_info",
); err != nil {
t.Errorf("unexpected metrics: %s", err)
}
}