Hello, I tested some objects put into IndexedDiskCache and remove and reinsert test like following. But I can not pass the test.
Is there something wrong in cache.ccf file ? How can I pass the test ? Thanks, Youngho 1. test cache.ccf # DEFAULT CACHE REGION jcs.default=DC jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes jcs.default.cacheattributes.MaxObjects=0 jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache jcs.default.cacheattributes.DiskUsagePatternName=UPDATE jcs.default.elementattributes=org.apache.jcs.engine.ElementAttributes jcs.default.elementattributes.IsEternal=false # SYSTEM GROUP ID CACHE jcs.system.groupIdCache=DC jcs.system.groupIdCache.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes jcs.system.groupIdCache.cacheattributes.MaxObjects=0 jcs.system.groupIdCache.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache # AVAILABLE AUXILIARY CACHES jcs.auxiliary.DC=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory jcs.auxiliary.DC.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes jcs.auxiliary.DC.attributes.DiskPath=d:/tmp jcs.auxiliary.DC.attributes.maxKeySize=1000000 jcs.auxiliary.DC.attributes.MaxPurgatorySize=100 jcs.auxiliary.DC.attributes.OptimizeOnShutdown=false # PRE-DEFINED CACHE REGIONS jcs.region.testCache1=DC jcs.region.testCache1.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes jcs.region.testCache1.cacheattributes.MaxObjects=0 jcs.region.testCache1.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache jcs.region.testCache1.elementattributes=org.apache.jcs.engine.ElementAttributes jcs.region.testCache1.elementattributes.IsEternal=false jcs.region.testCache1.elementattributes.MaxLifeSeconds=0 jcs.region.testCache1.elementattributes.IsSpool=true jcs.region.testCache1.elementattributes.IsLateral=true jcs.region.testCache1.elementattributes.IsRemote=true 2. test class // // JCSTest .java // import java.io.File; import junit.framework.TestCase; import org.apache.jcs.JCS; import org.apache.jcs.access.exception.CacheException; import org.apache.jcs.engine.CompositeCacheAttributes; import org.apache.jcs.engine.behavior.ICompositeCacheAttributes; import org.apache.jcs.utils.struct.LRUMap; public class JCSTest extends TestCase { protected static int MAX_NUM = 100000; protected JCS jcs = null; protected void setUp() throws Exception { File file = new File("d:/tmp"); if(file.exists()) { File[] files = file.listFiles(); for(int i=0; i < files.length; i++) { files[i].delete(); } } JCS.setConfigFilename( "/TestJCS.ccf" ); jcs = JCS.getInstance("testCache1"); } protected void tearDown() throws Exception { jcs.dispose(); } protected void insert(int key) throws CacheException { Object obj = getCachedObject(key); jcs.put(new Integer(key), obj); } protected void insertMany(int maxNum) throws CacheException { for (int i = 0; i < maxNum; i++) { insert(i); if ((i % 20000) == 0) { try { Thread.sleep(20000); } catch(Exception e) { // } } } } protected Object get(int key) { return jcs.get(new Integer(key)); } protected void getMany(int maxNum) { for (int i = 0; i < maxNum; i++) { assertNotNull(getCachedObject(i).toString(), get(i)); } } protected void testMany(int maxNum) throws Exception { for (int i = 0; i < maxNum; i++) { final MockCache obj = (MockCache)get(i); assertNotNull(getCachedObject(i).toString(), obj); assertEquals(getCachedObject(i).getValue(), obj.getValue()); // remove jcs.remove(new Integer(i)); assertNull("[" + i +"] should be removed" , get(i)); // reinsert again insert(i); final MockCache obj1 = (MockCache)get(i); // retest assertEquals(getCachedObject(i).getValue(), obj.getValue(), obj1.getValue()); } } protected void printStats() { System.out.println(jcs.getStats()); } public void testJCS() throws Exception { long start = System.currentTimeMillis(); insertMany(MAX_NUM); System.out.println(" "); System.out.println("[DONE] : insert takes " + (System.currentTimeMillis() - start ) + "msec "); start = System.currentTimeMillis(); getMany(MAX_NUM); System.out.println(" "); System.out.println("[DONE] : get takes " + (System.currentTimeMillis() - start ) + "msec "); start = System.currentTimeMillis(); testMany(MAX_NUM); System.out.println(" "); System.out.println("[DONE] : test takes " + (System.currentTimeMillis() - start) + "msec "); printStats(); } protected static MockCache getCachedObject(int i) { return new MockCache(Integer.toString(i), "some string [" + Integer.toString(i) + "]"); } } // // MockCache.java // import java.io.Serializable; public class MockCache implements Serializable { private String key = null; private String value = null; /** * */ public MockCache() { } /** * */ public MockCache(String key, String value) { this.key = key; this.value = value; } public String getValue() { return this.value; } public String toString() { return "{[" + this.key + "] " + this.value + "}"; } }