Author: sandymac
Date: Mon Mar 27 21:04:36 2006
New Revision: 389394
URL: http://svn.apache.org/viewcvs?rev=389394&view=rev
Log:
Unit tests for the composite Tracker implementations.
Added:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestDebugTracker.java
(with props)
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestNullTracker.java
(with props)
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestReferenceTracker.java
(with props)
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestSimpleTracker.java
(with props)
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestTracker.java
(with props)
Modified:
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/ReferenceTracker.java
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/Tracker.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/TestLender.java
Modified:
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/ReferenceTracker.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/ReferenceTracker.java?rev=389394&r1=389393&r2=389394&view=diff
==============================================================================
---
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/ReferenceTracker.java
(original)
+++
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/ReferenceTracker.java
Mon Mar 27 21:04:36 2006
@@ -53,6 +53,9 @@
private transient int lost = 0;
public void borrowed(final Object obj) {
+ if (obj == null) {
+ throw new IllegalArgumentException("Cannot track null borrowed
from pool.");
+ }
workQueue();
final IdentityReference ref;
synchronized (rq) {
@@ -79,6 +82,9 @@
* @throws IllegalStateException when an object that wasn't brorrowed from
this pool is returned.
*/
public void returned(final Object obj) throws IllegalStateException {
+ if (obj == null) {
+ throw new IllegalArgumentException("Cannot track null returned to
the pool.");
+ }
workQueue();
final IdentityKey key = new IdentityKey(obj);
final IdentityReference ref = (IdentityReference)map.remove(key);
Modified:
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/Tracker.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/Tracker.java?rev=389394&r1=389393&r2=389394&view=diff
==============================================================================
---
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/Tracker.java
(original)
+++
jakarta/commons/proper/pool/trunk/src/java/org/apache/commons/pool/composite/Tracker.java
Mon Mar 27 21:04:36 2006
@@ -40,20 +40,20 @@
* [EMAIL PROTECTED] PoolableObjectFactory#activateObject(Object)
activated} and
* [EMAIL PROTECTED] PoolableObjectFactory#validateObject(Object)
validated} and is about to be returned to the client.
*
- * <p>Objects created via [EMAIL PROTECTED] ObjectPool#addObject()} are
also "borrowed" so that when
- * [EMAIL PROTECTED] ObjectPool#returnObject(Object)} [EMAIL PROTECTED]
#returned(Object) returns} that object it isn't unexpected.
- *
* @param obj was borrowed from the pool.
+ * @throws IllegalArgumentException may be thrown if <code>null</code> is
not allowed.
*/
- public void borrowed(Object obj);
+ public void borrowed(Object obj) throws IllegalArgumentException;
/**
* An object is being [EMAIL PROTECTED] ObjectPool#returnObject(Object)
returned} to the pool.
* [EMAIL PROTECTED] ObjectPool#invalidateObject(Object) Invalid} objects
are also "returned" via this method.
*
* @param obj being returned to the pool.
+ * @throws IllegalArgumentException may be thrown if <code>null</code> is
not allowed.
+ * @throws IllegalStateException may be thrown if an object is returned
that wasn't borrowed.
*/
- public void returned(Object obj);
+ public void returned(Object obj) throws IllegalArgumentException,
IllegalStateException;
/**
* The number of "borrowed" or active objects from the pool.
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=389394&r1=389393&r2=389394&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
Mon Mar 27 21:04:36 2006
@@ -38,6 +38,7 @@
public static Test suite() {
final TestSuite suite = new TestSuite();
+
// Lenders unit tests
suite.addTest(TestFifoLender.suite());
suite.addTest(TestIdleEvictorLender.suite());
@@ -45,8 +46,14 @@
suite.addTest(TestLifoLender.suite());
suite.addTest(TestNullLender.suite());
suite.addTest(TestSoftLender.suite());
+
// Managers unit tests
+
// Tackers unit tests
+ suite.addTest(TestNullTracker.suite());
+ suite.addTest(TestReferenceTracker.suite());
+ suite.addTest(TestDebugTracker.suite());
+ suite.addTest(TestSimpleTracker.suite());
// Remaining unit tests
suite.addTest(TestCompositeObjectPool.suite());
Added:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestDebugTracker.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestDebugTracker.java?rev=389394&view=auto
==============================================================================
---
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestDebugTracker.java
(added)
+++
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestDebugTracker.java
Mon Mar 27 21:04:36 2006
@@ -0,0 +1,44 @@
+/*
+ * 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;
+
+/**
+ * Unit tests for [EMAIL PROTECTED] DebugTracker}.
+ * Note: This test will generate some output to stderr.
+ *
+ * @author Sandy McArthur
+ * @version $Revision$ $Date$
+ */
+public class TestDebugTracker extends TestReferenceTracker {
+ /**
+ * Constructs a test case with the given name.
+ */
+ public TestDebugTracker(final String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ return new TestSuite(TestDebugTracker.class);
+ }
+
+ protected Tracker createTracker() {
+ return new DebugTracker();
+ }
+}
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestDebugTracker.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestDebugTracker.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified:
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=389394&r1=389393&r2=389394&view=diff
==============================================================================
---
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestLender.java
(original)
+++
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestLender.java
Mon Mar 27 21:04:36 2006
@@ -17,8 +17,6 @@
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;
Added:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestNullTracker.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestNullTracker.java?rev=389394&view=auto
==============================================================================
---
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestNullTracker.java
(added)
+++
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestNullTracker.java
Mon Mar 27 21:04:36 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] NullTracker}.
+ *
+ * @author Sandy McArthur
+ * @version $Revision$ $Date$
+ */
+public class TestNullTracker extends TestTracker {
+ /**
+ * Constructs a test case with the given name.
+ */
+ public TestNullTracker(final String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ return new TestSuite(TestNullTracker.class);
+ }
+
+ protected Tracker createTracker() {
+ return new NullTracker();
+ }
+}
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestNullTracker.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestNullTracker.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestReferenceTracker.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestReferenceTracker.java?rev=389394&view=auto
==============================================================================
---
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestReferenceTracker.java
(added)
+++
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestReferenceTracker.java
Mon Mar 27 21:04:36 2006
@@ -0,0 +1,103 @@
+/*
+ * 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;
+
+import java.util.List;
+import java.util.LinkedList;
+
+/**
+ * Unit tests for [EMAIL PROTECTED] ReferenceTracker}s.
+ *
+ * @author Sandy McArthur
+ * @version $Revision$ $Date$
+ */
+public class TestReferenceTracker extends TestTracker {
+ /**
+ * Constructs a test case with the given name.
+ */
+ public TestReferenceTracker(final String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ return new TestSuite(TestReferenceTracker.class);
+ }
+
+ protected Tracker createTracker() {
+ return new ReferenceTracker();
+ }
+
+ public void testBorrowed() {
+ super.testBorrowed();
+
+ final Tracker tracker = createTracker();
+ try {
+ tracker.borrowed(null);
+ fail("Tracking of null is now allowed.");
+ } catch (IllegalArgumentException iae) {
+ // expected
+ }
+ }
+
+ public void testLostBorrowed() {
+ final Tracker tracker = createTracker();
+
+ Object obj = new Object();
+ tracker.borrowed(obj);
+ assertEquals(1, tracker.getBorrowed());
+ obj = null;
+
+ final List garbage = new LinkedList();
+ final Runtime runtime = Runtime.getRuntime();
+ while (tracker.getBorrowed() > 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, tracker.getBorrowed());
+ }
+
+ public void testReturned() {
+ super.testReturned();
+
+ final Tracker tracker = createTracker();
+ try {
+ tracker.returned(null);
+ fail("Tracking of null is now allowed.");
+ } catch (IllegalArgumentException iae) {
+ // expected
+ }
+
+ try {
+ tracker.returned(new Object());
+ fail("Cannot return an object that wasn't borrowed.");
+ } catch (IllegalStateException ise) {
+ // expected
+ }
+
+
+ }
+}
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestReferenceTracker.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestReferenceTracker.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestSimpleTracker.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestSimpleTracker.java?rev=389394&view=auto
==============================================================================
---
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestSimpleTracker.java
(added)
+++
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestSimpleTracker.java
Mon Mar 27 21:04:36 2006
@@ -0,0 +1,55 @@
+/*
+ * 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;
+
+/**
+ * Unit tests for [EMAIL PROTECTED] SimpleTracker}.
+ *
+ * @author Sandy McArthur
+ * @version $Revision$ $Date$
+ */
+public class TestSimpleTracker extends TestTracker {
+ /**
+ * Constructs a test case with the given name.
+ */
+ public TestSimpleTracker(final String name) {
+ super(name);
+ }
+
+ public static Test suite() {
+ return new TestSuite(TestSimpleTracker.class);
+ }
+
+ protected Tracker createTracker() {
+ return new SimpleTracker();
+ }
+
+ public void testReturned() {
+ super.testReturned();
+
+ final Tracker tracker = createTracker();
+ try {
+ tracker.returned(new Object()); // should drive counter negative
+ fail("Cannot return more objects than were borrowed.");
+ } catch (IllegalStateException ise) {
+ // expected
+ }
+ }
+}
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestSimpleTracker.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestSimpleTracker.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Added:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestTracker.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestTracker.java?rev=389394&view=auto
==============================================================================
---
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestTracker.java
(added)
+++
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestTracker.java
Mon Mar 27 21:04:36 2006
@@ -0,0 +1,66 @@
+/*
+ * 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;
+
+/**
+ * Common unit tests for all [EMAIL PROTECTED] Tracker}s.
+ *
+ * @author Sandy McArthur
+ * @version $Revision$ $Date$
+ */
+public abstract class TestTracker extends TestCase {
+ /**
+ * Constructs a test case with the given name.
+ */
+ public TestTracker(final String name) {
+ super(name);
+ }
+
+ protected abstract Tracker createTracker();
+
+ public void testBorrowed() {
+ final Tracker tracker = createTracker();
+
+ tracker.borrowed(new Object());
+ }
+
+ public void testReturned() {
+ final Tracker tracker = createTracker();
+
+ final Object o = new Object();
+ tracker.borrowed(o);
+ tracker.returned(o);
+ }
+
+ public void testGetBorrowed() {
+ final Tracker tracker = createTracker();
+ if (tracker.getBorrowed() >= 0) {
+ final Object obj = new Object();
+ assertEquals(0, tracker.getBorrowed());
+ tracker.borrowed(obj);
+ assertEquals(1, tracker.getBorrowed());
+ tracker.returned(obj);
+ assertEquals(0, tracker.getBorrowed());
+ }
+ }
+
+ public void testToString() {
+ createTracker().toString();
+ }
+}
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestTracker.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
jakarta/commons/proper/pool/trunk/src/test/org/apache/commons/pool/composite/TestTracker.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]