Hi, At first glance- why have you set MaxObjects=0 everywhere? This configures the cache to not store any objects. Aside from that your test case is too long to send to a mailing list. Don't wrap your calls to the JCS API in helper methods in a test case. Everyone on this mailing list will be familiar with the standard JCS API, and won't have time to learn how the various layers of indirection in your test case work. Keep it simple. Anyway I'd guess the problem is with your MaxObjects setting.
Kind regards, Niall -----Original Message----- From: Youngho Cho <[EMAIL PROTECTED]> Reply-to: "JCS Users List" <jcs-users@jakarta.apache.org> To: JCS Users List <jcs-users@jakarta.apache.org> Subject: IndexedDiskCache insert, remove and reinsert question Date: Thu, 6 Nov 2008 10:29:38 +0900 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 + "}"; } }