PageRenderTime 22ms CodeModel.GetById 16ms app.highlight 5ms RepoModel.GetById 0ms app.codeStats 0ms

/histogram_test.go

http://github.com/rcrowley/go-metrics
Go | 95 lines | 88 code | 7 blank | 0 comment | 37 complexity | b41174fc02da11f746bb0a9ced1b5208 MD5 | raw file
 1package metrics
 2
 3import "testing"
 4
 5func BenchmarkHistogram(b *testing.B) {
 6	h := NewHistogram(NewUniformSample(100))
 7	b.ResetTimer()
 8	for i := 0; i < b.N; i++ {
 9		h.Update(int64(i))
10	}
11}
12
13func TestGetOrRegisterHistogram(t *testing.T) {
14	r := NewRegistry()
15	s := NewUniformSample(100)
16	NewRegisteredHistogram("foo", r, s).Update(47)
17	if h := GetOrRegisterHistogram("foo", r, s); 1 != h.Count() {
18		t.Fatal(h)
19	}
20}
21
22func TestHistogram10000(t *testing.T) {
23	h := NewHistogram(NewUniformSample(100000))
24	for i := 1; i <= 10000; i++ {
25		h.Update(int64(i))
26	}
27	testHistogram10000(t, h)
28}
29
30func TestHistogramEmpty(t *testing.T) {
31	h := NewHistogram(NewUniformSample(100))
32	if count := h.Count(); 0 != count {
33		t.Errorf("h.Count(): 0 != %v\n", count)
34	}
35	if min := h.Min(); 0 != min {
36		t.Errorf("h.Min(): 0 != %v\n", min)
37	}
38	if max := h.Max(); 0 != max {
39		t.Errorf("h.Max(): 0 != %v\n", max)
40	}
41	if mean := h.Mean(); 0.0 != mean {
42		t.Errorf("h.Mean(): 0.0 != %v\n", mean)
43	}
44	if stdDev := h.StdDev(); 0.0 != stdDev {
45		t.Errorf("h.StdDev(): 0.0 != %v\n", stdDev)
46	}
47	ps := h.Percentiles([]float64{0.5, 0.75, 0.99})
48	if 0.0 != ps[0] {
49		t.Errorf("median: 0.0 != %v\n", ps[0])
50	}
51	if 0.0 != ps[1] {
52		t.Errorf("75th percentile: 0.0 != %v\n", ps[1])
53	}
54	if 0.0 != ps[2] {
55		t.Errorf("99th percentile: 0.0 != %v\n", ps[2])
56	}
57}
58
59func TestHistogramSnapshot(t *testing.T) {
60	h := NewHistogram(NewUniformSample(100000))
61	for i := 1; i <= 10000; i++ {
62		h.Update(int64(i))
63	}
64	snapshot := h.Snapshot()
65	h.Update(0)
66	testHistogram10000(t, snapshot)
67}
68
69func testHistogram10000(t *testing.T, h Histogram) {
70	if count := h.Count(); 10000 != count {
71		t.Errorf("h.Count(): 10000 != %v\n", count)
72	}
73	if min := h.Min(); 1 != min {
74		t.Errorf("h.Min(): 1 != %v\n", min)
75	}
76	if max := h.Max(); 10000 != max {
77		t.Errorf("h.Max(): 10000 != %v\n", max)
78	}
79	if mean := h.Mean(); 5000.5 != mean {
80		t.Errorf("h.Mean(): 5000.5 != %v\n", mean)
81	}
82	if stdDev := h.StdDev(); 2886.751331514372 != stdDev {
83		t.Errorf("h.StdDev(): 2886.751331514372 != %v\n", stdDev)
84	}
85	ps := h.Percentiles([]float64{0.5, 0.75, 0.99})
86	if 5000.5 != ps[0] {
87		t.Errorf("median: 5000.5 != %v\n", ps[0])
88	}
89	if 7500.75 != ps[1] {
90		t.Errorf("75th percentile: 7500.75 != %v\n", ps[1])
91	}
92	if 9900.99 != ps[2] {
93		t.Errorf("99th percentile: 9900.99 != %v\n", ps[2])
94	}
95}