main pico / pkg / metrics / serverinfo_test.go
Antonio Mika  ·  2026-10-25
 1package metrics
 2
 3import (
 4	"testing"
 5
 6	"github.com/prometheus/client_golang/prometheus"
 7)
 8
 9func TestRegisterServerInfo(t *testing.T) {
10	t.Setenv("NODENAME", "ash")
11	reg := prometheus.NewRegistry()
12
13	RegisterServerInfoCommit(reg, "pgs", "abc123")
14
15	families, err := reg.Gather()
16	if err != nil {
17		t.Fatalf("gather: %v", err)
18	}
19	if len(families) != 1 || families[0].GetName() != "pico_server_info" {
20		t.Fatalf("got %d families, want only pico_server_info", len(families))
21	}
22	m := families[0].GetMetric()[0]
23	labels := map[string]string{}
24	for _, l := range m.GetLabel() {
25		labels[l.GetName()] = l.GetValue()
26	}
27	if labels["app"] != "pgs" || labels["nodename"] != "ash" || labels["commit"] != "abc123" {
28		t.Errorf("labels = %v, want app=pgs nodename=ash commit=abc123", labels)
29	}
30	if got := m.GetGauge().GetValue(); got != 1 {
31		t.Errorf("value = %v, want 1", got)
32	}
33}