Author: sandymac
Date: Sun Mar  5 22:31:55 2006
New Revision: 383477

URL: http://svn.apache.org/viewcvs?rev=383477&view=rev
Log:
unit test improvements.

Modified:
    
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/TestPoolUtils.java

Modified: 
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/TestPoolUtils.java
URL: 
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/TestPoolUtils.java?rev=383477&r1=383476&r2=383477&view=diff
==============================================================================
--- 
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/TestPoolUtils.java
 (original)
+++ 
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/TestPoolUtils.java
 Sun Mar  5 22:31:55 2006
@@ -17,6 +17,7 @@
 package org.apache.commons.pool;
 
 import junit.framework.TestCase;
+import junit.framework.AssertionFailedError;
 
 import java.lang.reflect.Proxy;
 import java.lang.reflect.InvocationHandler;
@@ -29,6 +30,7 @@
 import java.util.Collection;
 import java.util.Map;
 import java.util.Iterator;
+import java.util.Arrays;
 
 /**
  * Unit tests for [EMAIL PROTECTED] PoolUtils}.
@@ -37,7 +39,7 @@
  * @version $Revision$ $Date$
  */
 public class TestPoolUtils extends TestCase {
-    
+
     /** Period between checks for minIdle tests. Increase this if you happen 
to get too many false failures. */
     private static final int CHECK_PERIOD = 300;
 
@@ -79,21 +81,7 @@
                 
(KeyedPoolableObjectFactory)createProxy(KeyedPoolableObjectFactory.class, 
calledMethods);
 
         final PoolableObjectFactory pof = PoolUtils.adapt(kpof);
-        pof.activateObject(null);
-        pof.destroyObject(null);
-        pof.makeObject();
-        pof.passivateObject(null);
-        pof.validateObject(null);
-        pof.toString();
-
-        final List expectedMethods = new ArrayList();
-        expectedMethods.add("activateObject");
-        expectedMethods.add("destroyObject");
-        expectedMethods.add("makeObject");
-        expectedMethods.add("passivateObject");
-        expectedMethods.add("validateObject");
-        expectedMethods.add("toString");
-
+        final List expectedMethods = invokeEveryMethod(pof);
         assertEquals(expectedMethods, calledMethods);
     }
 
@@ -110,21 +98,7 @@
                 
(PoolableObjectFactory)createProxy(PoolableObjectFactory.class, calledMethods);
 
         final KeyedPoolableObjectFactory kpof = PoolUtils.adapt(pof);
-        kpof.activateObject(null, null);
-        kpof.destroyObject(null, null);
-        kpof.makeObject(null);
-        kpof.passivateObject(null, null);
-        kpof.validateObject(null, null);
-        kpof.toString();
-
-        final List expectedMethods = new ArrayList();
-        expectedMethods.add("activateObject");
-        expectedMethods.add("destroyObject");
-        expectedMethods.add("makeObject");
-        expectedMethods.add("passivateObject");
-        expectedMethods.add("validateObject");
-        expectedMethods.add("toString");
-
+        final List expectedMethods = invokeEveryMethod(kpof);
         assertEquals(expectedMethods, calledMethods);
     }
 
@@ -155,29 +129,7 @@
         final KeyedObjectPool kop = 
(KeyedObjectPool)createProxy(KeyedObjectPool.class, calledMethods);
 
         final ObjectPool op = PoolUtils.adapt(kop, new Object());
-        op.addObject();
-        op.borrowObject();
-        op.clear();
-        op.close();
-        op.getNumActive();
-        op.getNumIdle();
-        op.invalidateObject(null);
-        op.returnObject(null);
-        
op.setFactory((PoolableObjectFactory)createProxy(PoolableObjectFactory.class, 
null));
-        op.toString();
-
-        final List expectedMethods = new ArrayList();
-        expectedMethods.add("addObject");
-        expectedMethods.add("borrowObject");
-        expectedMethods.add("clear");
-        expectedMethods.add("close");
-        expectedMethods.add("getNumActive");
-        expectedMethods.add("getNumIdle");
-        expectedMethods.add("invalidateObject");
-        expectedMethods.add("returnObject");
-        expectedMethods.add("setFactory");
-        expectedMethods.add("toString");
-
+        final List expectedMethods = invokeEveryMethod(op);
         assertEquals(expectedMethods, calledMethods);
     }
 
@@ -193,35 +145,7 @@
         final ObjectPool op = (ObjectPool)createProxy(ObjectPool.class, 
calledMethods);
 
         final KeyedObjectPool kop = PoolUtils.adapt(op);
