50 lines
1.5 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|