You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ps...@apache.org on 2009/03/19 16:58:50 UTC

svn commit: r756065 - /commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestGenericObjectPool.java

Author: psteitz
Date: Thu Mar 19 15:58:49 2009
New Revision: 756065

URL: http://svn.apache.org/viewvc?rev=756065&view=rev
Log:
Backported fix to softMinEvictableIdleTime test from 1.3 release branch.

Modified:
    commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestGenericObjectPool.java

Modified: commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestGenericObjectPool.java
URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestGenericObjectPool.java?rev=756065&r1=756064&r2=756065&view=diff
==============================================================================
--- commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestGenericObjectPool.java (original)
+++ commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestGenericObjectPool.java Thu Mar 19 15:58:49 2009
@@ -851,14 +851,8 @@
         try { Thread.sleep(600L); } catch(Exception e) { }
         assertEquals("Should be zero idle, found " + pool.getNumIdle(),0,pool.getNumIdle());
     }
-
-    /**
-     * This test has a number of problems.
-     * 1. without the wait code in the for loop the create time for each instance
-     * was usually the same due to clock presision.
-     * 2. It's very hard to follow.
-     */
-    public void DISABLEDtestEvictionSoftMinIdle() throws Exception {
+ 
+    public void testEvictionSoftMinIdle() throws Exception {
         GenericObjectPool pool = null;
         
         class TimeTest extends BasePoolableObjectFactory {
@@ -880,37 +874,29 @@
         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] ;
-        long lastCreationTime = System.currentTimeMillis();
         for(int i=0;i<5;i++) {
-            // make sure each instance has a different currentTimeMillis()
-            while (lastCreationTime == System.currentTimeMillis()) {
-                Thread.sleep(1);
-            }
             active[i] = pool.borrowObject();
             creationTime[i] = new Long(((TimeTest)active[i]).getCreateTime());
-            lastCreationTime = creationTime[i].longValue();
         }
         
         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());
+
+        // Soft evict all but minIdle(2)
+        Thread.sleep(1500L);
+        pool.evict();
+        assertEquals("Idle count different than expected.", 2, pool.getNumIdle());
+
+        // Hard evict the rest.
+        Thread.sleep(2000L);
+        pool.evict();
+        assertEquals("Idle count different than expected.", 0, pool.getNumIdle());
     }
 
     public void testMinIdle() throws Exception {