You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ar...@apache.org on 2005/09/08 19:52:59 UTC
cvs commit: db-ojb/src/test/org/apache/ojb cache.ccf
arminw 2005/09/08 10:52:59
Modified: src/java/org/apache/ojb/broker/cache ObjectCacheJCSImpl.java
src/test/org/apache/ojb/broker/cache ObjectCacheTest.java
src/test/org/apache/ojb cache.ccf
Log:
fix problem with cache configuration
Revision Changes Path
1.14 +21 -5 db-ojb/src/java/org/apache/ojb/broker/cache/ObjectCacheJCSImpl.java
Index: ObjectCacheJCSImpl.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/cache/ObjectCacheJCSImpl.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- ObjectCacheJCSImpl.java 27 Aug 2005 12:06:45 -0000 1.13
+++ ObjectCacheJCSImpl.java 8 Sep 2005 17:52:58 -0000 1.14
@@ -54,13 +54,13 @@
* <td><strong>Property Values</strong></td>
* </tr>
* <tr>
- * <td>jcs.maxObjects</td>
+ * <td>jcs.MaxObjects</td>
* <td>
* Set the maximal number of cached objects.
* </td>
* </tr>
* <tr>
- * <td>jcs.maxLifeSeconds</td>
+ * <td>jcs.MaxLifeSeconds</td>
* <td>
* Same as attribute <em>lifetime</em> in element <em>ObjectCache</em>.<br/>
* You can define the maximum life of an item by setting this parameter.
@@ -75,12 +75,27 @@
public class ObjectCacheJCSImpl extends AbstractObjectCache
{
private Logger log = LoggerFactory.getLogger(ObjectCacheJCSImpl.class);
+ /*
+ TODO: which properties shall we support?
+ MaxObjects=2
+ MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
+ UseMemoryShrinker=false
+ MaxMemoryIdleTimeSeconds=2
+ ShrinkerIntervalSeconds=1
+ MaxSpoolPerRun=500
+ IsEternal=false
+ MaxLifeSeconds=2
+ IsSpool=false
+ IsRemote=false
+ IsLateral=false
+ */
+
/**
* The used default region name.
*/
public static final String DEFAULT_REGION = "ojbDefaultJCSRegion";
- public static final String PROP_MAX_OBJECTS = "jcs.maxObjects";
- public static final String PROP_MAX_LIFE_SECONDS = "jcs.maxLifeSeconds";
+ public static final String PROP_MAX_OBJECTS = "jcs.MaxObjects";
+ public static final String PROP_MAX_LIFE_SECONDS = "jcs.MaxLifeSeconds";
private JCS jcsCache;
private ObjectCacheDescriptor ocd;
@@ -102,6 +117,7 @@
try
{
jcsCache = JCS.getInstance(region);
+ jcsCache.getElementAttributes().setIsEternal(false);
if(ocd.getTimeout() != null)
{
1.8 +35 -39 db-ojb/src/test/org/apache/ojb/broker/cache/ObjectCacheTest.java
Index: ObjectCacheTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/cache/ObjectCacheTest.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- ObjectCacheTest.java 27 Aug 2005 12:41:20 -0000 1.7
+++ ObjectCacheTest.java 8 Sep 2005 17:52:59 -0000 1.8
@@ -73,32 +73,32 @@
broker = persistenceConf.createPersistenceBroker();
}
- public void XXXtestBaseObjectCacheDefaultImpl() throws Exception
+ public void testBaseObjectCacheDefaultImpl() throws Exception
{
cacheBaseFunctions(CachingStrategyDefaultImpl.class, ObjectCacheDefaultImpl.class);
}
- public void XXXtestBaseObjectCacheJCSImpl() throws Exception
+ public void testBaseObjectCacheJCSImpl() throws Exception
{
cacheBaseFunctions(CachingStrategyDefaultImpl.class, ObjectCacheJCSImpl.class);
}
- public void XXXtestBaseObjectCacheOSCacheImpl() throws Exception
+ public void testBaseObjectCacheOSCacheImpl() throws Exception
{
cacheBaseFunctions(CachingStrategyDefaultImpl.class, ObjectCacheOSCacheImpl.class);
}
- public void XXXtestBaseObjectCacheDefaultImpl_2() throws Exception
+ public void testBaseObjectCacheDefaultImpl_2() throws Exception
{
cacheBaseFunctions(CachingStrategyTwoLevelImpl.class, ObjectCacheDefaultImpl.class);
}
- public void XXXtestBaseObjectCacheJCSImpl_2() throws Exception
+ public void testBaseObjectCacheJCSImpl_2() throws Exception
{
cacheBaseFunctions(CachingStrategyTwoLevelImpl.class, ObjectCacheJCSImpl.class);
}
- public void XXXtestBaseObjectCacheOSCacheImpl_2() throws Exception
+ public void testBaseObjectCacheOSCacheImpl_2() throws Exception
{
cacheBaseFunctions(CachingStrategyTwoLevelImpl.class, ObjectCacheOSCacheImpl.class);
}
@@ -157,7 +157,7 @@
/**
* Test the two-level cache mode.
*/
- public void XXXtestCompareObjectIdentityTwoLevelDefaultImpl() throws Exception
+ public void testCompareObjectIdentityTwoLevelDefaultImpl() throws Exception
{
cacheCompareObjectIdentityTwoLevel(ObjectCacheDefaultImpl.class);
}
@@ -165,7 +165,7 @@
/**
* Test the two-level cache mode.
*/
- public void XXXtestCompareObjectIdentityTwoLevelJCSImpl() throws Exception
+ public void testCompareObjectIdentityTwoLevelJCSImpl() throws Exception
{
cacheCompareObjectIdentityTwoLevel(ObjectCacheJCSImpl.class);
}
@@ -173,7 +173,7 @@
/**
* Test the two-level cache mode.
*/
- public void XXXtestCompareObjectIdentityTwoLevelOSCacheImpl() throws Exception
+ public void testCompareObjectIdentityTwoLevelOSCacheImpl() throws Exception
{
cacheCompareObjectIdentityTwoLevel(ObjectCacheOSCacheImpl.class);
}
@@ -243,7 +243,7 @@
* using LRU-strategy and 'timeout' objects setting
* @throws Exception
*/
- public void XXXtestObjectCacheDefaultImplTimeoutAndMaxEntry() throws Exception
+ public void testObjectCacheDefaultImplTimeoutAndMaxEntry() throws Exception
{
ObjectCacheDescriptor ocd = new ObjectCacheDescriptor(broker.getConfiguration().getJdbcConnectionDescriptor());
ocd.setCachingStrategy(CachingStrategyDefaultImpl.class);
@@ -264,16 +264,13 @@
*/
public void testObjectCacheJCSImplTimeoutAndMaxObjects() throws Exception
{
- if(ojbSkipKnownIssueProblem("Know problem caused by JCS, seems 'maxObjects'" +
- " and 'maxLifeSeconds' setting don't work properly")) return;
-
ObjectCacheDescriptor ocd = new ObjectCacheDescriptor(broker.getConfiguration().getJdbcConnectionDescriptor());
ocd.setCachingStrategy(CachingStrategyDefaultImpl.class);
ocd.setObjectCache(ObjectCacheJCSImpl.class);
// most important setting
ocd.setTimeout(new Integer(1));
- ocd.addAttribute(ObjectCacheJCSImpl.PROP_MAX_OBJECTS, "2");
- ocd.addAttribute(ObjectCacheJCSImpl.PROP_MAX_LIFE_SECONDS, "2");
+ ocd.addAttribute(ObjectCacheJCSImpl.PROP_MAX_OBJECTS, "3");
+ ocd.addAttribute(ObjectCacheJCSImpl.PROP_MAX_LIFE_SECONDS, "1");
timeoutMaxObjectTestFor(ocd);
}
@@ -282,7 +279,7 @@
* Test timeout and max objects setting for OSCache
* @throws Exception
*/
- public void XXXtestObjectCacheOSCacheImplTimeoutAndMaxObjects() throws Exception
+ public void testObjectCacheOSCacheImplTimeoutAndMaxObjects() throws Exception
{
ObjectCacheDescriptor ocd = new ObjectCacheDescriptor(broker.getConfiguration().getJdbcConnectionDescriptor());
ocd.setCachingStrategy(CachingStrategyDefaultImpl.class);
@@ -297,7 +294,7 @@
protected void timeoutMaxObjectTestFor(ObjectCacheDescriptor ocd) throws Exception
{
prepareNewCache(ocd);
-System.out.println("Cache: " + broker.serviceSessionCache().getCachingStrategy(CacheObject.class));
+// System.out.println("Cache: " + broker.serviceSessionCache().getCachingStrategy(CacheObject.class));
try
{
CacheObject obj_1 = new CacheObject();
@@ -355,16 +352,13 @@
* Test the JCS cache implementation. In JCS config file the following
* properties are set:
* <br/>
- * jcs.region.org.apache.ojb.broker.cache.ObjectCacheTest$CacheObject.cacheattributes.MaxObjects=3
+ * jcs.region.org.apache.ojb.broker.cache.ObjectCacheTest$CacheObject.cacheattributes.MaxObjects=2
* jcs.region.org.apache.ojb.broker.cache.ObjectCacheTest$CacheObject.cacheattributes.MaxMemoryIdleTimeSeconds=2
* jcs.region.org.apache.ojb.broker.cache.ObjectCacheTest$CacheObject.cacheattributes.UseMemoryShrinker=true
* jcs.region.org.apache.ojb.broker.cache.ObjectCacheTest$CacheObject.cacheattributes.ShrinkerIntervalSeconds=1
*/
- public void XXXtestJCSObjectCacheConfigFile() throws Exception
+ public void testJCSObjectCacheConfigFile() throws Exception
{
- if(ojbSkipKnownIssueProblem("Know problem caused by JCS, seems 'maxObjects'" +
- " and 'maxLifeSeconds' setting don't work properly")) return;
-
ObjectCacheDescriptor ocd = new ObjectCacheDescriptor(broker.getConfiguration().getJdbcConnectionDescriptor());
ocd.setCachingStrategy(CachingStrategyDefaultImpl.class);
ocd.setObjectCache(ObjectCacheJCSImpl.class);
@@ -382,20 +376,22 @@
cache.cache(oid_1, obj_1);
cache.cache(oid_2, obj_2);
cache.cache(oid_2, obj_3);
-
- // two objects should be found
- assertNotNull(cache.lookup(oid_1));
- assertNotNull(cache.lookup(oid_2));
- assertNotNull(cache.lookup(oid_3));
cache.cache(oid_4, obj_4);
- // we only allow two objects in cache region
- boolean bool = cache.lookup(oid_1) != null;
- bool = bool && cache.lookup(oid_2) != null;
- bool = bool && cache.lookup(oid_3) != null;
- bool = bool && cache.lookup(oid_4) != null;
- assertFalse("We should not found all cached objects", bool);
+
+ // we only allow three objects in cache region
+ CacheObject new_1 = (CacheObject) cache.lookup(oid_1);
+ CacheObject new_2 = (CacheObject) cache.lookup(oid_2);
+ CacheObject new_3 = (CacheObject) cache.lookup(oid_3);
+ CacheObject new_4 = (CacheObject) cache.lookup(oid_4);
+ int count = 0;
+ if(new_1 != null) ++count;
+ if(new_2 != null) ++count;
+ if(new_3 != null) ++count;
+ if(new_4 != null) ++count;
+ assertEquals(2, count);
+
// idle time is 2 sec
- Thread.sleep(3500);
+ Thread.sleep(2000);
assertNull(cache.lookup(oid_1));
assertNull(cache.lookup(oid_2));
assertNull(cache.lookup(oid_3));
@@ -409,7 +405,7 @@
* Thus we should found 'CacheObject' instance in cache, but NOT found
* 'EmptyCacheObject' instance.
*/
- public void XXXtestPerClassCache() throws Exception
+ public void testPerClassCache() throws Exception
{
String name = "testPerClassCache_" + System.currentTimeMillis();
@@ -437,7 +433,7 @@
* This should be ObjectCacheEmptyImpl, because this is declared at jdbc-connection-descriptor
* level.
*/
- public void XXXtestPerDatabaseCache()
+ public void testPerDatabaseCache()
{
String name = "testPerDatabaseCache_" + System.currentTimeMillis();
ConnectionRepository cr = ojb.getMetadataManager()
@@ -466,7 +462,7 @@
* caching.
* @throws Exception
*/
- public void XXXtestCacheFilterFunctions() throws Exception
+ public void testCacheFilterFunctions() throws Exception
{
String name = "testCacheFilterFunctions_" + System.currentTimeMillis();
ObjectCacheDescriptor ocd = new ObjectCacheDescriptor(broker.getConfiguration().getJdbcConnectionDescriptor());
@@ -513,7 +509,7 @@
* changes made to an object in tx1 should not be visible in tx2 !
* TODO: once we work without global cache only (e.g. intern temporary cache), this test should pass!
*/
- public void XXXtestCacheIsolation() throws Exception
+ public void testCacheIsolation() throws Exception
{
String name = "testCacheIsolation_" + System.currentTimeMillis();
1.5 +11 -2 db-ojb/src/test/org/apache/ojb/cache.ccf
Index: cache.ccf
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/cache.ccf,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- cache.ccf 27 Aug 2005 12:46:14 -0000 1.4
+++ cache.ccf 8 Sep 2005 17:52:59 -0000 1.5
@@ -4,22 +4,31 @@
jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.default.cacheattributes.MaxObjects=1000
jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
+jcs.default.elementattributes.IsSpool=false
+jcs.default.elementattributes.IsRemote=false
+jcs.default.elementattributes.IsLateral=false
# default region used by the JCS ObjectCache implementations
jcs.region.ojbDefault=
jcs.region.ojbDefault.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.region.ojbDefault.cacheattributes.MaxObjects=1000
jcs.region.ojbDefault.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
+jcs.default.elementattributes.IsSpool=false
+jcs.default.elementattributes.IsRemote=false
+jcs.default.elementattributes.IsLateral=false
# region used by test case
jcs.region.org.apache.ojb.broker.cache.ObjectCacheTest$CacheObject=
jcs.region.org.apache.ojb.broker.cache.ObjectCacheTest$CacheObject.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
-jcs.region.org.apache.ojb.broker.cache.ObjectCacheTest$CacheObject.cacheattributes.MaxObjects=3
+jcs.region.org.apache.ojb.broker.cache.ObjectCacheTest$CacheObject.cacheattributes.MaxObjects=2
jcs.region.org.apache.ojb.broker.cache.ObjectCacheTest$CacheObject.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
-jcs.region.org.apache.ojb.broker.cache.ObjectCacheTest$CacheObject.cacheattributes.UseMemoryShrinker=true
+jcs.region.org.apache.ojb.broker.cache.ObjectCacheTest$CacheObject.cacheattributes.UseMemoryShrinker=false
jcs.region.org.apache.ojb.broker.cache.ObjectCacheTest$CacheObject.cacheattributes.MaxMemoryIdleTimeSeconds=2
jcs.region.org.apache.ojb.broker.cache.ObjectCacheTest$CacheObject.cacheattributes.ShrinkerIntervalSeconds=1
jcs.region.org.apache.ojb.broker.cache.ObjectCacheTest$CacheObject.cacheattributes.MaxSpoolPerRun=500
jcs.region.org.apache.ojb.broker.cache.ObjectCacheTest$CacheObject.elementattributes=org.apache.jcs.engine.ElementAttributes
jcs.region.org.apache.ojb.broker.cache.ObjectCacheTest$CacheObject.elementattributes.IsEternal=false
jcs.region.org.apache.ojb.broker.cache.ObjectCacheTest$CacheObject.elementattributes.MaxLifeSeconds=2
+jcs.default.elementattributes.IsSpool=false
+jcs.default.elementattributes.IsRemote=false
+jcs.default.elementattributes.IsLateral=false
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org