Author: sandymac
Date: Mon Mar 27 19:46:23 2006
New Revision: 389381
URL: http://svn.apache.org/viewcvs?rev=389381&view=rev
Log:
Unit tests for the composite Lender implementations.
Bug fix in EvictorLender where two EvictorLender instances
chained would delay getNumIdle from detecting idle objects
that have been evicted.
Added:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestAll.java
(with props)
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestFifoLender.java
(with props)
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestIdleEvictorLender.java
(with props)
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestInvalidEvictorLender.java
(with props)
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestLender.java
(with props)
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestLifoLender.java
(with props)
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestNullLender.java
(with props)
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestSoftLender.java
(with props)
Modified:
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/EvictorLender.java
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/NullLender.java
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/SoftLender.java
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/TestAll.java
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestCompositeObjectPool.java
Modified:
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/EvictorLender.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/EvictorLender.java?rev=389381&r1=389380&r2=389381&view=diff
==============================================================================
---
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/EvictorLender.java
(original)
+++
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/EvictorLender.java
Mon Mar 27 19:46:23 2006
@@ -83,7 +83,7 @@
}
/**
- * Return the size of the idle object pool. Also removes any broken [EMAIL
PROTECTED] EvictorLender.EvictorReference}s so the
+ * Return the size of the idle object pool. Also removes any broken [EMAIL
PROTECTED] Lender.LenderReference}s so the
* size is more accurate.
*
* @return the size of the idle object pool the lender is accessing.
@@ -93,8 +93,12 @@
synchronized (getObjectPool().getPool()) {
final Iterator iter = super.listIterator();
while (iter.hasNext()) {
- final EvictorReference ref = (EvictorReference)iter.next();
- if (ref != null && ref.get() == null) {
+ Object o = iter.next();
+ // unwrap
+ while (o instanceof LenderReference) {
+ o = ((LenderReference)o).get();
+ }
+ if (o == null) {
iter.remove();
}
}
Modified:
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/NullLender.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/NullLender.java?rev=389381&r1=389380&r2=389381&view=diff
==============================================================================
---
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/NullLender.java
(original)
+++
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/NullLender.java
Mon Mar 27 19:46:23 2006
@@ -28,20 +28,9 @@
* @since #.#
* @version $Revision$ $Date$
*/
-final class NullLender implements Lender, Serializable {
+final class NullLender extends AbstractLender implements Serializable {
private static final long serialVersionUID = -135471856936204860L;
-
- /**
- * Called once to associate this manager with an object pool by the [EMAIL
PROTECTED] CompositeObjectPool} constructor.
- *
- * @param objectPool the pool to associate with.
- * @throws IllegalArgumentException if <code>objectPool</code> is
<code>null</code>.
- * @throws IllegalStateException if this method is called more than once.
- */
- public void setCompositeObjectPool(final CompositeObjectPool objectPool)
throws IllegalArgumentException, IllegalStateException {
- // nothing
- }
/**
* Return <code>null</code>.
Modified:
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/SoftLender.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/SoftLender.java?rev=389381&r1=389380&r2=389381&view=diff
==============================================================================
---
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/SoftLender.java
(original)
+++
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/SoftLender.java
Mon Mar 27 19:46:23 2006
@@ -106,11 +106,8 @@
* Make a [EMAIL PROTECTED] SoftReference} implement [EMAIL PROTECTED]
LenderReference}.
*/
private static class SoftLenderReference extends SoftReference implements
LenderReference {
- public SoftLenderReference(Object referent) {
+ SoftLenderReference(final Object referent) {
super(referent);
- }
- public SoftLenderReference(Object referent, ReferenceQueue q) {
- super(referent, q);
}
}
Modified:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/TestAll.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/TestAll.java?rev=389381&r1=389380&r2=389381&view=diff
==============================================================================
---
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/TestAll.java
(original)
+++
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/TestAll.java
Mon Mar 27 19:46:23 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2004 The Apache Software Foundation.
+ * Copyright 1999-2004,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.
@@ -37,6 +37,7 @@
suite.addTest(org.apache.commons.pool.TestBaseKeyedPoolableObjectFactory.suite());
suite.addTest(org.apache.commons.pool.TestPoolUtils.suite());
suite.addTest(org.apache.commons.pool.impl.TestAll.suite());
+ suite.addTest(org.apache.commons.pool.composite.TestAll.suite());
return suite;
}
Added:
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=389381&view=auto
==============================================================================
---
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestAll.java
(added)
+++
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestAll.java
Mon Mar 27 19:46:23 2006
@@ -0,0 +1,63 @@
+/*
+ * 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 junit.framework.TestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * JUnit test suite for the [EMAIL PROTECTED]
org.apache.commons.pool.composite}
+ * package.
+ *
+ * @author Sandy McArthur
+ * @version $Revision$ $Date$
+ */
+public class TestAll extends TestCase {
+ /**
+ * Constructs a test case with the given name.
+ */
+ public TestAll(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ final TestSuite suite = new TestSuite();
+ // Lenders unit tests
+ suite.addTest(TestFifoLender.suite());
+ suite.addTest(TestIdleEvictorLender.suite());
+ suite.addTest(TestInvalidEvictorLender.suite());
+ suite.addTest(TestLifoLender.suite());
+ suite.addTest(TestNullLender.suite());
+ suite.addTest(TestSoftLender.suite());
+ // Managers unit tests
+ // Tackers unit tests
+
+ // Remaining unit tests
+ suite.addTest(TestCompositeObjectPool.suite());
+ //suite.addTest(TestCompositeKeyedObjectPool.suite());
+ //suite.addTest(TestCompositeObjectPoolFactory.suite());
+ //suite.addTest(TestCompositeKeyedObjectPoolFactory.suite());
+ return suite;
+ }
+
+ public static void main(String args[]) {
+ String[] testCaseName = { TestAll.class.getName() };
+ TestRunner.main(testCaseName);
+ }
+}
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestAll.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestAll.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestCompositeObjectPool.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestCompositeObjectPool.java?rev=389381&r1=389380&r2=389381&view=diff
==============================================================================
---
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestCompositeObjectPool.java
(original)
+++
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestCompositeObjectPool.java
Mon Mar 27 19:46:23 2006
@@ -28,6 +28,9 @@
import java.util.SortedSet;
import java.util.TreeSet;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
/**
* Test [EMAIL PROTECTED] CompositeObjectPool} and it's components.
*
@@ -40,6 +43,10 @@
public TestCompositeObjectPool(final String testName) {
super(testName);
+ }
+
+ public static Test suite() {
+ return new TestSuite(TestCompositeObjectPool.class);
}
public void setUp() throws Exception {
Added:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestFifoLender.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestFifoLender.java?rev=389381&view=auto
==============================================================================
---
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestFifoLender.java
(added)
+++
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestFifoLender.java
Mon Mar 27 19:46:23 2006
@@ -0,0 +1,116 @@
+/*
+ * 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.PoolUtils;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.LinkedList;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Test that [EMAIL PROTECTED] FifoLender} is in fact a FIFO.
+ *
+ * @author Sandy McArthur
+ * @version $Revision$ $Date$
+ */
+public class TestFifoLender extends TestLender {
+ private static final Integer ZERO = new Integer(0);
+ private static final Integer ONE = new Integer(1);
+
+ /**
+ * Constructs a test case with the given name.
+ */
+ public TestFifoLender(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ return new TestSuite(TestFifoLender.class);
+ }
+
+ protected Lender createLender() {
+ return new FifoLender();
+ }
+
+ public void testBorrowAndRepay() throws Exception {
+ final Lender lender = createLender();
+ final CompositeObjectPool cop = createPool(lender);
+ final List list = cop.getPool();
+
+ PoolUtils.prefill(cop, 2);
+
+ try {
+ synchronized (list) {
+ borrowAndRepay(lender);
+ }
+ } finally {
+ cop.close();
+ }
+ }
+
+ public void testBorrowWithArrayList() throws Exception {
+ final Lender lender = createLender();
+ final CompositeObjectPool cop = createPool(new ArrayList(), lender);
+ final List list = cop.getPool();
+
+ assertTrue(list instanceof ArrayList);
+
+ PoolUtils.prefill(cop, 2);
+
+ try {
+ synchronized (list) {
+ borrowAndRepay(lender);
+ }
+ } finally {
+ cop.close();
+ }
+ }
+
+ public void testBorrowWithLinkedList() throws Exception {
+ final Lender lender = createLender();
+ final CompositeObjectPool cop = createPool(new LinkedList(), lender);
+ final List list = cop.getPool();
+
+ assertTrue(list instanceof LinkedList);
+
+ PoolUtils.prefill(cop, 2);
+
+ try {
+ synchronized (list) {
+ borrowAndRepay(lender);
+ }
+ } finally {
+ cop.close();
+ }
+ }
+
+ private static void borrowAndRepay(final Lender lender) {
+ Object obj = lender.borrow();
+ assertEquals(ZERO, obj);
+ lender.repay(obj);
+ obj = lender.borrow();
+ assertEquals(ONE, obj);
+ lender.repay(obj);
+ obj = lender.borrow();
+ assertEquals(ZERO, obj);
+ lender.repay(obj);
+ }
+}
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestFifoLender.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestFifoLender.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
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=389381&view=auto
==============================================================================
---
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestIdleEvictorLender.java
(added)
+++
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestIdleEvictorLender.java
Mon Mar 27 19:46:23 2006
@@ -0,0 +1,90 @@
+/*
+ * 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 junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Tests for [EMAIL PROTECTED] IdleEvictorLender}.
+ *
+ * @author Sandy McArthur
+ * @version $Revision$ $Date$
+ */
+public class TestIdleEvictorLender extends TestLender {
+ /**
+ * Constructs a test case with the given name.
+ */
+ public TestIdleEvictorLender(final String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ return new TestSuite(TestIdleEvictorLender.class);
+ }
+
+ protected Lender createLender() throws Exception {
+ return createLender(60L * 1000L);
+ }
+
+ private IdleEvictorLender createLender(final long timeout) throws
Exception {
+ final IdleEvictorLender idleEvictorLender = new IdleEvictorLender(new
FifoLender());
+ idleEvictorLender.setIdleTimeoutMillis(timeout);
+ return idleEvictorLender;
+ }
+
+ public void testGetIdleTimeoutMillis() throws Exception {
+ final IdleEvictorLender lender = createLender(10);
+ assertEquals(10L, lender.getIdleTimeoutMillis());
+ }
+
+ public void testIdleEviction() throws Exception {
+ IdleEvictorLender lender = createLender(50L);
+ CompositeObjectPool cop = createPool(lender);
+
+ cop.addObject();
+ assertEquals(1, cop.getNumIdle());
+ Thread.sleep(100L);
+ assertEquals(0, cop.getNumIdle());
+
+ cop.close();
+
+ // Test when IdleEvictorLender delegates to another EvictorLender
+ lender = new IdleEvictorLender(new InvalidEvictorLender(new
FifoLender()));
+ lender.setIdleTimeoutMillis(50L);
+ cop = createPool(lender);
+
+ cop.addObject();
+ assertEquals(1, cop.getNumIdle());
+ Thread.sleep(100L);
+ lender.size();
+ assertEquals(0, cop.getNumIdle());
+ cop.close();
+
+ // Test when another EvictorLender delegates to IdleEvictorLender
+ lender = new IdleEvictorLender(new FifoLender());
+ lender.setIdleTimeoutMillis(50L);
+ cop = createPool(new InvalidEvictorLender(lender));
+
+ cop.addObject();
+ assertEquals(1, cop.getNumIdle());
+ Thread.sleep(100L);
+ lender.size();
+ assertEquals(0, cop.getNumIdle());
+ cop.close();
+ }
+}
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestIdleEvictorLender.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestIdleEvictorLender.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestInvalidEvictorLender.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestInvalidEvictorLender.java?rev=389381&view=auto
==============================================================================
---
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestInvalidEvictorLender.java
(added)
+++
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestInvalidEvictorLender.java
Mon Mar 27 19:46:23 2006
@@ -0,0 +1,119 @@
+/*
+ * 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 junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Tests for [EMAIL PROTECTED] InvalidEvictorLender}.
+ *
+ * @author Sandy McArthur
+ * @version $Revision$ $Date$
+ */
+public class TestInvalidEvictorLender extends TestLender {
+ /**
+ * Constructs a test case with the given name.
+ */
+ public TestInvalidEvictorLender(final String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ return new TestSuite(TestInvalidEvictorLender.class);
+ }
+
+ protected Lender createLender() throws Exception {
+ return createLender(60L * 1000L);
+ }
+
+ protected InvalidEvictorLender createLender(final long timeout) throws
Exception {
+ final InvalidEvictorLender invalidEvictorLender = new
InvalidEvictorLender(new FifoLender());
+ invalidEvictorLender.setValidationFrequencyMillis(timeout);
+ return invalidEvictorLender;
+ }
+
+ public void testValidationFrequencyMillis() throws Exception {
+ final InvalidEvictorLender lender = createLender(10L);
+ assertEquals(10L, lender.getValidationFrequencyMillis());
+ lender.setValidationFrequencyMillis(25L);
+ assertEquals(25L, lender.getValidationFrequencyMillis());
+ try {
+ lender.setValidationFrequencyMillis(-1L);
+ fail("Negative values are not legal for
validationFrequencyMillis.");
+ } catch (IllegalArgumentException iae) {
+ // expected
+ }
+ }
+
+ public void testInvalidEviction() throws Exception {
+ InvalidEvictorLender lender = createLender(50L);
+ final ValidatePoolableObjectFactory vpof = new
ValidatePoolableObjectFactory();
+ CompositeObjectPool cop = createPool(vpof, lender);
+
+ cop.addObject();
+ assertEquals(1, cop.getNumIdle());
+ vpof.setValid(false);
+ Thread.sleep(100L);
+ assertEquals(0, cop.getNumIdle());
+ cop.close();
+
+ vpof.setValid(true);
+
+ // Test when InvalidEvictorLender delegates to another EvictorLender
+ lender = new InvalidEvictorLender(new IdleEvictorLender(new
FifoLender()));
+ lender.setValidationFrequencyMillis(50L);
+ cop = createPool(vpof, lender);
+
+ cop.addObject();
+ assertEquals(1, cop.getNumIdle());
+ vpof.setValid(false);
+ Thread.sleep(100L);
+ assertEquals(0, cop.getNumIdle());
+ cop.close();
+
+ vpof.setValid(true);
+
+ // Test when another EvictorLender delegates to InvalidEvictorLender
+ lender = new InvalidEvictorLender(new FifoLender());
+ lender.setValidationFrequencyMillis(50L);
+ cop = createPool(vpof, new IdleEvictorLender(lender));
+
+ cop.addObject();
+ assertEquals(1, cop.getNumIdle());
+ vpof.setValid(false);
+ Thread.sleep(100L);
+ assertEquals(0, cop.getNumIdle());
+ cop.close();
+ }
+
+ static class ValidatePoolableObjectFactory extends
CountingPoolableObjectFactory {
+ private boolean valid = true;
+
+ public boolean validateObject(final Object obj) {
+ return valid;
+ }
+
+ public boolean isValid() {
+ return valid;
+ }
+
+ public void setValid(boolean valid) {
+ this.valid = valid;
+ }
+ }
+}
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestInvalidEvictorLender.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestInvalidEvictorLender.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestLender.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestLender.java?rev=389381&view=auto
==============================================================================
---
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestLender.java
(added)
+++
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestLender.java
Mon Mar 27 19:46:23 2006
@@ -0,0 +1,133 @@
+/*
+ * 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 junit.framework.TestCase;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.commons.pool.BasePoolableObjectFactory;
+import org.apache.commons.pool.PoolableObjectFactory;
+
+import java.util.List;
+import java.util.ListIterator;
+
+/**
+ * Common unit tests for all [EMAIL PROTECTED] Lender}s.
+ *
+ * @author Sandy McArthur
+ * @version $Revision$ $Date$
+ */
+public abstract class TestLender extends TestCase {
+ private CompositeObjectPoolFactory factory = new
CompositeObjectPoolFactory(new CountingPoolableObjectFactory());
+
+ /**
+ * Constructs a test case with the given name.
+ */
+ public TestLender(final String name) {
+ super(name);
+ }
+
+ protected abstract Lender createLender() throws Exception;
+
+ public void testSetCompositeObjectPool() throws Exception {
+ final Lender lender = createLender();
+ try {
+ lender.setCompositeObjectPool(null);
+ fail("Expected an IllegalArgumentException when
setCompositeObjectPool is passed null.");
+ } catch (IllegalArgumentException iae) {
+ // swallowed
+ }
+
+
lender.setCompositeObjectPool((CompositeObjectPool)factory.createPool());
+ try {
+
lender.setCompositeObjectPool((CompositeObjectPool)factory.createPool());
+ fail("Expected an IllegalStateException when
setCompositeObjectPool is passed a pool twice.");
+ } catch (IllegalStateException ise) {
+ // swallowed
+ }
+ }
+
+ public void testBorrowAndRepay() throws Exception {
+ final Lender lender = createLender();
+ final CompositeObjectPool cop = createPool(lender);
+ final List list = cop.getPool();
+
+ cop.addObject();
+
+ try {
+ synchronized (list) {
+ final Object obj = lender.borrow();
+ lender.repay(obj);
+ }
+ } finally {
+ cop.close();
+ }
+ }
+
+ public void testListIterator() throws Exception {
+ final Lender lender = createLender();
+ final CompositeObjectPool cop = createPool(lender);
+ cop.addObject();
+ final List list = cop.getPool();
+ final ListIterator li = lender.listIterator();
+
+ assertNotNull(li);
+
+ try {
+ synchronized (list) {
+ if (li.hasNext()) {
+ li.next();
+ }
+ if (li.hasPrevious()) {
+ li.previous();
+ }
+ }
+ } finally {
+ cop.close();
+ }
+ }
+
+ public void testSize() throws Exception {
+ final Lender lender = createLender();
+ final CompositeObjectPool cop = createPool(lender);
+ lender.size();
+ }
+
+ public void testToString() throws Exception {
+ createLender().toString();
+ }
+
+ protected final CompositeObjectPool createPool(final Lender lender) {
+ return createPool(new CountingPoolableObjectFactory(), lender);
+ }
+
+ protected final CompositeObjectPool createPool(final PoolableObjectFactory
pof, final Lender lender) {
+ return new CompositeObjectPool(pof, new GrowManager(), lender, new
SimpleTracker(), false, null);
+ }
+
+ protected final CompositeObjectPool createPool(final List list, final
Lender lender) {
+ return new CompositeObjectPool(new CountingPoolableObjectFactory(),
list,
+ new GrowManager(), lender, new SimpleTracker(), false, null);
+ }
+
+ protected static class CountingPoolableObjectFactory extends
BasePoolableObjectFactory {
+ private int count = 0;
+ public Object makeObject() throws Exception {
+ return new Integer(count++);
+ }
+ }
+}
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestLender.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestLender.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestLifoLender.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestLifoLender.java?rev=389381&view=auto
==============================================================================
---
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestLifoLender.java
(added)
+++
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestLifoLender.java
Mon Mar 27 19:46:23 2006
@@ -0,0 +1,125 @@
+/*
+ * 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.PoolUtils;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.LinkedList;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Test that [EMAIL PROTECTED] LifoLender} is infact a LIFO.
+ *
+ * @author Sandy McArthur
+ * @version $Revision$ $Date$
+ */
+public class TestLifoLender extends TestLender {
+ private static final Integer ZERO = new Integer(0);
+ private static final Integer ONE = new Integer(1);
+
+ /**
+ * Constructs a test case with the given name.
+ */
+ public TestLifoLender(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ return new TestSuite(TestLifoLender.class);
+ }
+
+ protected Lender createLender() {
+ return new LifoLender();
+ }
+
+ public void testBorrowAndRepay() throws Exception {
+ final Lender lender = createLender();
+ final CompositeObjectPool cop = createPool(lender);
+ final List list = cop.getPool();
+
+ PoolUtils.prefill(cop, 2);
+
+ try {
+ synchronized (list) {
+ borrowAndRepay(lender);
+ }
+ } finally {
+ cop.close();
+ }
+ }
+
+ public void testBorrowWithArrayList() throws Exception {
+ final Lender lender = createLender();
+ final CompositeObjectPool cop = createPool(new ArrayList(), lender);
+ final List list = cop.getPool();
+
+ assertTrue(list instanceof ArrayList);
+
+ PoolUtils.prefill(cop, 2);
+
+ try {
+ synchronized (list) {
+ borrowAndRepay(lender);
+ }
+ } finally {
+ cop.close();
+ }
+ }
+
+ public void testBorrowWithLinkedList() throws Exception {
+ final Lender lender = createLender();
+ final CompositeObjectPool cop = createPool(new LinkedList(), lender);
+ final List list = cop.getPool();
+
+ assertTrue(list instanceof LinkedList);
+
+ PoolUtils.prefill(cop, 2);
+
+ try {
+ synchronized (list) {
+ borrowAndRepay(lender);
+ }
+ } finally {
+ cop.close();
+ }
+ }
+
+ private static void borrowAndRepay(final Lender lender) {
+ Object obj = lender.borrow();
+ assertEquals(ONE, obj);
+ lender.repay(obj);
+
+ obj = lender.borrow();
+ assertEquals(ONE, obj);
+ lender.repay(obj);
+
+ obj = lender.borrow();
+ assertEquals(ONE, obj);
+ Object obj2 = lender.borrow();
+ assertEquals(ZERO, obj2);
+ lender.repay(obj);
+ lender.repay(obj2);
+
+ obj = lender.borrow();
+ assertEquals(ZERO, obj);
+ lender.repay(obj);
+ }
+}
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestLifoLender.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestLifoLender.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestNullLender.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestNullLender.java?rev=389381&view=auto
==============================================================================
---
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestNullLender.java
(added)
+++
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestNullLender.java
Mon Mar 27 19:46:23 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.composite;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Tests for [EMAIL PROTECTED] NullLender}.
+ *
+ * @author Sandy McArthur
+ * @version $Revision$ $Date$
+ */
+public class TestNullLender extends TestLender {
+ /**
+ * Constructs a test case with the given name.
+ */
+ public TestNullLender(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ return new TestSuite(TestNullLender.class);
+ }
+
+ protected Lender createLender() {
+ return new NullLender();
+ }
+}
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestNullLender.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestNullLender.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestSoftLender.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestSoftLender.java?rev=389381&view=auto
==============================================================================
---
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestSoftLender.java
(added)
+++
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestSoftLender.java
Mon Mar 27 19:46:23 2006
@@ -0,0 +1,52 @@
+/*
+ * 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 junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Test behavior specific to [EMAIL PROTECTED] SoftLender}.
+ *
+ * @author Sandy McArthur
+ * @version $Revision$ $Date$
+ */
+public class TestSoftLender extends TestLender {
+ /**
+ * Constructs a test case with the given name.
+ */
+ public TestSoftLender(String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ return new TestSuite(TestSoftLender.class);
+ }
+
+ protected Lender createLender() throws Exception {
+ return new SoftLender(new FifoLender());
+ }
+
+ public void testConstructor() {
+ try {
+ new SoftLender(null);
+ fail("Delegate in constructor must not be null.");
+ } catch (IllegalArgumentException iae) {
+ // expected
+ }
+ }
+}
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestSoftLender.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestSoftLender.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]