35 lines
910 B
Go
35 lines
910 B
Go
package metrics
|
|
|
|
import "testing"
|
|
|
|
func TestRecentLatencyByKeyTracksBoundedP99PerKey(t *testing.T) {
|
|
tracker := NewRecentLatencyByKey(3)
|
|
|
|
p99, samples := tracker.Observe("a", 10)
|
|
if p99 != 10 || samples != 1 {
|
|
t.Fatalf("first p99=%v samples=%d", p99, samples)
|
|
}
|
|
tracker.Observe("a", 20)
|
|
p99, samples = tracker.Observe("a", 30)
|
|
if p99 != 30 || samples != 3 {
|
|
t.Fatalf("filled p99=%v samples=%d", p99, samples)
|
|
}
|
|
p99, samples = tracker.Observe("a", 5)
|
|
if p99 != 30 || samples != 3 {
|
|
t.Fatalf("bounded p99=%v samples=%d", p99, samples)
|
|
}
|
|
p99, samples = tracker.Observe("b", 7)
|
|
if p99 != 7 || samples != 1 {
|
|
t.Fatalf("second key p99=%v samples=%d", p99, samples)
|
|
}
|
|
}
|
|
|
|
func TestRecentLatencyByKeySanitizesBadValues(t *testing.T) {
|
|
tracker := NewRecentLatencyByKey(2)
|
|
|
|
p99, samples := tracker.Observe("", -10)
|
|
if p99 != 0 || samples != 1 {
|
|
t.Fatalf("p99=%v samples=%d", p99, samples)
|
|
}
|
|
}
|