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 + "}";
    }
}

Reply via email to