-        kop.addObject(null);
-        kop.borrowObject(null);
-        kop.clear();
-        kop.clear(null);
-        kop.close();
-        kop.getNumActive();
-        kop.getNumActive(null);
-        kop.getNumIdle();
-        kop.getNumIdle(null);
-        kop.invalidateObject(null, null);
-        kop.returnObject(null, null);
-        
kop.setFactory((KeyedPoolableObjectFactory)createProxy(KeyedPoolableObjectFactory.class,
 null));
-        kop.toString();
-
-        final List expectedMethods = new ArrayList();
-        expectedMethods.add("addObject");
-        expectedMethods.add("borrowObject");
-        expectedMethods.add("clear");
-        expectedMethods.add("clear");
-        expectedMethods.add("close");
-        expectedMethods.add("getNumActive");
-        expectedMethods.add("getNumActive");
-        expectedMethods.add("getNumIdle");
-        expectedMethods.add("getNumIdle");
-        expectedMethods.add("invalidateObject");
-        expectedMethods.add("returnObject");
-        expectedMethods.add("setFactory");
-        expectedMethods.add("toString");
-
+        final List expectedMethods = invokeEveryMethod(kop);
         assertEquals(expectedMethods, calledMethods);
     }
 
@@ -240,21 +164,34 @@
             // expected
         }
 
-        final List calledMethods = new ArrayList();
-        final ObjectPool pool = (ObjectPool)createProxy(ObjectPool.class, 
calledMethods);
-        final TimerTask task = PoolUtils.checkMinIdle(pool, 1, CHECK_PERIOD); 
// checks minIdle immediately
-
-        Thread.sleep(CHECK_SLEEP_PERIOD); // will check CHECK_COUNT more times.
-        task.cancel();
-        task.toString();
-
-        final List expectedMethods = new ArrayList();
-        for (int i=0; i < CHECK_COUNT; i++) {
-            expectedMethods.add("getNumIdle");
-            expectedMethods.add("addObject");
+        // Because this isn't determinist and you can get false failures, try 
more than once.
+        AssertionFailedError afe = null;
+        int triesLeft = 3;
+        do {
+            afe = null;
+            try {
+                final List calledMethods = new ArrayList();
+                final ObjectPool pool = 
(ObjectPool)createProxy(ObjectPool.class, calledMethods);
+                final TimerTask task = PoolUtils.checkMinIdle(pool, 1, 
CHECK_PERIOD); // checks minIdle immediately
+
+                Thread.sleep(CHECK_SLEEP_PERIOD); // will check CHECK_COUNT 
more times.
+                task.cancel();
+                task.toString();
+
+                final List expectedMethods = new ArrayList();
+                for (int i=0; i < CHECK_COUNT; i++) {
+                    expectedMethods.add("getNumIdle");
+                    expectedMethods.add("addObject");
+                }
+                expectedMethods.add("toString");
+                assertEquals(expectedMethods, calledMethods); // may fail 
because of the thread scheduler
+            } catch (AssertionFailedError e) {
+                afe = e;
+            }
+        } while (--triesLeft > 0 && afe != null);
+        if (afe != null) {
+            throw afe;
         }
-        expectedMethods.add("toString");
-        assertEquals(expectedMethods, calledMethods); // may fail because of 
the thread scheduler
     }
 
     public void testCheckMinIdleKeyedObjectPool() throws Exception {
@@ -279,22 +216,35 @@
             // expected
         }
 
