1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.hadoop.hbase.metrics.impl;
22
23 import static org.junit.Assert.assertEquals;
24
25
26 import org.apache.hadoop.hbase.metrics.Snapshot;
27 import org.apache.hadoop.hbase.testclassification.SmallTests;
28 import org.junit.Test;
29 import org.junit.experimental.categories.Category;
30
31
32
33
34 @Category(SmallTests.class)
35 public class TestHistogramImpl {
36
37 @Test
38 public void testUpdate() {
39 HistogramImpl histogram = new HistogramImpl();
40
41 assertEquals(0, histogram.getCount());
42
43 histogram.update(0);
44 assertEquals(1, histogram.getCount());
45
46 histogram.update(10);
47 assertEquals(2, histogram.getCount());
48
49 histogram.update(20);
50 histogram.update(30);
51
52 assertEquals(4, histogram.getCount());
53 }
54
55 @Test
56 public void testSnapshot() {
57 HistogramImpl histogram = new HistogramImpl();
58 for (int i = 0; i < 100; i++) {
59 histogram.update(i);
60 }
61
62 Snapshot snapshot = histogram.snapshot();
63
64 assertEquals(100, snapshot.getCount());
65 assertEquals(50, snapshot.getMedian());
66 assertEquals(49, snapshot.getMean());
67 assertEquals(0, snapshot.getMin());
68 assertEquals(99, snapshot.getMax());
69 assertEquals(25, snapshot.get25thPercentile());
70 assertEquals(75, snapshot.get75thPercentile());
71 assertEquals(90, snapshot.get90thPercentile());
72 assertEquals(95, snapshot.get95thPercentile());
73 assertEquals(98, snapshot.get98thPercentile());
74 assertEquals(99, snapshot.get99thPercentile());
75 assertEquals(99, snapshot.get999thPercentile());
76
77 assertEquals(51, snapshot.getCountAtOrBelow(50));
78
79
80 assertEquals(100, histogram.getCount());
81
82
83 for (int i = 100; i < 200; i++) {
84 histogram.update(i);
85 }
86
87 assertEquals(200, histogram.getCount());
88
89 snapshot = histogram.snapshot();
90 assertEquals(100, snapshot.getCount());
91 assertEquals(150, snapshot.getMedian());
92 assertEquals(149, snapshot.getMean());
93 assertEquals(100, snapshot.getMin());
94 assertEquals(199, snapshot.getMax());
95 assertEquals(125, snapshot.get25thPercentile());
96 assertEquals(175, snapshot.get75thPercentile());
97 assertEquals(190, snapshot.get90thPercentile());
98 assertEquals(195, snapshot.get95thPercentile());
99 assertEquals(198, snapshot.get98thPercentile());
100 assertEquals(199, snapshot.get99thPercentile());
101 assertEquals(199, snapshot.get999thPercentile());
102 }
103 }