Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/AbstractMemoryCache.java URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/AbstractMemoryCache.java?rev=430809&r1=430808&r2=430809&view=diff ============================================================================== --- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/AbstractMemoryCache.java (original) +++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/AbstractMemoryCache.java Fri Aug 11 08:51:10 2006 @@ -1,19 +1,14 @@ package org.apache.jcs.engine.memory; /* - * Copyright 2001-2004 The Apache Software Foundation. - * - * Licensed 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. + * Copyright 2001-2004 The Apache Software Foundation. Licensed 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.io.IOException; @@ -46,7 +41,6 @@ * This keeps a static reference to a memory shrinker clock daemon. If this * region is configured to use the shrinker, the clock daemon will be setup to * run the shrinker on this region. - * * @version $Id$ */ public abstract class AbstractMemoryCache @@ -101,7 +95,6 @@ /** * For post reflection creation initialization - * * @param hub */ public synchronized void initialize( CompositeCache hub ) @@ -127,7 +120,6 @@ /** * Removes an item from the cache - * * @param key * Identifies item to be removed * @return Description of the Return Value @@ -139,7 +131,6 @@ /** * Get an item from the cache - * * @param key * Description of the Parameter * @return Description of the Return Value @@ -152,7 +143,6 @@ /** * Get an item from the cache without effecting its order or last access * time - * * @param key * Description of the Parameter * @return The quiet value @@ -164,7 +154,6 @@ /** * Puts an item to the cache. - * * @param ce * Description of the Parameter * @exception IOException @@ -175,14 +164,12 @@ /** * Get an Array of the keys for all elements in the memory cache - * * @return An Object[] */ public abstract Object[] getKeyArray(); /** * Removes all cached items from the cache. - * * @exception IOException */ public void removeAll() @@ -193,7 +180,6 @@ /** * Prepares for shutdown. - * * @exception IOException */ public void dispose() @@ -208,7 +194,6 @@ /* * (non-Javadoc) - * * @see org.apache.jcs.engine.memory.MemoryCache#getStatistics() */ public IStats getStatistics() @@ -220,7 +205,6 @@ /** * Returns the current cache size. - * * @return The size value */ public int getSize() @@ -230,7 +214,6 @@ /** * Returns the cache status. - * * @return The status value */ public int getStatus() @@ -240,7 +223,6 @@ /** * Returns the cache name. - * * @return The cacheName value */ public String getCacheName() @@ -250,7 +232,6 @@ /** * Puts an item to the cache. - * * @param ce * @exception IOException */ @@ -262,7 +243,6 @@ /** * Gets the iterator attribute of the LRUMemoryCache object - * * @return The iterator value */ public Iterator getIterator() @@ -272,7 +252,6 @@ /** * Returns the CacheAttributes. - * * @return The CacheAttributes value */ public ICompositeCacheAttributes getCacheAttributes() @@ -282,7 +261,6 @@ /** * Sets the CacheAttributes. - * * @param cattr * The new CacheAttributes value */ @@ -293,7 +271,6 @@ /** * Gets the cache hub / region taht the MemoryCache is used by - * * @return The cache value */ public CompositeCache getCompositeCache() @@ -323,9 +300,7 @@ /** * Allows us to set the daemon status on the clockdaemon - * * @author aaronsm - * */ class MyThreadFactory implements ThreadFactory @@ -333,7 +308,6 @@ /* * (non-Javadoc) - * * @see EDU.oswego.cs.dl.util.concurrent.ThreadFactory#newThread(java.lang.Runnable) */ public Thread newThread( Runnable runner )
Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/MemoryCache.java URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/MemoryCache.java?rev=430809&r1=430808&r2=430809&view=diff ============================================================================== --- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/MemoryCache.java (original) +++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/MemoryCache.java Fri Aug 11 08:51:10 2006 @@ -101,6 +101,20 @@ throws IOException; /** + * This instructs the memory cache to remove the <i>numberToFree</i> + * according to its eviction policy. For example, the LRUMemoryCache will + * remove the <i>numberToFree</i> least recently used items. These will be + * spooled to disk if a disk auxiliary is available. + * <p> + * @param numberToFree + * @return the number that were removed. if you ask to free 5, but there are + * only 3, you will get 3. + * @throws IOException + */ + public int freeElements( int numberToFree ) + throws IOException; + + /** * Get an item from the cache * <p> * @param key Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/lru/LRUMemoryCache.java URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/lru/LRUMemoryCache.java?rev=430809&r1=430808&r2=430809&view=diff ============================================================================== --- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/lru/LRUMemoryCache.java (original) +++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/lru/LRUMemoryCache.java Fri Aug 11 08:51:10 2006 @@ -1,19 +1,14 @@ package org.apache.jcs.engine.memory.lru; /* - * Copyright 2001-2004 The Apache Software Foundation. - * - * Licensed 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. + * Copyright 2001-2004 The Apache Software Foundation. Licensed 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.io.IOException; @@ -52,7 +47,7 @@ * The LRUMemoryCache is most efficient when the first element is selected. The * smaller the region, the better the chance that this will be the case. < .04 * ms per put, p3 866, 1/10 of that per get - * + * <p> * @version $Id$ */ public class LRUMemoryCache @@ -73,7 +68,6 @@ /** * For post reflection creation initialization. - * * @param hub */ public synchronized void initialize( CompositeCache hub ) @@ -88,7 +82,7 @@ * key from the linked list and adds this one first. * <p> * If the max size is reached, an element will be put to disk. - * + * <p> * @param ce * The cache element, or entry wrapper * @exception IOException @@ -144,59 +138,100 @@ for ( int i = 0; i < chunkSizeCorrected; i++ ) { - synchronized ( this ) + spoolLastElement(); + } + + if ( log.isDebugEnabled() ) + { + log.debug( "update: After spool map size: " + map.size() + " linked list size = " + dumpCacheSize() ); + } + + } + + /** + * This spools the last element in the LRU, if one exists. + * <p> + * @return ICacheElement if there was a last element, else null. + * @throws Error + */ + protected ICacheElement spoolLastElement() + throws Error + { + ICacheElement toSpool = null; + synchronized ( this ) + { + if ( list.getLast() != null ) { - if ( list.getLast() != null ) + toSpool = ( (MemoryElementDescriptor) list.getLast() ).ce; + if ( toSpool != null ) { - if ( ( (MemoryElementDescriptor) list.getLast() ).ce != null ) + cache.spoolToDisk( ( (MemoryElementDescriptor) list.getLast() ).ce ); + if ( !map.containsKey( ( (MemoryElementDescriptor) list.getLast() ).ce.getKey() ) ) { - cache.spoolToDisk( ( (MemoryElementDescriptor) list.getLast() ).ce ); - if ( !map.containsKey( ( (MemoryElementDescriptor) list.getLast() ).ce.getKey() ) ) - { - log.error( "update: map does not contain key: " - + ( (MemoryElementDescriptor) list.getLast() ).ce.getKey() ); - verifyCache(); - } - if ( map.remove( ( (MemoryElementDescriptor) list.getLast() ).ce.getKey() ) == null ) - { - log.warn( "update: remove failed for key: " - + ( (MemoryElementDescriptor) list.getLast() ).ce.getKey() ); - verifyCache(); - } + log.error( "update: map does not contain key: " + + ( (MemoryElementDescriptor) list.getLast() ).ce.getKey() ); + verifyCache(); } - else + if ( map.remove( ( (MemoryElementDescriptor) list.getLast() ).ce.getKey() ) == null ) { - throw new Error( "update: last.ce is null!" ); + log.warn( "update: remove failed for key: " + + ( (MemoryElementDescriptor) list.getLast() ).ce.getKey() ); + verifyCache(); } - list.removeLast(); } else { - verifyCache(); - throw new Error( "update: last is null!" ); + throw new Error( "update: last.ce is null!" ); } + list.removeLast(); + } + else + { + verifyCache(); + throw new Error( "update: last is null!" ); + } - // If this is out of the sync block it can detect a mismatch - // where there is none. - if ( map.size() != dumpCacheSize() ) - { - log.warn( "update: After spool, size mismatch: map.size() = " + map.size() - + ", linked list size = " + dumpCacheSize() ); - } + // If this is out of the sync block it can detect a mismatch + // where there is none. + if ( map.size() != dumpCacheSize() ) + { + log.warn( "update: After spool, size mismatch: map.size() = " + map.size() + ", linked list size = " + + dumpCacheSize() ); } } + return toSpool; + } - if ( log.isDebugEnabled() ) + /** + * This instructs the memory cache to remove the <i>numberToFree</i> + * according to its eviction policy. For example, the LRUMemoryCache will + * remove the <i>numberToFree</i> least recently used items. These will be + * spooled to disk if a disk auxiliary is available. + * <p> + * @param numberToFree + * @return the number that were removed. if you ask to free 5, but there are + * only 3, you will get 3. + * @throws IOException + */ + public int freeElements( int numberToFree ) + throws IOException + { + int freed = 0; + for ( ; freed < numberToFree; freed++ ) { - log.debug( "update: After spool map size: " + map.size() + " linked list size = " + dumpCacheSize() ); + ICacheElement element = spoolLastElement(); + if ( element == null ) + { + break; + } } - + return freed; } - + /** * Get an item from the cache without affecting its last access time or * position. - * + * <p> * @param key * Identifies item to find * @return Element mathinh key if found, or null @@ -227,7 +262,7 @@ /** * Get an item from the cache - * + * <p> * @param key * Identifies item to find * @return ICacheElement if found, else null @@ -276,7 +311,7 @@ * If the key is a String and ends with the * CacheConstants.NAME_COMPONENT_DELIMITER, then all items with keys * starting with the argument String will be removed. - * + * <p> * @param key * @return * @exception IOException @@ -352,7 +387,7 @@ /** * Remove all of the elements from both the Map and the linked list * implementation. Overrides base class. - * + * <p> * @throws IOException */ public synchronized void removeAll() @@ -364,9 +399,7 @@ // --------------------------- iteration mehods (iteration helpers) /** - * * iteration aid - * */ public class IteratorWrapper implements Iterator @@ -407,10 +440,7 @@ } /** - * - * * @author Aaron Smuts - * */ public class MapEntryWrapper implements Map.Entry @@ -451,7 +481,7 @@ /** * Gets the iterator attribute of the LRUMemoryCache object - * + * <p> * @return The iterator value */ public Iterator getIterator() @@ -461,7 +491,6 @@ /** * Get an Array of the keys for all elements in the memory cache - * * @return An Object[] */ public Object[] getKeyArray() @@ -477,7 +506,7 @@ // --------------------------- internal mehods (linked list implementation) /** * Adds a new node to the end of the link list. Currently not used. - * + * <p> * @param ce * The feature to be added to the Last */ @@ -490,7 +519,7 @@ /** * Adds a new node to the start of the link list. - * + * <p> * @param ce * The feature to be added to the First */ @@ -532,7 +561,6 @@ /** * Returns the size of the list. - * * @return */ private int dumpCacheSize() @@ -543,7 +571,6 @@ /** * Checks to see if all the items that should be in the cache are. Checks * consistency between List and map. - * */ private void verifyCache() { @@ -633,7 +660,7 @@ /** * Logs an error is an element that should be in the cache is not. - * + * <p> * @param key */ private void verifyCache( Serializable key ) @@ -663,7 +690,6 @@ /* * (non-Javadoc) - * * @see org.apache.jcs.engine.memory.MemoryCache#getStatistics() */ public IStats getStatistics() Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/mru/MRUMemoryCache.java URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/mru/MRUMemoryCache.java?rev=430809&r1=430808&r2=430809&view=diff ============================================================================== --- jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/mru/MRUMemoryCache.java (original) +++ jakarta/jcs/trunk/src/java/org/apache/jcs/engine/memory/mru/MRUMemoryCache.java Fri Aug 11 08:51:10 2006 @@ -1,19 +1,14 @@ package org.apache.jcs.engine.memory.mru; /* - * Copyright 2001-2004 The Apache Software Foundation. - * - * Licensed 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. + * Copyright 2001-2004 The Apache Software Foundation. Licensed 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.io.IOException; @@ -38,13 +33,12 @@ import org.apache.jcs.engine.stats.behavior.IStats; /** - * A SLOW reference management system. The most recently used items move - * to the front of the list and get spooled to disk if the cache hub is - * configured to use a disk cache. + * A SLOW reference management system. The most recently used items move to the + * front of the list and get spooled to disk if the cache hub is configured to + * use a disk cache. * <p> * This class is mainly for testing the hub. It also shows that use the * Collection LinkedList is far slower than JCS' own double linked list. - * */ public class MRUMemoryCache extends AbstractMemoryCache @@ -71,7 +65,6 @@ /** * For post reflection creation initialization - * * @param hub */ public synchronized void initialize( CompositeCache hub ) @@ -82,7 +75,6 @@ /** * Puts an item to the cache. - * * @param ce * @exception IOException */ @@ -144,19 +136,8 @@ // and wouldn't save much time in this synchronous call. for ( int i = 0; i < chunkSizeCorrected; i++ ) { - - ICacheElement toSpool = null; - - // need a more fine grained locking here - synchronized ( lockMe ) - { - Serializable last = (Serializable) mrulist.removeLast(); - toSpool = (ICacheElement) map.get( last ); - map.remove( last ); - } - // Might want to rename this "overflow" incase the hub - // wants to do something else. - cache.spoolToDisk( toSpool ); + // remove the last + spoolLastElement(); } if ( log.isDebugEnabled() ) @@ -175,9 +156,63 @@ } /** + * This removes the last elemement in the list. + * <p> + * @return ICacheElement if there was a last element, else null. + */ + protected ICacheElement spoolLastElement() + { + ICacheElement toSpool = null; + + // need a more fine grained locking here + synchronized ( lockMe ) + { + Serializable last = (Serializable) mrulist.removeLast(); + if ( last != null ) + { + toSpool = (ICacheElement) map.get( last ); + map.remove( last ); + } + } + // Might want to rename this "overflow" incase the hub + // wants to do something else. + if ( toSpool != null ) + { + cache.spoolToDisk( toSpool ); + } + + return toSpool; + } + + /** + * This instructs the memory cache to remove the <i>numberToFree</i> + * according to its eviction policy. For example, the LRUMemoryCache will + * remove the <i>numberToFree</i> least recently used items. These will be + * spooled to disk if a disk auxiliary is available. + * <p> + * @param numberToFree + * @return the number that were removed. if you ask to free 5, but there are + * only 3, you will get 3. + * @throws IOException + */ + public int freeElements( int numberToFree ) + throws IOException + { + int freed = 0; + for ( ; freed < numberToFree; freed++ ) + { + ICacheElement element = spoolLastElement(); + if ( element == null ) + { + break; + } + } + return freed; + } + + /** * Get an item from the cache without affecting its last access time or * position. - * * @return Element mathinh key if found, or null * @param key * Identifies item to find @@ -211,11 +246,9 @@ return ce; } - /** * Gets an item out of the map. If it finds an item, it is removed from the * list and then added to the first position in the linked list. - * * @return * @param key * @exception IOException @@ -294,7 +327,6 @@ /** * Removes an item from the cache. - * * @return * @param key * @exception IOException @@ -323,7 +355,7 @@ { itr.remove(); Serializable keyR = (Serializable) entry.getKey(); - //map.remove( keyR ); + // map.remove( keyR ); mrulist.remove( keyR ); removed = true; } @@ -368,7 +400,6 @@ /** * Get an Array of the keys for all elements in the memory cache - * * @return Object[] */ public Object[] getKeyArray() @@ -411,7 +442,6 @@ /* * (non-Javadoc) - * * @see org.apache.jcs.engine.memory.MemoryCache#getStatistics() */ public IStats getStatistics() Modified: jakarta/jcs/trunk/src/java/org/apache/jcs/utils/serialization/StandardSerializer.java URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/java/org/apache/jcs/utils/serialization/StandardSerializer.java?rev=430809&r1=430808&r2=430809&view=diff ============================================================================== --- jakarta/jcs/trunk/src/java/org/apache/jcs/utils/serialization/StandardSerializer.java (original) +++ jakarta/jcs/trunk/src/java/org/apache/jcs/utils/serialization/StandardSerializer.java Fri Aug 11 08:51:10 2006 @@ -18,7 +18,6 @@ public class StandardSerializer implements IElementSerializer { - /** * Serializes an object using default serilaization. */ Added: jakarta/jcs/trunk/src/test-conf/TestARCCache.ccf URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test-conf/TestARCCache.ccf?rev=430809&view=auto ============================================================================== --- jakarta/jcs/trunk/src/test-conf/TestARCCache.ccf (added) +++ jakarta/jcs/trunk/src/test-conf/TestARCCache.ccf Fri Aug 11 08:51:10 2006 @@ -0,0 +1,17 @@ +# JCS Config for unit testing, just a simple memory only cache, with 10 max size +# with the memory shrinker on. + +jcs.default= +jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes +jcs.default.cacheattributes.MaxObjects=10 +jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.arc.ARCMemoryCache +jcs.default.cacheattributes.UseMemoryShrinker=false +jcs.default.cacheattributes.MaxMemoryIdleTimeSeconds=3600 +jcs.default.cacheattributes.ShrinkerIntervalSeconds=1 +jcs.default.elementattributes=org.apache.jcs.engine.ElementAttributes +jcs.default.elementattributes.IsEternal=true +jcs.default.elementattributes.MaxLifeSeconds=600 +jcs.default.elementattributes.IdleTime=1800 +jcs.default.elementattributes.IsSpool=true +jcs.default.elementattributes.IsRemote=true +jcs.default.elementattributes.IsLateral=true Modified: jakarta/jcs/trunk/src/test-conf/TestTCPLateralCacheConcurrent.ccf URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test-conf/TestTCPLateralCacheConcurrent.ccf?rev=430809&r1=430808&r2=430809&view=diff ============================================================================== --- jakarta/jcs/trunk/src/test-conf/TestTCPLateralCacheConcurrent.ccf (original) +++ jakarta/jcs/trunk/src/test-conf/TestTCPLateralCacheConcurrent.ccf Fri Aug 11 08:51:10 2006 @@ -10,6 +10,6 @@ jcs.auxiliary.LTCP.attributes.TransmissionTypeName=TCP #jcs.auxiliary.LTCP.attributes.TcpServers= jcs.auxiliary.LTCP.attributes.TcpListenerPort=1102 -jcs.auxiliary.LTCP.attributes.AllowGet=false +jcs.auxiliary.LTCP.attributes.AllowGet=true Modified: jakarta/jcs/trunk/src/test-conf/log4j.properties URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test-conf/log4j.properties?rev=430809&r1=430808&r2=430809&view=diff ============================================================================== --- jakarta/jcs/trunk/src/test-conf/log4j.properties (original) +++ jakarta/jcs/trunk/src/test-conf/log4j.properties Fri Aug 11 08:51:10 2006 @@ -17,7 +17,7 @@ log4j.appender.logfile=org.apache.log4j.RollingFileAppender log4j.appender.logfile.File=target/test-sandbox/logs/jcs.log -log4j.appender.logfile.MaxFileSize=2MB +log4j.appender.logfile.MaxFileSize=5MB # Keep three backup files log4j.appender.logfile.MaxBackupIndex=3 log4j.appender.logfile.layout=org.apache.log4j.PatternLayout Modified: jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPConcurrentRandomTestUtil.java URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPConcurrentRandomTestUtil.java?rev=430809&r1=430808&r2=430809&view=diff ============================================================================== --- jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPConcurrentRandomTestUtil.java (original) +++ jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPConcurrentRandomTestUtil.java Fri Aug 11 08:51:10 2006 @@ -16,7 +16,6 @@ { private static boolean isSysOut = false; - //private static boolean isSysOut = true; /** @@ -41,7 +40,7 @@ * Randomly adds items to cache, gets them, and removes them. The range * count is more than the size of the memory cache, so items should spool to * disk. - * + * <p> * @param region * Name of the region to access * @param range @@ -54,13 +53,12 @@ public void runTestForRegion( String region, int range, int numOps, int testNum ) throws Exception { - boolean show = true;//false; JCS cache = JCS.getInstance( region ); TCPLateralCacheAttributes lattr2 = new TCPLateralCacheAttributes(); - lattr2.setTcpListenerPort( 1102 ); + lattr2.setTcpListenerPort( 1103 ); lattr2.setTransmissionTypeName( "TCP" ); lattr2.setTcpServer( "localhost:1102" ); Modified: jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPNoDeadLockConcurrentTest.java URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPNoDeadLockConcurrentTest.java?rev=430809&r1=430808&r2=430809&view=diff ============================================================================== --- jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPNoDeadLockConcurrentTest.java (original) +++ jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPNoDeadLockConcurrentTest.java Fri Aug 11 08:51:10 2006 @@ -26,7 +26,6 @@ /** * Test which exercises the tcp lateral cache. Runs two threads against the * same region and two against other regions. - * */ public class LateralTCPNoDeadLockConcurrentTest extends TestCase @@ -135,5 +134,4 @@ e.printStackTrace(); } } - } Modified: jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/TestTCPLateral.java URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/TestTCPLateral.java?rev=430809&r1=430808&r2=430809&view=diff ============================================================================== --- jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/TestTCPLateral.java (original) +++ jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/TestTCPLateral.java Fri Aug 11 08:51:10 2006 @@ -33,7 +33,7 @@ * Make sure we can send a bunch to the listener. This would be better if we * could plugin a Mock CacheManger. The listener will instantiate on on its * own. We have to configure one before that. - * + * <p> * @throws Exception */ public void testSimpleSend() @@ -129,9 +129,9 @@ public void testSameKeyDifferentObject() throws Exception { + // setup a listener TCPLateralCacheAttributes lattr = new TCPLateralCacheAttributes(); - lattr.setTcpListenerPort( 1101 ); - lattr.setTransmissionTypeName( "TCP" ); + lattr.setTcpListenerPort( 1103 ); CompositeCacheManagerMockImpl cacheMgr = new CompositeCacheManagerMockImpl(); System.out.println( "mock cache = " + cacheMgr.getCache( "test" ) ); @@ -140,10 +140,10 @@ //LateralTCPListener listener = (LateralTCPListener) LateralTCPListener.getInstance( lattr, cacheMgr ); + // setup a service to talk to the listener started above. TCPLateralCacheAttributes lattr2 = new TCPLateralCacheAttributes(); - lattr2.setTcpListenerPort( 1102 ); - lattr2.setTransmissionTypeName( "TCP" ); - lattr2.setTcpServer( "localhost:1101" ); + lattr2.setTcpListenerPort( 1104 ); + lattr2.setTcpServer( "localhost:1103" ); LateralTCPService service = new LateralTCPService( lattr2 ); service.setListenerId( 123456 ); @@ -172,7 +172,7 @@ throws Exception { TCPLateralCacheAttributes lattr = new TCPLateralCacheAttributes(); - lattr.setTcpListenerPort( 1101 ); + lattr.setTcpListenerPort( 1105 ); lattr.setTransmissionTypeName( "TCP" ); CompositeCacheManagerMockImpl cacheMgr = new CompositeCacheManagerMockImpl(); System.out.println( "mock cache = " + cacheMgr.getCache( "test" ) ); @@ -183,9 +183,9 @@ LateralTCPListener.getInstance( lattr, cacheMgr ); TCPLateralCacheAttributes lattr2 = new TCPLateralCacheAttributes(); - lattr2.setTcpListenerPort( 1102 ); + lattr2.setTcpListenerPort( 1106); lattr2.setTransmissionTypeName( "TCP" ); - lattr2.setTcpServer( "localhost:1101" ); + lattr2.setTcpServer( "localhost:1105" ); LateralTCPService service = new LateralTCPService( lattr2 ); service.setListenerId( 123456 ); @@ -205,4 +205,45 @@ System.out.println( "cacheElement = " + cacheElement ); assertEquals( "Didn't get the correct object", element2.getVal(), cacheElement.getVal() ); } + + /** + * Create a listener. Add an element to the listeners cache. Setup a service. Try to get from the service. + * <p> + * @throws Exception + */ + public void testSendAndReceived() + throws Exception + { + // setup a listener + TCPLateralCacheAttributes lattr = new TCPLateralCacheAttributes(); + lattr.setTcpListenerPort( 1107 ); + CompositeCacheManagerMockImpl cacheMgr = new CompositeCacheManagerMockImpl(); + System.out.println( "mock cache = " + cacheMgr.getCache( "test" ) ); + + // get the listener started + // give it our mock cache manager + //LateralTCPListener listener = (LateralTCPListener) + LateralTCPListener.getInstance( lattr, cacheMgr ); + + // add the item to the listeners cache + ICacheElement element = new CacheElement( "test", "key", "value1" ); + cacheMgr.getCache().update( element ); + + // setup a service to talk to the listener started above. + TCPLateralCacheAttributes lattr2 = new TCPLateralCacheAttributes(); + lattr2.setTcpListenerPort( 1108 ); + lattr2.setTcpServer( "localhost:1107" ); + + LateralTCPService service = new LateralTCPService( lattr2 ); + service.setListenerId( 123456 ); + + Thread.sleep( 300 ); + + // DO WORK + ICacheElement result = service.get( "test", "key" ); + + System.out.println( "testSendAndReceived, result = " + result ); + assertNotNull( "Result should not be null.", result ); + assertEquals( "Didn't get the correct object", element.getVal(), result.getVal() ); + } } Modified: jakarta/jcs/trunk/src/test/org/apache/jcs/engine/memory/MemoryCacheMockImpl.java URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/src/test/org/apache/jcs/engine/memory/MemoryCacheMockImpl.java?rev=430809&r1=430808&r2=430809&view=diff ============================================================================== --- jakarta/jcs/trunk/src/test/org/apache/jcs/engine/memory/MemoryCacheMockImpl.java (original) +++ jakarta/jcs/trunk/src/test/org/apache/jcs/engine/memory/MemoryCacheMockImpl.java Fri Aug 11 08:51:10 2006 @@ -37,7 +37,6 @@ public class MemoryCacheMockImpl implements MemoryCache { - private ICompositeCacheAttributes cacheAttr; private HashMap map = new HashMap(); @@ -152,4 +151,13 @@ return null; } + /* (non-Javadoc) + * @see org.apache.jcs.engine.memory.MemoryCache#freeElements(int) + */ + public int freeElements( int numberToFree ) + throws IOException + { + // TODO Auto-generated method stub + return 0; + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