-        final List calledMethods = new ArrayList();
-        final KeyedObjectPool pool = 
(KeyedObjectPool)createProxy(KeyedObjectPool.class, calledMethods);
-        final Object key = new Object();
-        final TimerTask task = PoolUtils.checkMinIdle(pool, key, 1, 
CHECK_PERIOD); // checks minIdle immediately
-
-        Thread.sleep(CHECK_SLEEP_PERIOD); // will check CHECK_COUNT more times.
-        task.cancel();
-        task.toString();
-
-        final List expectedMethods = new ArrayList();
-        for (int i=0; i < CHECK_COUNT; i++) {
-            expectedMethods.add("getNumIdle");
-            expectedMethods.add("addObject");
+        // Because this isn't determinist and you can get false failures, try 
more than once.
+        AssertionFailedError afe = null;
+        int triesLeft = 3;
+        do {
+            afe = null;
+            try {
+                final List calledMethods = new ArrayList();
+                final KeyedObjectPool pool = 
(KeyedObjectPool)createProxy(KeyedObjectPool.class, calledMethods);
+                final Object key = new Object();
+                final TimerTask task = PoolUtils.checkMinIdle(pool, key, 1, 
CHECK_PERIOD); // checks minIdle immediately
+
+                Thread.sleep(CHECK_SLEEP_PERIOD); // will check CHECK_COUNT 
more times.
+                task.cancel();
+                task.toString();
+
+                final List expectedMethods = new ArrayList();
+                for (int i=0; i < CHECK_COUNT; i++) {
+                    expectedMethods.add("getNumIdle");
+                    expectedMethods.add("addObject");
+                }
+                expectedMethods.add("toString");
+                assertEquals(expectedMethods, calledMethods); // may fail 
because of the thread scheduler
+            } catch (AssertionFailedError e) {
+                afe = e;
+            }
+        } while (--triesLeft > 0 && afe != null);
+        if (afe != null) {
+            throw afe;
         }
-        expectedMethods.add("toString");
-        assertEquals(expectedMethods, calledMethods); // may fail because of 
the thread scheduler
     }
 
     public void testCheckMinIdleKeyedObjectPoolKeys() throws Exception {
@@ -306,26 +256,39 @@
             // expected
         }
 
-        final List calledMethods = new ArrayList();
-        final KeyedObjectPool pool = 
(KeyedObjectPool)createProxy(KeyedObjectPool.class, calledMethods);
-        final Collection keys = new ArrayList(2);
-        keys.add("one");
-        keys.add("two");
-        final Map tasks = PoolUtils.checkMinIdle(pool, keys, 1, CHECK_PERIOD); 
// checks minIdle immediately
-
-        Thread.sleep(CHECK_SLEEP_PERIOD); // will check CHECK_COUNT more times.
-        final Iterator iter = tasks.values().iterator();
-        while (iter.hasNext()) {
-            final TimerTask task = (TimerTask)iter.next();
-            task.cancel();
-        }
-
-        final List expectedMethods = new ArrayList();
-        for (int i=0; i < CHECK_COUNT * keys.size(); i++) {
-            expectedMethods.add("getNumIdle");
-            expectedMethods.add("addObject");
+        // Because this isn't determinist and you can get false failures, try 
more than once.
+        AssertionFailedError afe = null;
+        int triesLeft = 3;
+        do {
+            afe = null;
+            try {
+                final List calledMethods = new ArrayList();
+                final KeyedObjectPool pool = 
(KeyedObjectPool)createProxy(KeyedObjectPool.class, calledMethods);
+                final Collection keys = new ArrayList(2);
+                keys.add("one");
+                keys.add("two");
+                final Map tasks = PoolUtils.checkMinIdle(pool, keys, 1, 
CHECK_PERIOD); // checks minIdle immediately
+
+                Thread.sleep(CHECK_SLEEP_PERIOD); // will check CHECK_COUNT 
more times.
+                final Iterator iter = tasks.values().iterator();
+                while (iter.hasNext()) {
+                    final TimerTask task = (TimerTask)iter.next();
+                    task.cancel();
+                }
+
+                final List expectedMethods = new ArrayList();
+                for (int i=0; i < CHECK_COUNT * keys.size(); i++) {
+                    expectedMethods.add("getNumIdle");
+                    expectedMethods.add("addObject");
+                }
+                assertEquals(expectedMethods, calledMethods); // may fail 
because of the thread scheduler
+            } catch (AssertionFailedError e) {
+                afe = e;
+            }
+        } while (--triesLeft > 0 && afe != null);
+        if (afe != null) {
+            throw afe;
         }
-        assertEquals(expectedMethods, calledMethods); // may fail because of 
the thread scheduler
     }
 
     public void testPrefillObjectPool() throws Exception {
@@ -416,6 +379,14 @@
         } catch(IllegalArgumentException iae) {
             // expected
         }
+
+        final List calledMethods = new ArrayList();
+        final ObjectPool op = (ObjectPool)createProxy(ObjectPool.class, 
calledMethods);
+
+        final ObjectPool sop = PoolUtils.synchronizedPool(op);
+        final List expectedMethods = invokeEveryMethod(sop);
+        assertEquals(expectedMethods, calledMethods);
+
         // TODO: Anyone feel motivated to construct a test that verifies 
proper synchronization?
     }
 
@@ -426,6 +397,14 @@
         } catch(IllegalArgumentException iae) {
             // expected
         }
