1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.io.hfile;
20
21 import static org.junit.Assert.assertEquals;
22 import org.apache.hadoop.hbase.io.hfile.CombinedBlockCache.CombinedCacheStats;
23 import org.apache.hadoop.hbase.testclassification.SmallTests;
24 import org.junit.Test;
25 import org.junit.experimental.categories.Category;
26
27 @Category({SmallTests.class})
28 public class TestCombinedBlockCache {
29 @Test
30 public void testCombinedCacheStats() {
31 CacheStats lruCacheStats = new CacheStats("lruCacheStats", 2);
32 CacheStats bucketCacheStats = new CacheStats("bucketCacheStats", 2);
33 CombinedCacheStats stats =
34 new CombinedCacheStats(lruCacheStats, bucketCacheStats);
35
36 double delta = 0.01;
37
38
39
40
41 lruCacheStats.hit(true);
42 lruCacheStats.miss(true, false);
43 bucketCacheStats.hit(false);
44 bucketCacheStats.hit(false);
45 bucketCacheStats.miss(false, true);
46
47 assertEquals(5, stats.getRequestCount());
48 assertEquals(2, stats.getRequestCachingCount());
49 assertEquals(2, stats.getMissCount());
50 assertEquals(1, stats.getPrimaryMissCount());
51 assertEquals(1, stats.getMissCachingCount());
52 assertEquals(3, stats.getHitCount());
53 assertEquals(3, stats.getPrimaryHitCount());
54 assertEquals(1, stats.getHitCachingCount());
55 assertEquals(0.6, stats.getHitRatio(), delta);
56 assertEquals(0.5, stats.getHitCachingRatio(), delta);
57 assertEquals(0.4, stats.getMissRatio(), delta);
58 assertEquals(0.5, stats.getMissCachingRatio(), delta);
59
60
61
62
63 lruCacheStats.evicted(1000, true);
64 lruCacheStats.evicted(1000, false);
65 lruCacheStats.evict();
66 bucketCacheStats.evict();
67 assertEquals(2, stats.getEvictionCount());
68 assertEquals(2, stats.getEvictedCount());
69 assertEquals(1, stats.getPrimaryEvictedCount());
70 assertEquals(1.0, stats.evictedPerEviction(), delta);
71
72
73 lruCacheStats.failInsert();
74 assertEquals(1, stats.getFailedInserts());
75
76
77 stats.rollMetricsPeriod();
78 assertEquals(3, stats.getSumHitCountsPastNPeriods());
79 assertEquals(5, stats.getSumRequestCountsPastNPeriods());
80 assertEquals(1, stats.getSumHitCachingCountsPastNPeriods());
81 assertEquals(2, stats.getSumRequestCachingCountsPastNPeriods());
82 assertEquals(0.6, stats.getHitRatioPastNPeriods(), delta);
83 assertEquals(0.5, stats.getHitCachingRatioPastNPeriods(), delta);
84
85
86
87 lruCacheStats.hit(true);
88 lruCacheStats.hit(true);
89 lruCacheStats.hit(true);
90 stats.rollMetricsPeriod();
91 assertEquals(6, stats.getSumHitCountsPastNPeriods());
92 assertEquals(8, stats.getSumRequestCountsPastNPeriods());
93 assertEquals(4, stats.getSumHitCachingCountsPastNPeriods());
94 assertEquals(5, stats.getSumRequestCachingCountsPastNPeriods());
95 assertEquals(0.75, stats.getHitRatioPastNPeriods(), delta);
96 assertEquals(0.8, stats.getHitCachingRatioPastNPeriods(), delta);
97 }
98 }