jakarta-jcs-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Youngho Cho" <youn...@nannet.co.kr>
Subject IndexedDiskCache insert, remove and reinsert question
Date Thu, 06 Nov 2008 01:29:38 GMT
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 + "}";
    }
}
Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message