package org.dayatang.cache.ehcache; import org.dayatang.cache.Cache; import org.junit.Test; import java.util.Map; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; /** * Created by yyang on 14-2-28. */ public class EhCacheBasedCacheTest { /** * 在ehcache.xml中配置指定cache名称进行cache */ @Test public void testCreatedCacheWithName() { Cache cache = new EhCacheBasedCache("sampleCache"); assertTrue(cache != null); } /** * 测试使用一个不存在的名称创建参数,则会抛出 */ @Test(expected = UnExistsedCacheNameException.class) public void testCreatedCacheWithName2() { new EhCacheBasedCache("notExistsCacheName"); } /** * 使用参数手动构建一个cache */ @Test public void testCreatedCacheWithParams() { Cache cache = new EhCacheBasedCache("mycache", 100000, true, true, 1200000, 200000); assertTrue(cache != null); } /** * 使用参数手动构建一个cache */ @Test public void testCreatedCacheWithConfiguration() { EhCacheConfiguration configuration = EhCacheConfiguration.builder().name("mycache") .maxElementsInMemory(100000).overflowToDisk(true).eternal(true) .timeToLiveSeconds(1200000).timeToIdleSeconds(200000).build(); Cache cache = new EhCacheBasedCache(configuration); assertTrue(cache != null); } /** * 测试从缓存中取一个KEY值的CACHE */ @Test public void testGet() { Cache cache = new EhCacheBasedCache("sampleCache"); cache.put("KEY1", "Koala Project"); assertTrue("Koala Project".equals(cache.get("KEY1"))); assertNull(cache.get("KEY2")); cache.remove("KEY1"); } /** * 传入一系列的KEY值 */ @Test public void testGetArray() { Cache cache = new EhCacheBasedCache("sampleCache"); cache.put("KEY1", "ABC"); cache.put("KEY2", "VALUE2"); cache.put("KEY4", "CHINA"); Map<String, Object> result = cache.get("KEY1", "KEY2", "KEY3", "KEY4"); assertTrue(result.size() == 4); assertTrue(result.get("KEY1").equals("ABC")); assertNull(result.get("KEY3")); cache.remove("KEY1"); cache.remove("KEY2"); cache.remove("KEY4"); } /** * 测试某个KEY值在缓存中是否存在 */ @Test public void testIsKeyInCache() { Cache cache = new EhCacheBasedCache("sampleCache"); cache.put("KEY1", "ABC"); assertTrue(cache.containsKey("KEY1")); cache.remove("KEY1"); assertTrue(!cache.containsKey("KEY1")); } @Test public void testExpiredCache() throws InterruptedException { Cache cache = new EhCacheBasedCache("sampleCache"); assertTrue(!cache.containsKey("KEY1")); cache.put("KEY1", "ABC",3); assertTrue(cache.containsKey("KEY1")); Thread.sleep(4*1000); assertTrue(!cache.containsKey("KEY1")); } }