You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jcs-dev@jakarta.apache.org by as...@apache.org on 2008/04/11 20:43:31 UTC
svn commit: r647264 [6/6] - in /jakarta/jcs/trunk: ./
src/java/org/apache/jcs/access/ src/java/org/apache/jcs/access/behavior/
src/java/org/apache/jcs/auxiliary/ src/java/org/apache/jcs/auxiliary/disk/
src/java/org/apache/jcs/auxiliary/lateral/ src/jav...
Modified: jakarta/jcs/trunk/src/test/org/apache/jcs/engine/memory/mru/MRUMemoryCacheUnitTest.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test/org/apache/jcs/engine/memory/mru/MRUMemoryCacheUnitTest.java?rev=647264&r1=647263&r2=647264&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/test/org/apache/jcs/engine/memory/mru/MRUMemoryCacheUnitTest.java (original)
+++ jakarta/jcs/trunk/src/test/org/apache/jcs/engine/memory/mru/MRUMemoryCacheUnitTest.java Fri Apr 11 11:43:26 2008
@@ -1,300 +1,321 @@
-package org.apache.jcs.engine.memory.mru;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import junit.framework.TestCase;
-
-import org.apache.jcs.JCS;
-import org.apache.jcs.access.exception.CacheException;
-import org.apache.jcs.engine.CacheElement;
-import org.apache.jcs.engine.behavior.ICacheElement;
-import org.apache.jcs.engine.control.CompositeCache;
-import org.apache.jcs.engine.control.CompositeCacheManager;
-
-/**
- * Tests for the test MRU implementation that uses the java linked list class.
- * This is more a set of tests for the hub than for the MRU, since we don't care
- * about the MRU.
- *
- * @author Aaron Smuts
- *
- */
-public class MRUMemoryCacheUnitTest
- extends TestCase
-{
-
- /**
- * Test setup
- */
- public void setUp()
- {
- JCS.setConfigFilename( "/TestMRUCache.ccf" );
- }
-
- /**
- * Verify that the mru gets used by a non-defined region when it is set as
- * the defualt in the default region.
- *
- * @throws CacheException
- */
- public void testLoadFromCCF()
- throws CacheException
- {
- JCS cache = JCS.getInstance( "testPutGet" );
- String memoryCacheName = cache.getCacheAttributes().getMemoryCacheName();
- assertTrue( "Cache name should have MRU in it.", memoryCacheName.indexOf( "MRUMemoryCache" ) != -1 );
- }
-
- /**
- * put twice as many as the max. verify that the second half is in the
- * cache.
- *
- * @throws CacheException
- */
- public void testPutGetThroughHub()
- throws CacheException
- {
- JCS cache = JCS.getInstance( "testPutGetThroughHub" );
-
- int max = cache.getCacheAttributes().getMaxObjects();
- int items = max * 2;
-
- for ( int i = 0; i < items; i++ )
- {
- cache.put( i + ":key", "myregion" + " data " + i );
- }
-
- // Test that first items are not in the cache
- for ( int i = max; i >= 0; i-- )
- {
- String value = (String) cache.get( i + ":key" );
- assertNull( "Should not have value for key [" + i + ":key" + "] in the cache.", value );
- }
-
- // Test that last items are in cache
- // skip 2 for the buffer.
- for ( int i = max + 2; i < items; i++ )
- {
- String value = (String) cache.get( i + ":key" );
- assertEquals( "myregion" + " data " + i, value );
- }
-
- }
-
- /**
- * Put twice as many as the max, twice. verify that the second half is in
- * the cache.
- *
- * @throws CacheException
- */
- public void testPutGetThroughHubTwice()
- throws CacheException
- {
- JCS cache = JCS.getInstance( "testPutGetThroughHub" );
-
- int max = cache.getCacheAttributes().getMaxObjects();
- int items = max * 2;
-
- for ( int i = 0; i < items; i++ )
- {
- cache.put( i + ":key", "myregion" + " data " + i );
- }
-
- for ( int i = 0; i < items; i++ )
- {
- cache.put( i + ":key", "myregion" + " data " + i );
- }
-
- // Test that first items are not in the cache
- for ( int i = max; i >= 0; i-- )
- {
- String value = (String) cache.get( i + ":key" );
- assertNull( "Should not have value for key [" + i + ":key" + "] in the cache.", value );
- }
-
- // Test that last items are in cache
- // skip 2 for the buffer.
- for ( int i = max + 2; i < items; i++ )
- {
- String value = (String) cache.get( i + ":key" );
- assertEquals( "myregion" + " data " + i, value );
- }
-
- }
-
- /**
- * put the max and remove each. verify that they are all null.
- *
- * @throws CacheException
- */
- public void testPutRemoveThroughHub()
- throws CacheException
- {
- JCS cache = JCS.getInstance( "testPutGetThroughHub" );
-
- int max = cache.getCacheAttributes().getMaxObjects();
- int items = max * 2;
-
- for ( int i = 0; i < items; i++ )
- {
- cache.put( i + ":key", "myregion" + " data " + i );
- }
-
- for ( int i = 0; i < items; i++ )
- {
- cache.remove( i + ":key" );
- }
-
- // Test that first items are not in the cache
- for ( int i = max; i >= 0; i-- )
- {
- String value = (String) cache.get( i + ":key" );
- assertNull( "Should not have value for key [" + i + ":key" + "] in the cache.", value );
- }
- }
-
- /**
- * put the max and clear. verify that no elements remain.
- *
- * @throws CacheException
- */
- public void testClearThroughHub()
- throws CacheException
- {
- JCS cache = JCS.getInstance( "testPutGetThroughHub" );
-
- int max = cache.getCacheAttributes().getMaxObjects();
- int items = max * 2;
-
- for ( int i = 0; i < items; i++ )
- {
- cache.put( i + ":key", "myregion" + " data " + i );
- }
-
- cache.clear();
-
- // Test that first items are not in the cache
- for ( int i = max; i >= 0; i-- )
- {
- String value = (String) cache.get( i + ":key" );
- assertNull( "Should not have value for key [" + i + ":key" + "] in the cache.", value );
- }
- }
-
- /**
- * put twice the max and clear. verify that no elements remain.
- *
- * @throws CacheException
- */
- public void testGetStatsThroughHub()
- throws CacheException
- {
- JCS cache = JCS.getInstance( "testGetStatsThroughHub" );
-
- int max = cache.getCacheAttributes().getMaxObjects();
- int items = max * 2;
-
- for ( int i = 0; i < items; i++ )
- {
- cache.put( i + ":key", "myregion" + " data " + i );
- }
-
- String stats = cache.getStats();
-
- System.out.println( stats );
-
- // TODO improve stats check
- assertTrue( "Should have 200 puts", stats.indexOf( "2000" ) != -1 );
- }
-
- /**
- * Put half the max and clear. get the key array and verify that it has the
- * correct number of items.
- *
- * @throws Exception
- */
- public void testGetKeyArray()
- throws Exception
- {
- CompositeCacheManager cacheMgr = CompositeCacheManager.getUnconfiguredInstance();
- cacheMgr.configure( "/TestMRUCache.ccf" );
- CompositeCache cache = cacheMgr.getCache( "testGetKeyArray" );
-
- MRUMemoryCache mru = new MRUMemoryCache();
- mru.initialize( cache );
-
- int max = cache.getCacheAttributes().getMaxObjects();
- int items = max / 2;
-
- for ( int i = 0; i < items; i++ )
- {
- ICacheElement ice = new CacheElement( cache.getCacheName(), i + ":key", cache.getCacheName() + " data " + i );
- ice.setElementAttributes( cache.getElementAttributes() );
- mru.update( ice );
- }
-
- Object[] keys = mru.getKeyArray();
-
- assertEquals( "Wrong number of keys.", items, keys.length );
- }
-
-
- /**
- * Add a few keys with the delimeter. Remove them.
- *
- *
- * @throws CacheException
- */
- public void testRemovePartialThroughHub()
- throws CacheException
- {
- JCS cache = JCS.getInstance( "testGetStatsThroughHub" );
-
- int max = cache.getCacheAttributes().getMaxObjects();
- int items = max / 2;
-
- cache.put( "test", "data" );
-
- String root = "myroot";
-
- for ( int i = 0; i < items; i++ )
- {
- cache.put( root + ":" + i + ":key", "myregion" + " data " + i );
- }
-
- // Test that last items are in cache
- for ( int i = 0; i < items; i++ )
- {
- String value = (String) cache.get( root + ":" + i + ":key" );
- assertEquals( "myregion" + " data " + i, value );
- }
-
- // remove partial
- cache.remove( root + ":" );
-
- for ( int i = 0; i < items; i++ )
- {
- assertNull( "Should have been removed by partial loop.", cache.get( root + ":" + i + ":key" ) );
- }
-
- assertNotNull( "Other item should be in the cache.", cache.get( "test" ) );
-
- }
-}
+package org.apache.jcs.engine.memory.mru;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+import org.apache.jcs.JCS;
+import org.apache.jcs.access.exception.CacheException;
+import org.apache.jcs.engine.CacheElement;
+import org.apache.jcs.engine.behavior.ICacheElement;
+import org.apache.jcs.engine.control.CompositeCache;
+import org.apache.jcs.engine.control.CompositeCacheManager;
+
+/**
+ * Tests for the test MRU implementation that uses the java linked list class.
+ * This is more a set of tests for the hub than for the MRU, since we don't care
+ * about the MRU.
+ *
+ * @author Aaron Smuts
+ *
+ */
+public class MRUMemoryCacheUnitTest
+ extends TestCase
+{
+
+ /**
+ * Test setup
+ */
+ public void setUp()
+ {
+ JCS.setConfigFilename( "/TestMRUCache.ccf" );
+ }
+
+ /**
+ * Verify that the mru gets used by a non-defined region when it is set as
+ * the defualt in the default region.
+ *
+ * @throws CacheException
+ */
+ public void testLoadFromCCF()
+ throws CacheException
+ {
+ JCS cache = JCS.getInstance( "testPutGet" );
+ String memoryCacheName = cache.getCacheAttributes().getMemoryCacheName();
+ assertTrue( "Cache name should have MRU in it.", memoryCacheName.indexOf( "MRUMemoryCache" ) != -1 );
+ }
+
+ /**
+ * put twice as many as the max. verify that the second half is in the
+ * cache.
+ *
+ * @throws CacheException
+ */
+ public void testPutGetThroughHub()
+ throws CacheException
+ {
+ JCS cache = JCS.getInstance( "testPutGetThroughHub" );
+
+ int max = cache.getCacheAttributes().getMaxObjects();
+ int items = max * 2;
+
+ for ( int i = 0; i < items; i++ )
+ {
+ cache.put( i + ":key", "myregion" + " data " + i );
+ }
+
+ // Test that first items are not in the cache
+ for ( int i = max; i >= 0; i-- )
+ {
+ String value = (String) cache.get( i + ":key" );
+ assertNull( "Should not have value for key [" + i + ":key" + "] in the cache.", value );
+ }
+
+ // Test that last items are in cache
+ // skip 2 for the buffer.
+ for ( int i = max + 2; i < items; i++ )
+ {
+ String value = (String) cache.get( i + ":key" );
+ assertEquals( "myregion" + " data " + i, value );
+ }
+
+ // Test that getMultiple returns all the items remaining in cache and none of the missing ones
+ Set keys = new HashSet();
+ for ( int i = 0; i < items; i++ )
+ {
+ keys.add( i + ":key" );
+ }
+
+ Map elements = cache.getCacheElements( keys );
+ for ( int i = max; i >= 0; i-- )
+ {
+ assertNull( elements.get( i + ":key" ) );
+ }
+ for ( int i = max + 2; i < items; i++ )
+ {
+ ICacheElement element = (ICacheElement) elements.get( i + ":key" );
+ assertNotNull( "element " + i + ":key is missing", element );
+ assertEquals( "value " + i + ":key", "myregion" + " data " + i, element.getVal() );
+ }
+ }
+
+ /**
+ * Put twice as many as the max, twice. verify that the second half is in
+ * the cache.
+ *
+ * @throws CacheException
+ */
+ public void testPutGetThroughHubTwice()
+ throws CacheException
+ {
+ JCS cache = JCS.getInstance( "testPutGetThroughHub" );
+
+ int max = cache.getCacheAttributes().getMaxObjects();
+ int items = max * 2;
+
+ for ( int i = 0; i < items; i++ )
+ {
+ cache.put( i + ":key", "myregion" + " data " + i );
+ }
+
+ for ( int i = 0; i < items; i++ )
+ {
+ cache.put( i + ":key", "myregion" + " data " + i );
+ }
+
+ // Test that first items are not in the cache
+ for ( int i = max; i >= 0; i-- )
+ {
+ String value = (String) cache.get( i + ":key" );
+ assertNull( "Should not have value for key [" + i + ":key" + "] in the cache.", value );
+ }
+
+ // Test that last items are in cache
+ // skip 2 for the buffer.
+ for ( int i = max + 2; i < items; i++ )
+ {
+ String value = (String) cache.get( i + ":key" );
+ assertEquals( "myregion" + " data " + i, value );
+ }
+
+ }
+
+ /**
+ * put the max and remove each. verify that they are all null.
+ *
+ * @throws CacheException
+ */
+ public void testPutRemoveThroughHub()
+ throws CacheException
+ {
+ JCS cache = JCS.getInstance( "testPutGetThroughHub" );
+
+ int max = cache.getCacheAttributes().getMaxObjects();
+ int items = max * 2;
+
+ for ( int i = 0; i < items; i++ )
+ {
+ cache.put( i + ":key", "myregion" + " data " + i );
+ }
+
+ for ( int i = 0; i < items; i++ )
+ {
+ cache.remove( i + ":key" );
+ }
+
+ // Test that first items are not in the cache
+ for ( int i = max; i >= 0; i-- )
+ {
+ String value = (String) cache.get( i + ":key" );
+ assertNull( "Should not have value for key [" + i + ":key" + "] in the cache.", value );
+ }
+ }
+
+ /**
+ * put the max and clear. verify that no elements remain.
+ *
+ * @throws CacheException
+ */
+ public void testClearThroughHub()
+ throws CacheException
+ {
+ JCS cache = JCS.getInstance( "testPutGetThroughHub" );
+
+ int max = cache.getCacheAttributes().getMaxObjects();
+ int items = max * 2;
+
+ for ( int i = 0; i < items; i++ )
+ {
+ cache.put( i + ":key", "myregion" + " data " + i );
+ }
+
+ cache.clear();
+
+ // Test that first items are not in the cache
+ for ( int i = max; i >= 0; i-- )
+ {
+ String value = (String) cache.get( i + ":key" );
+ assertNull( "Should not have value for key [" + i + ":key" + "] in the cache.", value );
+ }
+ }
+
+ /**
+ * put twice the max and clear. verify that no elements remain.
+ *
+ * @throws CacheException
+ */
+ public void testGetStatsThroughHub()
+ throws CacheException
+ {
+ JCS cache = JCS.getInstance( "testGetStatsThroughHub" );
+
+ int max = cache.getCacheAttributes().getMaxObjects();
+ int items = max * 2;
+
+ for ( int i = 0; i < items; i++ )
+ {
+ cache.put( i + ":key", "myregion" + " data " + i );
+ }
+
+ String stats = cache.getStats();
+
+ System.out.println( stats );
+
+ // TODO improve stats check
+ assertTrue( "Should have 200 puts", stats.indexOf( "2000" ) != -1 );
+ }
+
+ /**
+ * Put half the max and clear. get the key array and verify that it has the
+ * correct number of items.
+ *
+ * @throws Exception
+ */
+ public void testGetKeyArray()
+ throws Exception
+ {
+ CompositeCacheManager cacheMgr = CompositeCacheManager.getUnconfiguredInstance();
+ cacheMgr.configure( "/TestMRUCache.ccf" );
+ CompositeCache cache = cacheMgr.getCache( "testGetKeyArray" );
+
+ MRUMemoryCache mru = new MRUMemoryCache();
+ mru.initialize( cache );
+
+ int max = cache.getCacheAttributes().getMaxObjects();
+ int items = max / 2;
+
+ for ( int i = 0; i < items; i++ )
+ {
+ ICacheElement ice = new CacheElement( cache.getCacheName(), i + ":key", cache.getCacheName() + " data " + i );
+ ice.setElementAttributes( cache.getElementAttributes() );
+ mru.update( ice );
+ }
+
+ Object[] keys = mru.getKeyArray();
+
+ assertEquals( "Wrong number of keys.", items, keys.length );
+ }
+
+ /**
+ * Add a few keys with the delimeter. Remove them.
+ *
+ *
+ * @throws CacheException
+ */
+ public void testRemovePartialThroughHub()
+ throws CacheException
+ {
+ JCS cache = JCS.getInstance( "testGetStatsThroughHub" );
+
+ int max = cache.getCacheAttributes().getMaxObjects();
+ int items = max / 2;
+
+ cache.put( "test", "data" );
+
+ String root = "myroot";
+
+ for ( int i = 0; i < items; i++ )
+ {
+ cache.put( root + ":" + i + ":key", "myregion" + " data " + i );
+ }
+
+ // Test that last items are in cache
+ for ( int i = 0; i < items; i++ )
+ {
+ String value = (String) cache.get( root + ":" + i + ":key" );
+ assertEquals( "myregion" + " data " + i, value );
+ }
+
+ // remove partial
+ cache.remove( root + ":" );
+
+ for ( int i = 0; i < items; i++ )
+ {
+ assertNull( "Should have been removed by partial loop.", cache.get( root + ":" + i + ":key" ) );
+ }
+
+ assertNotNull( "Other item should be in the cache.", cache.get( "test" ) );
+
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: jcs-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jcs-dev-help@jakarta.apache.org