1 package com.atlassian.cache;
2
3 import java.util.SortedMap;
4
5 import org.junit.Rule;
6 import org.junit.Test;
7 import org.mockito.Mock;
8 import org.mockito.junit.MockitoJUnit;
9 import org.mockito.junit.MockitoRule;
10
11 import static com.atlassian.cache.CacheStatisticsKey.EVICTION_COUNT;
12 import static com.atlassian.cache.CacheStatisticsKey.HIT_COUNT;
13 import static com.atlassian.cache.CacheStatisticsKey.MISS_COUNT;
14 import static com.atlassian.cache.CacheStatisticsKey.PUT_COUNT;
15 import static com.atlassian.cache.CacheStatisticsKey.REMOVE_COUNT;
16 import static com.atlassian.cache.CacheStatisticsKey.SIZE;
17 import static com.atlassian.cache.StatisticMatcher.stat;
18 import static org.hamcrest.MatcherAssert.assertThat;
19 import static org.hamcrest.Matchers.greaterThan;
20 import static org.hamcrest.Matchers.hasSize;
21
22
23
24
25
26
27 public abstract class AbstractCacheStatisticsTest extends AbstractCacheTest
28 {
29 @Rule
30 public MockitoRule mockitoRule = MockitoJUnit.rule();
31
32 protected CacheSettings statsEnabledSettings = settingsBuilder().statisticsEnabled().build();
33 protected CacheSettings statsDisabledSettings = settingsBuilder().statisticsDisabled().build();
34
35 @Mock
36 protected CacheSettingsDefaultsProvider mockDefaultSettingsProvider;
37
38 @Test
39 public void testStatisticsEnabledViaSettings()
40 {
41 Cache<String, Long> cache = makeStatisticsEnabledCache();
42 cache.put("1",11L);
43 final SortedMap<CacheStatisticsKey, java.util.function.Supplier<Long>> stats = ((ManagedCache)cache).getStatistics();
44 assertThat(stats.entrySet(), hasSize(greaterThan(0)));
45 assertThat(stats.get(SIZE), stat(1L));
46 assertThat(stats.get(PUT_COUNT), stat(1L));
47 assertThat(stats.get(HIT_COUNT), stat(0L));
48 assertThat(stats.get(REMOVE_COUNT), stat(0L));
49 assertThat(stats.get(EVICTION_COUNT), stat(0L));
50 assertThat(stats.get(MISS_COUNT), stat(0L));
51 }
52
53 @Test
54 public void testStatisticsDisabledViaSettings()
55 {
56 Cache<String, Long> cache = makeStatisticsDisabledCache();
57 final SortedMap<CacheStatisticsKey, java.util.function.Supplier<Long>> stats = ((ManagedCache)cache).getStatistics();
58 cache.put("1",11L);
59 assertThat(stats.entrySet(), hasSize(0));
60 }
61
62 @Test
63 public void testStatisticsEnabledViaManager()
64 {
65 enableStatisticsInDefaultSettingsProvider();
66 Cache<String, Long> cache = makeStatisticsEnabledCache();
67 cache.put("1",11L);
68 final SortedMap<CacheStatisticsKey, java.util.function.Supplier<Long>> stats = ((ManagedCache)cache).getStatistics();
69 assertThat(stats.entrySet(), hasSize(greaterThan(0)));
70 assertThat(stats.get(SIZE), stat(1L));
71 assertThat(stats.get(PUT_COUNT), stat(1L));
72 assertThat(stats.get(HIT_COUNT), stat(0L));
73 assertThat(stats.get(REMOVE_COUNT), stat(0L));
74 assertThat(stats.get(EVICTION_COUNT), stat(0L));
75 assertThat(stats.get(MISS_COUNT), stat(0L));
76 }
77
78 @Test
79 public void testStatisticsDisabledViaManager()
80 {
81 disableStatisticsInDefaultSettingsProvider();
82 Cache<String, Long> cache = makeSimpleCache();
83 cache.put("1",11L);
84 final SortedMap<CacheStatisticsKey, java.util.function.Supplier<Long>> stats = ((ManagedCache)cache).getStatistics();
85 assertThat(stats.entrySet(), hasSize(0));
86 }
87
88 @Test
89 public void testStatisticsDisabledViaSettingsTakesPrecedence()
90 {
91 enableStatisticsInDefaultSettingsProvider();
92 Cache<String, Long> cache = makeStatisticsDisabledCache();
93 cache.put("1",11L);
94 final SortedMap<CacheStatisticsKey, java.util.function.Supplier<Long>> stats = ((ManagedCache)cache).getStatistics();
95 assertThat(stats.entrySet(), hasSize(0));
96 }
97
98 @Test
99 public void testStatisticsEnabledViaSettingsTakesPrecedence()
100 {
101 disableStatisticsInDefaultSettingsProvider();
102 Cache<String, Long> cache = makeStatisticsEnabledCache();
103 cache.put("1",11L);
104 final SortedMap<CacheStatisticsKey, java.util.function.Supplier<Long>> stats = ((ManagedCache)cache).getStatistics();
105 assertThat(stats.entrySet(), hasSize(greaterThan(0)));
106 assertThat(stats.get(SIZE), stat(1L));
107 assertThat(stats.get(PUT_COUNT), stat(1L));
108 assertThat(stats.get(HIT_COUNT), stat(0L));
109 assertThat(stats.get(REMOVE_COUNT), stat(0L));
110 assertThat(stats.get(EVICTION_COUNT), stat(0L));
111 assertThat(stats.get(MISS_COUNT), stat(0L));
112 }
113
114 protected Cache<String, Long> makeStatisticsEnabledCache()
115 {
116 final Cache<String, Long> cache = factory.getCache("mycache", null, statsEnabledSettings);
117 assertEmpty(cache);
118 return cache;
119 }
120
121 protected Cache<String, Long> makeStatisticsDisabledCache()
122 {
123
124 final Cache<String, Long> cache = factory.getCache("mycache", null, statsDisabledSettings);
125 assertEmpty(cache);
126 return cache;
127 }
128
129 protected abstract void enableStatisticsInDefaultSettingsProvider();
130
131 protected abstract void disableStatisticsInDefaultSettingsProvider();
132 }