dirkv 2004/08/10 12:39:13
Modified: pool/src/test/org/apache/commons/pool/impl
TestGenericObjectPool.java
Log:
Bugzilla Bug 30426: [pool] need property for removing objects above min
- applied patch from David Rosenstark (with some cleanups)
Revision Changes Path
1.24 +51 -1
jakarta-commons/pool/src/test/org/apache/commons/pool/impl/TestGenericObjectPool.java
Index: TestGenericObjectPool.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/pool/src/test/org/apache/commons/pool/impl/TestGenericObjectPool.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- TestGenericObjectPool.java 4 Jul 2004 17:21:47 -0000 1.23
+++ TestGenericObjectPool.java 10 Aug 2004 19:39:13 -0000 1.24
@@ -21,6 +21,7 @@
import junit.framework.Test;
import junit.framework.TestSuite;
+import org.apache.commons.pool.BasePoolableObjectFactory;
import org.apache.commons.pool.ObjectPool;
import org.apache.commons.pool.PoolableObjectFactory;
import org.apache.commons.pool.TestObjectPool;
@@ -593,6 +594,55 @@
assertTrue("Should be less than 100 idle, found " +
pool.getNumIdle(),pool.getNumIdle() < 100);
try { Thread.sleep(600L); } catch(Exception e) { }
assertEquals("Should be zero idle, found " +
pool.getNumIdle(),0,pool.getNumIdle());
+ }
+
+ public void testEvictionSoftMinIdle() throws Exception {
+ GenericObjectPool pool = null;
+
+ class TimeTest extends BasePoolableObjectFactory {
+ private final long createTime;
+ public TimeTest() {
+ createTime = System.currentTimeMillis();
+ }
+ public Object makeObject() throws Exception {
+ return new TimeTest();
+ }
+ public long getCreateTime() {
+ return createTime;
+ }
+ }
+
+ pool = new GenericObjectPool(new TimeTest());
+
+ pool.setMaxIdle(5);
+ pool.setMaxActive(5);
+ pool.setNumTestsPerEvictionRun(5);
+ pool.setMinEvictableIdleTimeMillis(3000L);
+ pool.setTimeBetweenEvictionRunsMillis(250L);
+ pool.setTestWhileIdle(true);
+ pool.setSoftMinEvictableIdleTimeMillis(1000L);
+ pool.setMinIdle(2);
+
+ Object[] active = new Object[5];
+ Long[] creationTime = new Long[5] ;
+ for(int i=0;i<5;i++) {
+ active[i] = pool.borrowObject();
+ creationTime[i] = new Long(((TimeTest)active[i]).getCreateTime());
+ }
+
+ for(int i=0;i<5;i++) {
+ pool.returnObject(active[i]);
+ }
+
+ try { Thread.sleep(1500L); } catch(Exception e) { }
+ assertTrue("Should be 2 OLD idle, found " +
pool.getNumIdle(),pool.getNumIdle() == 2 &&
+ ((TimeTest)pool.borrowObject()).getCreateTime() ==
creationTime[3].longValue() &&
+ ((TimeTest)pool.borrowObject()).getCreateTime() ==
creationTime[4].longValue());
+
+ try { Thread.sleep(2000L); } catch(Exception e) { }
+ assertTrue("Should be 2 NEW idle , found " +
pool.getNumIdle(),pool.getNumIdle() == 2 &&
+ ((TimeTest)pool.borrowObject()).getCreateTime() !=
creationTime[0].longValue() &&
+ ((TimeTest)pool.borrowObject()).getCreateTime() !=
creationTime[1].longValue());
}
public void testMinIdle() throws Exception {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]