mirror of
https://github.com/1f349/dendrite.git
synced 2024-11-23 20:21:38 +00:00
65 lines
1.1 KiB
Go
65 lines
1.1 KiB
Go
|
package hdrhistogram_test
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/codahale/hdrhistogram"
|
||
|
)
|
||
|
|
||
|
func TestWindowedHistogram(t *testing.T) {
|
||
|
w := hdrhistogram.NewWindowed(2, 1, 1000, 3)
|
||
|
|
||
|
for i := 0; i < 100; i++ {
|
||
|
w.Current.RecordValue(int64(i))
|
||
|
}
|
||
|
w.Rotate()
|
||
|
|
||
|
for i := 100; i < 200; i++ {
|
||
|
w.Current.RecordValue(int64(i))
|
||
|
}
|
||
|
w.Rotate()
|
||
|
|
||
|
for i := 200; i < 300; i++ {
|
||
|
w.Current.RecordValue(int64(i))
|
||
|
}
|
||
|
|
||
|
if v, want := w.Merge().ValueAtQuantile(50), int64(199); v != want {
|
||
|
t.Errorf("Median was %v, but expected %v", v, want)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func BenchmarkWindowedHistogramRecordAndRotate(b *testing.B) {
|
||
|
w := hdrhistogram.NewWindowed(3, 1, 10000000, 3)
|
||
|
b.ReportAllocs()
|
||
|
b.ResetTimer()
|
||
|
|
||
|
for i := 0; i < b.N; i++ {
|
||
|
if err := w.Current.RecordValue(100); err != nil {
|
||
|
b.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if i%100000 == 1 {
|
||
|
w.Rotate()
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func BenchmarkWindowedHistogramMerge(b *testing.B) {
|
||
|
w := hdrhistogram.NewWindowed(3, 1, 10000000, 3)
|
||
|
for i := 0; i < 10000000; i++ {
|
||
|
if err := w.Current.RecordValue(100); err != nil {
|
||
|
b.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if i%100000 == 1 {
|
||
|
w.Rotate()
|
||
|
}
|
||
|
}
|
||
|
b.ReportAllocs()
|
||
|
b.ResetTimer()
|
||
|
|
||
|
for i := 0; i < b.N; i++ {
|
||
|
w.Merge()
|
||
|
}
|
||
|
}
|