View Javadoc
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   * Test enabling/disabling of statistics gathering
24   *
25   * @since 2.7
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 }