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]