Author: sandymac
Date: Thu Mar 16 14:16:14 2006
New Revision: 386471
URL: http://svn.apache.org/viewcvs?rev=386471&view=rev
Log:
Impoves unit test code coverage for PoolUtils. TestPoolUtils now tests
every code path that can be tested using the public interface of PoolUtils.
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=386471&r1=386470&r2=386471&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
Thu Mar 16 14:16:14 2006
@@ -34,6 +34,9 @@
import java.util.Iterator;
import java.util.Arrays;
+import org.apache.commons.pool.impl.GenericObjectPool;
+import org.apache.commons.pool.impl.GenericKeyedObjectPool;
+
/**
* Unit tests for [EMAIL PROTECTED] PoolUtils}.
*
@@ -273,13 +276,32 @@
// expected
}
- // Because this isn't determinist and you can get false failures, try
more than once.
+ final List calledMethods = new ArrayList();
+
+ // Test that the minIdle check doesn't add too many idle objects
+ final PoolableObjectFactory pof =
(PoolableObjectFactory)createProxy(PoolableObjectFactory.class, calledMethods);
+ final ObjectPool op = new GenericObjectPool(pof);
+ PoolUtils.checkMinIdle(op, 2, 100);
+ Thread.sleep(400);
+ assertEquals(2, op.getNumIdle());
+ op.close();
+ int makeObjectCount = 0;
+ final Iterator iter = calledMethods.iterator();
+ while (iter.hasNext()) {
+ final String methodName = (String)iter.next();
+ if ("makeObject".equals(methodName)) {
+ makeObjectCount++;
+ }
+ }
+ assertEquals("makeObject should have been called two time", 2,
makeObjectCount);
+
+ // Because this isn't deterministic 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();
+ calledMethods.clear();
final ObjectPool pool =
(ObjectPool)createProxy(ObjectPool.class, calledMethods);
final TimerTask task = PoolUtils.checkMinIdle(pool, 1,
CHECK_PERIOD); // checks minIdle immediately
@@ -325,15 +347,35 @@
// expected
}
- // Because this isn't determinist and you can get false failures, try
more than once.
+ final List calledMethods = new ArrayList();
+ final Object key = new Object();
+
+ // Test that the minIdle check doesn't add too many idle objects
+ final KeyedPoolableObjectFactory kpof =
(KeyedPoolableObjectFactory)createProxy(KeyedPoolableObjectFactory.class,
calledMethods);
+ final KeyedObjectPool kop = new GenericKeyedObjectPool(kpof);
+ PoolUtils.checkMinIdle(kop, key, 2, 100);
+ Thread.sleep(400);
+ assertEquals(2, kop.getNumIdle(key));
+ assertEquals(2, kop.getNumIdle());
+ kop.close();
+ int makeObjectCount = 0;
+ final Iterator iter = calledMethods.iterator();
+ while (iter.hasNext()) {
+ final String methodName = (String)iter.next();
+ if ("makeObject".equals(methodName)) {
+ makeObjectCount++;
+ }
+ }
+ assertEquals("makeObject should have been called two time", 2,
makeObjectCount);
+
+ // Because this isn't deterministic 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();
+ calledMethods.clear();
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.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]