50 lines
1.5 KiB
Go

package model
import (
"testing"
"time"
)
func TestNewSampleDefaultsLabels(t *testing.T) {
at := time.Unix(1700000000, 0)
s := NewSample(MetricCPUUsage, 42.5, at, nil)
if s.Name != MetricCPUUsage || s.Value != 42.5 || s.Timestamp != 1700000000 {
t.Fatalf("sample = %+v", s)
}
if s.Labels == nil {
t.Fatalf("labels should not be nil after NewSample")
}
}
func TestNewSampleKeepsProvidedLabels(t *testing.T) {
at := time.Now()
labels := map[string]string{LabelHostID: "h-001", "service": "web"}
s := NewSample(MetricMemUsedPercent, 70, at, labels)
if s.Labels[LabelHostID] != "h-001" || s.Labels["service"] != "web" {
t.Fatalf("labels = %v", s.Labels)
}
}
func TestMetricNameConstants(t *testing.T) {
// 与架构设计 5.1.3 的 <domain>.<metric> 命名规范对齐。
want := map[string]string{
"cpu.usage": MetricCPUUsage,
"mem.used_percent": MetricMemUsedPercent,
"load.1m": MetricLoad1m,
"disk.used_percent": MetricDiskUsedPercent,
"disk.io.read_bytes": MetricDiskIOReadBytes,
"disk.io.write_bytes": MetricDiskIOWriteBytes,
"net.bytes_sent": MetricNetBytesSent,
"net.bytes_recv": MetricNetBytesRecv,
"net.pkt_drop": MetricNetPktDrop,
"process.cpu": MetricProcessCPU,
"process.mem": MetricProcessMem,
"process.count": MetricProcessCount,
}
for name, constant := range want {
if name != constant {
t.Fatalf("metric name mismatch: %q != %q", name, constant)
}
}
}