pve-exporter/collector/cluster_status_test.go
Davíð Steinn Geirsson 63494d0fcb feat: add cluster_status collector (pve_node_info, pve_cluster_info)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 11:31:31 +00:00

39 lines
1.3 KiB
Go

package collector
import (
"log/slog"
"strings"
"testing"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/testutil"
)
func TestClusterStatusCollector(t *testing.T) {
client := newTestClient(t, map[string]string{
"/cluster/status": "cluster_status.json",
})
collector := newClusterStatusCollector(slog.Default())
adapter := &testCollectorAdapter{client: client, collector: collector}
reg := prometheus.NewRegistry()
reg.MustRegister(adapter)
expected := `
# HELP pve_cluster_info Information about the Proxmox VE cluster.
# TYPE pve_cluster_info gauge
pve_cluster_info{id="cluster",nodes="5",quorate="1",version="9"} 1
# HELP pve_node_info Information about a Proxmox VE node.
# TYPE pve_node_info gauge
pve_node_info{id="node/node01",level="b",name="node01",nodeid="1"} 1
pve_node_info{id="node/node02",level="b",name="node02",nodeid="2"} 1
pve_node_info{id="node/node03",level="b",name="node03",nodeid="3"} 1
pve_node_info{id="node/node04",level="b",name="node04",nodeid="4"} 1
pve_node_info{id="node/node05",level="b",name="node05",nodeid="5"} 1
`
if err := testutil.GatherAndCompare(reg, strings.NewReader(expected), "pve_node_info", "pve_cluster_info"); err != nil {
t.Errorf("unexpected metrics: %s", err)
}
}