36 lines
802 B
Go
36 lines
802 B
Go
package observability
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestCollectorSnapshot(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
c := NewCollector()
|
|
c.Observe(200, 100*time.Millisecond)
|
|
c.Observe(404, 300*time.Millisecond)
|
|
c.Observe(500, 500*time.Millisecond)
|
|
|
|
s := c.Snapshot()
|
|
if s.TotalRequests != 3 {
|
|
t.Fatalf("total_requests=%d, want=3", s.TotalRequests)
|
|
}
|
|
if s.ClientErrors != 1 {
|
|
t.Fatalf("client_errors=%d, want=1", s.ClientErrors)
|
|
}
|
|
if s.ServerErrors != 1 {
|
|
t.Fatalf("server_errors=%d, want=1", s.ServerErrors)
|
|
}
|
|
if s.ServerErrorRatePct <= 0 {
|
|
t.Fatalf("server_error_rate_pct=%f, want>0", s.ServerErrorRatePct)
|
|
}
|
|
if s.AvgLatencyMs <= 0 {
|
|
t.Fatalf("avg_latency_ms=%f, want>0", s.AvgLatencyMs)
|
|
}
|
|
if s.MaxLatencyMs < 500 {
|
|
t.Fatalf("max_latency_ms=%f, want>=500", s.MaxLatencyMs)
|
|
}
|
|
}
|