View Javadoc

1   package com.atlassian.cache.hazelcast;
2   
3   import java.util.concurrent.TimeUnit;
4   
5   import com.atlassian.cache.Cache;
6   import com.atlassian.cache.CacheManager;
7   import com.atlassian.cache.CacheSettingsBuilder;
8   
9   import com.hazelcast.config.MapConfig;
10  
11  import org.junit.Before;
12  import org.junit.ClassRule;
13  import org.junit.Test;
14  
15  import static org.hamcrest.MatcherAssert.assertThat;
16  import static org.hamcrest.Matchers.contains;
17  import static org.hamcrest.Matchers.hasSize;
18  import static org.hamcrest.Matchers.is;
19  import static org.hamcrest.Matchers.not;
20  import static org.hamcrest.Matchers.nullValue;
21  
22  public class HazelcastCacheManagerTest
23  {
24      @ClassRule
25      public static InitOnceHazelcastCluster cluster = InitOnceHazelcastCluster.getInstance();
26  
27      @Before
28      public void setup()
29      {
30          cluster.reset();
31      }
32  
33      @Test
34      public void testDefaultCacheConfigIsUsedForNewCaches()
35      {
36          CacheManager factory = HazelcastTestSupport.createDistributedFactory(cluster.getNode(0), new CacheSettingsBuilder()
37                  .maxEntries(1000)
38                  .expireAfterAccess(6, TimeUnit.MINUTES)
39                  .build());
40  
41          String cacheName = "defaults-test";
42          Cache<String, String> cache = factory.getCache(cacheName);
43  
44          assertThat(cache, not(nullValue()));
45          assertThat(cache.getName(), is(cacheName));
46          assertThat(cache.getKeys(), hasSize(0));
47  
48          String mapName = HazelcastCacheManager.PREFIX_CACHE + cacheName;
49  
50          MapConfig config = cluster.getNode(0).getConfig().getMapConfig(mapName);
51          assertThat(config.getMaxSizeConfig().getSize(), is(1000));
52          assertThat(config.getMaxIdleSeconds(), is(360));
53      }
54  
55      @Test
56      public void testNonFlushableCacheIsNotFlushed()
57      {
58          CacheManager factory = HazelcastTestSupport.createDistributedFactory(cluster.getNode(0));
59  
60          // Create the "broken-toilet" cache
61          Cache<String, String> nonFlushableCache = factory.getCache("broken-toilet", null, new CacheSettingsBuilder().unflushable().build());
62          nonFlushableCache.put("key1", "value1");
63  
64          Cache<String, String> normalCache = factory.getCache("normal-cache");
65          normalCache.put("key2", "value2");
66  
67          factory.flushCaches();
68  
69          nonFlushableCache = factory.getCache("broken-toilet");
70          assertThat(nonFlushableCache.get("key1"), is("value1"));
71  
72          normalCache = factory.getCache("normal-cache");
73          assertThat(normalCache.getKeys(), hasSize(0));
74      }
75  
76      @Test
77      public void testTheSameCacheInstanceIsReturnedForTheSameName()
78      {
79          CacheManager factory = HazelcastTestSupport.createDistributedFactory(cluster.getNode(0));
80  
81          final String cacheName = "same-instance-test";
82          Cache<String, String> cache = factory.getCache(cacheName);
83  
84          cache.put("fav", "dog");
85          assertThat(cache.getKeys(), contains("fav"));
86          assertThat(cache.get("fav"), is("dog"));
87  
88          cache = factory.getCache(cacheName);
89          assertThat(cache.getKeys(), contains("fav"));
90          assertThat(cache.get("fav"), is("dog"));
91      }
92  }