You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sa...@apache.org on 2006/03/31 08:59:56 UTC
svn commit: r390349 - in /jakarta/commons/proper/pool/trunk/src:
java/org/apache/commons/pool/composite/ test/org/apache/commons/pool/
test/org/apache/commons/pool/composite/ test/org/apache/commons/pool/impl/
Author: sandymac
Date: Thu Mar 30 22:59:54 2006
New Revision: 390349
URL: http://svn.apache.org/viewcvs?rev=390349&view=rev
Log:
Created unit tests for ObjectPoolFactory and implementations.
Added:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/TestObjectPoolFactory.java (with props)
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestCompositeObjectPoolFactory.java (with props)
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestGenericObjectPoolFactory.java (with props)
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestStackObjectPoolFactory.java (with props)
Modified:
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/CompositeKeyedObjectPoolFactory.java
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/CompositeObjectPoolFactory.java
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/PerformanceTest.java
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestAll.java
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestIdleEvictorLender.java
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestAll.java
Modified: jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/CompositeKeyedObjectPoolFactory.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/CompositeKeyedObjectPoolFactory.java?rev=390349&r1=390348&r2=390349&view=diff
==============================================================================
--- jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/CompositeKeyedObjectPoolFactory.java (original)
+++ jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/CompositeKeyedObjectPoolFactory.java Thu Mar 30 22:59:54 2006
@@ -334,11 +334,11 @@
/**
* Set the type of tracking for active objects while they are borrowed from the pool.
*
- * @param trackerPolicy type of tracking for active objects.
- * @throws IllegalArgumentException when <code>trackerPolicy</code> is <code>null</code>.
+ * @param trackingPolicy type of tracking for active objects.
+ * @throws IllegalArgumentException when <code>trackingPolicy</code> is <code>null</code>.
*/
- public void setTrackingPolicy(final TrackingPolicy trackerPolicy) throws IllegalArgumentException {
- factory.setTrackingPolicy(trackerPolicy);
+ public void setTrackingPolicy(final TrackingPolicy trackingPolicy) throws IllegalArgumentException {
+ factory.setTrackingPolicy(trackingPolicy);
}
/**
Modified: jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/CompositeObjectPoolFactory.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/CompositeObjectPoolFactory.java?rev=390349&r1=390348&r2=390349&view=diff
==============================================================================
--- jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/CompositeObjectPoolFactory.java (original)
+++ jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/CompositeObjectPoolFactory.java Thu Mar 30 22:59:54 2006
@@ -198,7 +198,7 @@
/**
* Configured {@link Tracker} type.
*/
- private TrackingPolicy trackerPolicy = TrackingPolicy.SIMPLE;
+ private TrackingPolicy trackingPolicy = TrackingPolicy.SIMPLE;
/**
* Should the object pool validate borrowed objects when they are returned.
@@ -352,7 +352,7 @@
final int maxActive = config.maxActive;
if (maxActive > 0) {
- if (TrackingPolicy.NULL.equals(config.trackerPolicy)) {
+ if (TrackingPolicy.NULL.equals(config.trackingPolicy)) {
throw new IllegalStateException("Using the NULL tracker and limiting pool size is not valid.");
}
final LimitPolicy limitPolicy = config.limitPolicy;
@@ -382,17 +382,17 @@
*/
private static Tracker getTracker(final FactoryConfig config) {
final Tracker tracker;
- final TrackingPolicy trackerPolicy = config.trackerPolicy;
- if (TrackingPolicy.SIMPLE.equals(trackerPolicy)) {
+ final TrackingPolicy trackingPolicy = config.trackingPolicy;
+ if (TrackingPolicy.SIMPLE.equals(trackingPolicy)) {
tracker = new SimpleTracker();
- } else if (TrackingPolicy.NULL.equals(trackerPolicy)) {
+ } else if (TrackingPolicy.NULL.equals(trackingPolicy)) {
tracker = new NullTracker();
- } else if (TrackingPolicy.REFERENCE.equals(trackerPolicy)) {
+ } else if (TrackingPolicy.REFERENCE.equals(trackingPolicy)) {
tracker = new ReferenceTracker();
- } else if (TrackingPolicy.DEBUG.equals(trackerPolicy)) {
+ } else if (TrackingPolicy.DEBUG.equals(trackingPolicy)) {
tracker = new DebugTracker();
} else {
- throw new IllegalStateException("No clue what this tracking type is: " + trackerPolicy);
+ throw new IllegalStateException("No clue what this tracking type is: " + trackingPolicy);
}
return tracker;
}
@@ -596,22 +596,22 @@
* @return Type of tracking for active objects while they are borrowed from the pool.
*/
public TrackingPolicy getTrackingPolicy() {
- return trackerPolicy;
+ return trackingPolicy;
}
/**
* Set the type of tracking for active objects while they are borrowed from the pool.
*
- * @param trackerPolicy type of tracking for active objects.
- * @throws IllegalArgumentException when <code>trackerPolicy</code> is <code>null</code>.
+ * @param trackingPolicy type of tracking for active objects.
+ * @throws IllegalArgumentException when <code>trackingPolicy</code> is <code>null</code>.
*/
- public void setTrackingPolicy(final TrackingPolicy trackerPolicy) throws IllegalArgumentException {
- if (trackerPolicy == null) {
+ public void setTrackingPolicy(final TrackingPolicy trackingPolicy) throws IllegalArgumentException {
+ if (trackingPolicy == null) {
throw new IllegalArgumentException("tracker type must not be null.");
}
synchronized (lock){
config = null;
- this.trackerPolicy = trackerPolicy;
+ this.trackingPolicy = trackingPolicy;
}
}
@@ -740,8 +740,8 @@
/** @see CompositeObjectPoolFactory#maxWaitMillis */
private final int maxWaitMillis;
- /** @see CompositeObjectPoolFactory#trackerPolicy */
- private final TrackingPolicy trackerPolicy;
+ /** @see CompositeObjectPoolFactory#trackingPolicy */
+ private final TrackingPolicy trackingPolicy;
/** @see CompositeObjectPoolFactory#validateOnReturn */
private final boolean validateOnReturn;
@@ -763,7 +763,7 @@
FactoryConfig(final PoolableObjectFactory factory, final BorrowPolicy borrowPolicy,
final ExhaustionPolicy exhaustionPolicy, final int maxIdle, final int maxActive,
- final LimitPolicy limitPolicy, final int maxWaitMillis, final TrackingPolicy trackerPolicy,
+ final LimitPolicy limitPolicy, final int maxWaitMillis, final TrackingPolicy trackingPolicy,
final boolean validateOnReturn, final long evictIdleMillis,
final long evictInvalidFrequencyMillis) {
this.factory = factory;
@@ -773,7 +773,7 @@
this.maxActive = maxActive;
this.limitPolicy = limitPolicy;
this.maxWaitMillis = maxWaitMillis;
- this.trackerPolicy = trackerPolicy;
+ this.trackingPolicy = trackingPolicy;
this.validateOnReturn = validateOnReturn;
this.evictIdleMillis = evictIdleMillis;
this.evictInvalidFrequencyMillis = evictInvalidFrequencyMillis;
@@ -793,7 +793,7 @@
sb.append(", maxWaitMillis=").append(maxWaitMillis);
}
}
- sb.append(", trackerPolicy=").append(trackerPolicy);
+ sb.append(", trackingPolicy=").append(trackingPolicy);
sb.append(", validateOnReturn=").append(validateOnReturn);
if (evictIdleMillis > 0) {
sb.append(", evictIdleMillis=").append(evictIdleMillis);
Added: jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/TestObjectPoolFactory.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/TestObjectPoolFactory.java?rev=390349&view=auto
==============================================================================
--- jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/TestObjectPoolFactory.java (added)
+++ jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/TestObjectPoolFactory.java Thu Mar 30 22:59:54 2006
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.pool;
+
+import junit.framework.TestCase;
+
+/**
+ * Unit tests for all {@link ObjectPoolFactory}.
+ *
+ * @author Sandy McArthur
+ * @version $Revision$ $Date$
+ */
+public abstract class TestObjectPoolFactory extends TestCase {
+ protected TestObjectPoolFactory(final String name) {
+ super(name);
+ }
+
+ /**
+ * @throws UnsupportedOperationException when this is unsupported by this PoolableObjectFactory type.
+ */
+ protected ObjectPoolFactory makeFactory() throws UnsupportedOperationException {
+ return makeFactory(new MethodCallPoolableObjectFactory());
+ }
+
+ /**
+ * @throws UnsupportedOperationException when this is unsupported by this PoolableObjectFactory type.
+ */
+ protected abstract ObjectPoolFactory makeFactory(PoolableObjectFactory objectFactory) throws UnsupportedOperationException;
+
+ public void testCreatePool() throws Exception {
+ final ObjectPoolFactory factory;
+ try {
+ factory = makeFactory();
+ } catch (UnsupportedOperationException uoe) {
+ return;
+ }
+ final ObjectPool pool = factory.createPool();
+ pool.close();
+ }
+
+ public void testToString() {
+ final ObjectPoolFactory factory;
+ try {
+ factory = makeFactory();
+ } catch (UnsupportedOperationException uoe) {
+ return;
+ }
+ factory.toString();
+ }
+}
Propchange: jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/TestObjectPoolFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/TestObjectPoolFactory.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/PerformanceTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/PerformanceTest.java?rev=390349&r1=390348&r2=390349&view=diff
==============================================================================
--- jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/PerformanceTest.java (original)
+++ jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/PerformanceTest.java Thu Mar 30 22:59:54 2006
@@ -101,7 +101,7 @@
}
poolFactory.setLimitPolicy((LimitPolicy)limitIter.next());
}
- poolFactory.setTrackerType((TrackingPolicy)trackingIter.next());
+ poolFactory.setTrackingPolicy((TrackingPolicy)trackingIter.next());
}
poolFactory.setValidateOnReturn(((Boolean)validateIter.next()).booleanValue());
@@ -496,7 +496,7 @@
compositeFactory.setBorrowPolicy(BorrowPolicy.FIFO);
compositeFactory.setExhaustionPolicy(ExhaustionPolicy.GROW);
compositeFactory.setLimitPolicy(LimitPolicy.FAIL);
- compositeFactory.setTrackerType(TrackingPolicy.SIMPLE);
+ compositeFactory.setTrackingPolicy(TrackingPolicy.SIMPLE);
genericConfig.minIdle = 0;
genericConfig.testOnBorrow = true;
Modified: jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestAll.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestAll.java?rev=390349&r1=390348&r2=390349&view=diff
==============================================================================
--- jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestAll.java (original)
+++ jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestAll.java Thu Mar 30 22:59:54 2006
@@ -64,7 +64,7 @@
suite.addTest(TestCompositeObjectPool.suite());
suite.addTest(TestCompositeKeyedObjectPool.suite());
suite.addTest(TestCompositeKeyedObjectPool2.suite());
- //suite.addTest(TestCompositeObjectPoolFactory.suite());
+ suite.addTest(TestCompositeObjectPoolFactory.suite());
//suite.addTest(TestCompositeKeyedObjectPoolFactory.suite());
return suite;
}
Added: jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestCompositeObjectPoolFactory.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestCompositeObjectPoolFactory.java?rev=390349&view=auto
==============================================================================
--- jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestCompositeObjectPoolFactory.java (added)
+++ jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestCompositeObjectPoolFactory.java Thu Mar 30 22:59:54 2006
@@ -0,0 +1,348 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.pool.composite;
+
+import org.apache.commons.pool.TestObjectPoolFactory;
+import org.apache.commons.pool.ObjectPoolFactory;
+import org.apache.commons.pool.PoolableObjectFactory;
+import org.apache.commons.pool.ObjectPool;
+import org.apache.commons.pool.MethodCallPoolableObjectFactory;
+import org.apache.commons.pool.BasePoolableObjectFactory;
+import org.apache.commons.pool.MethodCall;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import java.util.NoSuchElementException;
+import java.util.List;
+import java.util.LinkedList;
+import java.util.ArrayList;
+
+/**
+ * Tests for {@link CompositeObjectPoolFactory}.
+ *
+ * @author Sandy McArthur
+ * @version $Revision$ $Date$
+ */
+public class TestCompositeObjectPoolFactory extends TestObjectPoolFactory {
+ private static final long FUZZ = 5L;
+
+ public TestCompositeObjectPoolFactory(final String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ return new TestSuite(TestCompositeObjectPoolFactory.class);
+ }
+
+ protected ObjectPoolFactory makeFactory(final PoolableObjectFactory objectFactory) throws UnsupportedOperationException {
+ return new CompositeObjectPoolFactory(objectFactory);
+ }
+
+ public void testCreatePoolWithNullConfig() {
+ try {
+ CompositeObjectPoolFactory.createPool(null);
+ fail("Expected an IllegalArgumentException when factory config is null.");
+ } catch (IllegalArgumentException iae) {
+ // expected
+ }
+ }
+
+ public void testBorrowPolicyNull() throws Exception {
+ final CompositeObjectPoolFactory copf = (CompositeObjectPoolFactory)makeFactory();
+ copf.setBorrowPolicy(BorrowPolicy.NULL);
+
+ final ObjectPool pool = copf.createPool();
+
+ Object a = pool.borrowObject();
+ pool.returnObject(a);
+ Object b = pool.borrowObject();
+ assertNotSame("BorrowPolicy.NULL should not return previously borrowed objects.", a, b);
+ }
+
+ public void testBorrowPolicyNullWithExhaustionFail() throws Exception {
+ final CompositeObjectPoolFactory copf = (CompositeObjectPoolFactory)makeFactory();
+ copf.setBorrowPolicy(BorrowPolicy.NULL);
+ copf.setExhaustionPolicy(ExhaustionPolicy.FAIL);
+
+ try {
+ copf.createPool();
+ fail("Cannot create a pool with both BorrowPolicy.NULL and ExhaustionPolicy.FAIL.");
+ } catch (IllegalStateException ise) {
+ // expected
+ }
+ }
+
+ public void testBorrowPolicyFifo() throws Exception {
+ testBorrowPolicyFifo(BorrowPolicy.FIFO);
+ }
+
+ public void testBorrowPolicySoftFifo() throws Exception {
+ testBorrowPolicyFifo(BorrowPolicy.SOFT_FIFO);
+ }
+
+ private void testBorrowPolicyFifo(final BorrowPolicy policy) throws Exception {
+ final CompositeObjectPoolFactory copf = (CompositeObjectPoolFactory)makeFactory();
+ copf.setBorrowPolicy(policy);
+
+ final ObjectPool pool = copf.createPool();
+
+ Object a = pool.borrowObject();
+ Object b = pool.borrowObject();
+ pool.returnObject(a);
+ pool.returnObject(b);
+ Object aa = pool.borrowObject();
+ Object bb = pool.borrowObject();
+ assertSame(a, aa);
+ assertSame(b, bb);
+ }
+
+ public void testBorrowPolicyLifo() throws Exception {
+ testBorrowPolicyLifo(BorrowPolicy.LIFO);
+ }
+
+ public void testBorrowPolicySoftLifo() throws Exception {
+ testBorrowPolicyLifo(BorrowPolicy.SOFT_LIFO);
+ }
+
+ private void testBorrowPolicyLifo(final BorrowPolicy policy) throws Exception {
+ final CompositeObjectPoolFactory copf = (CompositeObjectPoolFactory)makeFactory();
+ copf.setBorrowPolicy(policy);
+
+ final ObjectPool pool = copf.createPool();
+
+ Object a = pool.borrowObject();
+ Object b = pool.borrowObject();
+ pool.returnObject(a);
+ pool.returnObject(b);
+ Object aa = pool.borrowObject();
+ Object bb = pool.borrowObject();
+ assertSame(a, bb);
+ assertSame(b, aa);
+ }
+
+ public void testExhaustionPolicyFail() throws Exception {
+ final CompositeObjectPoolFactory copf = (CompositeObjectPoolFactory)makeFactory();
+ copf.setExhaustionPolicy(ExhaustionPolicy.FAIL);
+ final ObjectPool pool = copf.createPool();
+
+ try {
+ pool.borrowObject();
+ fail("new pools should be empty and fail with ExhaustionPolicy.FAIL.");
+ } catch (NoSuchElementException nsee) {
+ // expected
+ }
+
+ pool.addObject();
+ pool.borrowObject();
+ }
+
+ public void testExhaustionPolicyGrow() throws Exception {
+ final CompositeObjectPoolFactory copf = (CompositeObjectPoolFactory)makeFactory();
+ copf.setExhaustionPolicy(ExhaustionPolicy.GROW);
+ final ObjectPool pool = copf.createPool();
+
+ assertEquals(0, pool.getNumIdle());
+ pool.borrowObject();
+ }
+
+ public void testLimitPolicyFail() throws Exception {
+ final CompositeObjectPoolFactory copf = (CompositeObjectPoolFactory)makeFactory();
+ copf.setMaxActive(1);
+ copf.setLimitPolicy(LimitPolicy.FAIL);
+ copf.setMaxWaitMillis(1000);
+ final ObjectPool pool = copf.createPool();
+
+ Object a = pool.borrowObject();
+ long startTime = System.currentTimeMillis();
+ try {
+ pool.borrowObject();
+ fail();
+ } catch (NoSuchElementException nsee) {
+ // expected
+ }
+ assertTrue("borrowObject shouldn't take long to fail.", startTime + 1000 - FUZZ > System.currentTimeMillis());
+
+ pool.returnObject(a);
+ pool.borrowObject();
+ }
+
+ public void testLimitPolicyWait() throws Exception {
+ final CompositeObjectPoolFactory copf = (CompositeObjectPoolFactory)makeFactory();
+ copf.setMaxActive(1);
+ copf.setLimitPolicy(LimitPolicy.WAIT);
+ copf.setMaxWaitMillis(1000);
+ final ObjectPool pool = copf.createPool();
+
+ Object a = pool.borrowObject();
+ long startTime = System.currentTimeMillis();
+ try {
+ pool.borrowObject();
+ fail();
+ } catch (NoSuchElementException nsee) {
+ // expected
+ }
+ assertTrue("borrowObject shouldn't take a while to fail.", startTime + 1000 - FUZZ < System.currentTimeMillis());
+
+ pool.returnObject(a);
+ pool.borrowObject();
+ }
+
+ public void testTrackingPolicyNull() throws Exception {
+ final CompositeObjectPoolFactory copf = (CompositeObjectPoolFactory)makeFactory();
+ copf.setTrackingPolicy(TrackingPolicy.NULL);
+ final ObjectPool pool = copf.createPool();
+
+ assertTrue(pool.getNumActive() < 0);
+ Object a = pool.borrowObject();
+ assertTrue(pool.getNumActive() < 0);
+ pool.returnObject(a);
+ assertTrue(pool.getNumActive() < 0);
+ }
+
+ public void testTrackingPolicySimple() throws Exception {
+ final CompositeObjectPoolFactory copf = (CompositeObjectPoolFactory)makeFactory();
+ copf.setTrackingPolicy(TrackingPolicy.SIMPLE);
+ final ObjectPool pool = copf.createPool();
+
+ assertEquals(0, pool.getNumActive());
+ Object a = pool.borrowObject();
+ assertEquals(1, pool.getNumActive());
+ pool.returnObject(a);
+ assertEquals(0, pool.getNumActive());
+ }
+
+ public void testTrackingPolicyReference() throws Exception {
+ final CompositeObjectPoolFactory copf = (CompositeObjectPoolFactory)makeFactory(new BasePoolableObjectFactory() {
+ public Object makeObject() throws Exception {
+ return new Object();
+ }
+ });
+ copf.setTrackingPolicy(TrackingPolicy.REFERENCE);
+ final ObjectPool pool = copf.createPool();
+
+ assertEquals(0, pool.getNumActive());
+ Object a = pool.borrowObject();
+ assertEquals(1, pool.getNumActive());
+ a = null;
+ List garbage = new LinkedList();
+ Runtime runtime = Runtime.getRuntime();
+ while (pool.getNumActive() > 0) {
+ try {
+ garbage.add(new byte[Math.min(1024 * 1024, (int)runtime.freeMemory()/2)]);
+ } catch (OutOfMemoryError oome) {
+ System.gc();
+ }
+ System.gc();
+ }
+ garbage.clear();
+ System.gc();
+ assertEquals(0, pool.getNumActive());
+ }
+
+ public void testTrackingPolicyDebug() throws Exception {
+ final CompositeObjectPoolFactory copf = (CompositeObjectPoolFactory)makeFactory(new BasePoolableObjectFactory() {
+ public Object makeObject() throws Exception {
+ return new Object();
+ }
+ });
+ copf.setTrackingPolicy(TrackingPolicy.DEBUG);
+ final ObjectPool pool = copf.createPool();
+
+ assertEquals(0, pool.getNumActive());
+ Object a = pool.borrowObject();
+ assertEquals(1, pool.getNumActive());
+ a = null;
+ List garbage = new LinkedList();
+ Runtime runtime = Runtime.getRuntime();
+ while (pool.getNumActive() > 0) {
+ try {
+ garbage.add(new byte[Math.min(1024 * 1024, (int)runtime.freeMemory()/2)]);
+ } catch (OutOfMemoryError oome) {
+ System.gc();
+ }
+ System.gc();
+ }
+ garbage.clear();
+ System.gc();
+ assertEquals(0, pool.getNumActive());
+ }
+
+ public void testMaxIdle() throws Exception {
+ final CompositeObjectPoolFactory copf = (CompositeObjectPoolFactory)makeFactory();
+ copf.setMaxIdle(5);
+ final ObjectPool pool = copf.createPool();
+
+ for (int i=1; i<10; i++) {
+ pool.addObject();
+ assertEquals(Math.min(5, i), pool.getNumIdle());
+ }
+ }
+
+ public void testValidateOnReturn() throws Exception {
+ final CompositeObjectPoolFactory copf = (CompositeObjectPoolFactory)makeFactory();
+ copf.setValidateOnReturn(true);
+ final CompositeObjectPool pool = (CompositeObjectPool)copf.createPool();
+ final MethodCallPoolableObjectFactory factory = (MethodCallPoolableObjectFactory)pool.getFactory();
+
+ final Object a = pool.borrowObject();
+ factory.getMethodCalls().clear();
+ pool.returnObject(a);
+
+ final List expectedMethods = new ArrayList();
+ expectedMethods.add(new MethodCall("validateObject", a).returned(Boolean.TRUE));
+ expectedMethods.add(new MethodCall("passivateObject", a));
+ assertEquals(expectedMethods, factory.getMethodCalls());
+ }
+
+ public void testEvictIdleMillis() throws Exception {
+ final CompositeObjectPoolFactory copf = (CompositeObjectPoolFactory)makeFactory();
+ copf.setEvictIdleMillis(50L);
+ final ObjectPool pool = copf.createPool();
+
+ pool.addObject();
+ Thread.sleep(75L);
+ assertEquals(0, pool.getNumIdle());
+ }
+
+ public void testEvictInvalidFrequencyMillis() throws Exception {
+ final CompositeObjectPoolFactory copf = (CompositeObjectPoolFactory)makeFactory();
+ copf.setEvictInvalidFrequencyMillis(50L);
+ final CompositeObjectPool pool = (CompositeObjectPool)copf.createPool();
+ final MethodCallPoolableObjectFactory factory = (MethodCallPoolableObjectFactory)pool.getFactory();
+
+ pool.addObject();
+ Thread.sleep(75L);
+ assertEquals(1, pool.getNumIdle());
+ factory.setValid(false);
+ Thread.sleep(75L);
+ assertEquals(0, pool.getNumIdle());
+ }
+
+ public void testToString() {
+ super.testToString();
+ final CompositeObjectPoolFactory copf = (CompositeObjectPoolFactory)makeFactory();
+ copf.toString();
+ copf.setMaxActive(1);
+ copf.toString();
+ copf.setLimitPolicy(LimitPolicy.WAIT);
+ copf.toString();
+ copf.setEvictIdleMillis(1);
+ copf.toString();
+ copf.setEvictInvalidFrequencyMillis(1);
+ copf.toString();
+ }
+}
Propchange: jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestCompositeObjectPoolFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestCompositeObjectPoolFactory.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestIdleEvictorLender.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestIdleEvictorLender.java?rev=390349&r1=390348&r2=390349&view=diff
==============================================================================
--- jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestIdleEvictorLender.java (original)
+++ jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestIdleEvictorLender.java Thu Mar 30 22:59:54 2006
@@ -53,7 +53,7 @@
}
public void testIdleEviction() throws Exception {
- IdleEvictorLender lender = createLender(50L);
+ IdleEvictorLender lender = createLender(75L);
CompositeObjectPool cop = createPool(lender);
cop.addObject();
@@ -65,7 +65,7 @@
// Test when IdleEvictorLender delegates to another EvictorLender
lender = new IdleEvictorLender(new InvalidEvictorLender(new FifoLender()));
- lender.setIdleTimeoutMillis(50L);
+ lender.setIdleTimeoutMillis(75L);
cop = createPool(lender);
cop.addObject();
@@ -77,7 +77,7 @@
// Test when another EvictorLender delegates to IdleEvictorLender
lender = new IdleEvictorLender(new FifoLender());
- lender.setIdleTimeoutMillis(50L);
+ lender.setIdleTimeoutMillis(75L);
cop = createPool(new InvalidEvictorLender(lender));
cop.addObject();
Modified: jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestAll.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestAll.java?rev=390349&r1=390348&r2=390349&view=diff
==============================================================================
--- jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestAll.java (original)
+++ jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestAll.java Thu Mar 30 22:59:54 2006
@@ -39,7 +39,11 @@
suite.addTest(TestGenericObjectPool.suite());
suite.addTest(TestGenericKeyedObjectPool.suite());
suite.addTest(TestSoftReferenceObjectPool.suite());
- suite.addTest(TestSoftRefOutOfMemory.suite()); // isn't reliable
+ suite.addTest(TestSoftRefOutOfMemory.suite()); // isn't reliable?
+
+ // Pool Factory tests
+ suite.addTest(TestGenericObjectPoolFactory.suite());
+ suite.addTest(TestStackObjectPoolFactory.suite());
return suite;
}
Added: jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestGenericObjectPoolFactory.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestGenericObjectPoolFactory.java?rev=390349&view=auto
==============================================================================
--- jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestGenericObjectPoolFactory.java (added)
+++ jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestGenericObjectPoolFactory.java Thu Mar 30 22:59:54 2006
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.pool.impl;
+
+import org.apache.commons.pool.TestObjectPoolFactory;
+import org.apache.commons.pool.ObjectPoolFactory;
+import org.apache.commons.pool.PoolableObjectFactory;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Tests for {@link GenericObjectPoolFactory}.
+ *
+ * @author Sandy McArthur
+ * @version $Revision$ $Date$
+ */
+public class TestGenericObjectPoolFactory extends TestObjectPoolFactory {
+ public TestGenericObjectPoolFactory(final String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ return new TestSuite(TestGenericObjectPoolFactory.class);
+ }
+
+ protected ObjectPoolFactory makeFactory(final PoolableObjectFactory objectFactory) throws UnsupportedOperationException {
+ return new GenericObjectPoolFactory(objectFactory);
+ }
+}
Propchange: jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestGenericObjectPoolFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestGenericObjectPoolFactory.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added: jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestStackObjectPoolFactory.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestStackObjectPoolFactory.java?rev=390349&view=auto
==============================================================================
--- jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestStackObjectPoolFactory.java (added)
+++ jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestStackObjectPoolFactory.java Thu Mar 30 22:59:54 2006
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.pool.impl;
+
+import org.apache.commons.pool.TestObjectPoolFactory;
+import org.apache.commons.pool.ObjectPoolFactory;
+import org.apache.commons.pool.PoolableObjectFactory;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Tests for {@link StackObjectPoolFactory}.
+ *
+ * @author Sandy McArthur
+ * @version $Revision$ $Date$
+ */
+public class TestStackObjectPoolFactory extends TestObjectPoolFactory {
+ public TestStackObjectPoolFactory(final String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ return new TestSuite(TestStackObjectPoolFactory.class);
+ }
+
+ protected ObjectPoolFactory makeFactory(final PoolableObjectFactory objectFactory) throws UnsupportedOperationException {
+ return new StackObjectPoolFactory(objectFactory);
+ }
+}
Propchange: jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestStackObjectPoolFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/impl/TestStackObjectPoolFactory.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org