+
+        final List calledMethods = new ArrayList();
+        final KeyedObjectPool kop = 
(KeyedObjectPool)createProxy(KeyedObjectPool.class, calledMethods);
+
+        final KeyedObjectPool skop = PoolUtils.synchronizedPool(kop);
+        final List expectedMethods = invokeEveryMethod(skop);
+        assertEquals(expectedMethods, calledMethods);
+
         // TODO: Anyone feel motivated to construct a test that verifies 
proper synchronization?
     }
 
@@ -436,6 +415,15 @@
         } catch(IllegalArgumentException iae) {
             // expected
         }
+
+        final List calledMethods = new ArrayList();
+        final PoolableObjectFactory pof =
+                
(PoolableObjectFactory)createProxy(PoolableObjectFactory.class, calledMethods);
+
+        final PoolableObjectFactory spof = 
PoolUtils.synchronizedPoolableFactory(pof);
+        final List expectedMethods = invokeEveryMethod(spof);
+        assertEquals(expectedMethods, calledMethods);
+
         // TODO: Anyone feel motivated to construct a test that verifies 
proper synchronization?
     }
 
@@ -446,7 +434,89 @@
         } catch(IllegalArgumentException iae) {
             // expected
         }
+
+        final List calledMethods = new ArrayList();
+        final KeyedPoolableObjectFactory kpof =
+                
(KeyedPoolableObjectFactory)createProxy(KeyedPoolableObjectFactory.class, 
calledMethods);
+
+        final KeyedPoolableObjectFactory skpof = 
PoolUtils.synchronizedPoolableFactory(kpof);
+        final List expectedMethods = invokeEveryMethod(skpof);
+        assertEquals(expectedMethods, calledMethods);
+
         // TODO: Anyone feel motivated to construct a test that verifies 
proper synchronization?
+    }
+
+    private static List invokeEveryMethod(ObjectPool op) throws Exception {
+        op.addObject();
+        op.borrowObject();
+        op.clear();
+        op.close();
+        op.getNumActive();
+        op.getNumIdle();
+        op.invalidateObject(null);
+        op.returnObject(null);
+        
op.setFactory((PoolableObjectFactory)createProxy(PoolableObjectFactory.class, 
null));
+        op.toString();
+
+        final List expectedMethods = Arrays.asList(new String[] {
+                "addObject", "borrowObject", "clear", "close",
+                "getNumActive", "getNumIdle", "invalidateObject",
+                "returnObject", "setFactory", "toString"
+        });
+        return expectedMethods;
+    }
+
+    private static List invokeEveryMethod(KeyedObjectPool kop) throws 
Exception {
+        kop.addObject(null);
+        kop.borrowObject(null);
+        kop.clear();
+        kop.clear(null);
+        kop.close();
+        kop.getNumActive();
+        kop.getNumActive(null);
+        kop.getNumIdle();
+        kop.getNumIdle(null);
+        kop.invalidateObject(null, null);
+        kop.returnObject(null, null);
+        
kop.setFactory((KeyedPoolableObjectFactory)createProxy(KeyedPoolableObjectFactory.class,
 null));
+        kop.toString();
+
+        final List expectedMethods = Arrays.asList(new String[] {
+                "addObject", "borrowObject", "clear", "clear", "close",
+                "getNumActive", "getNumActive", "getNumIdle", "getNumIdle", 
"invalidateObject",
+                "returnObject", "setFactory", "toString"
+        });
+        return expectedMethods;
+    }
+
+    private static List invokeEveryMethod(PoolableObjectFactory pof) throws 
Exception {
+        pof.activateObject(null);
+        pof.destroyObject(null);
+        pof.makeObject();
+        pof.passivateObject(null);
+        pof.validateObject(null);
+        pof.toString();
+
+        final List expectedMethods = Arrays.asList(new String[] {
+                "activateObject", "destroyObject", "makeObject",
+                "passivateObject", "validateObject", "toString",
+        });
+        return expectedMethods;
+    }
+
+    private static List invokeEveryMethod(KeyedPoolableObjectFactory kpof) 
throws Exception {
+        kpof.activateObject(null, null);
+        kpof.destroyObject(null, null);
+        kpof.makeObject(null);
+        kpof.passivateObject(null, null);
+        kpof.validateObject(null, null);
+        kpof.toString();
+
+        final List expectedMethods = Arrays.asList(new String[] {
+                "activateObject", "destroyObject", "makeObject",
+                "passivateObject", "validateObject", "toString",
+        });
+        return expectedMethods;
     }
 
     private static Object createProxy(final Class clazz, final List logger) {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to