Author: psteitz
Date: Sat Apr 8 21:42:24 2006
New Revision: 392677
URL: http://svn.apache.org/viewcvs?rev=392677&view=rev
Log:
Modified TestConnectionPool to ensure connections opened by test cases are
closed in tearDown. Also changed testPooling to make it independent
of underlying pool borrow / return semantics.
Modified:
jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestBasicDataSource.java
jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestConnectionPool.java
jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestJOCLed.java
Modified:
jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestBasicDataSource.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestBasicDataSource.java?rev=392677&r1=392676&r2=392677&view=diff
==============================================================================
---
jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestBasicDataSource.java
(original)
+++
jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestBasicDataSource.java
Sat Apr 8 21:42:24 2006
@@ -63,6 +63,7 @@
public void tearDown() throws Exception {
super.tearDown();
+ ds.close();
ds = null;
}
Modified:
jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestConnectionPool.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestConnectionPool.java?rev=392677&r1=392676&r2=392677&view=diff
==============================================================================
---
jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestConnectionPool.java
(original)
+++
jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestConnectionPool.java
Sat Apr 8 21:42:24 2006
@@ -21,6 +21,7 @@
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
+import java.util.Stack;
import junit.framework.TestCase;
@@ -50,6 +51,17 @@
public void tearDown() throws Exception {
super.tearDown();
+ // Close any connections opened by the test
+ while (!connections.isEmpty()) {
+ Connection conn = (Connection) connections.pop();
+ try {
+ conn.close();
+ } catch (Exception ex) {
+ // ignore
+ } finally {
+ conn = null;
+ }
+ }
}
protected abstract Connection getConnection() throws Exception;
@@ -61,6 +73,16 @@
protected long getMaxWait() {
return 100L;
}
+
+ /** Connections opened during the course of a test */
+ protected Stack connections = new Stack();
+
+ /** Acquire a connection and push it onto the connections stack */
+ protected Connection newConnection() throws Exception {
+ Connection connection = getConnection();
+ connections.push(connection);
+ return connection;
+ }
// ----------- Utility Methods ---------------------------------
@@ -78,7 +100,7 @@
public void testClearWarnings() throws Exception {
Connection[] c = new Connection[getMaxActive()];
for (int i = 0; i < c.length; i++) {
- c[i] = getConnection();
+ c[i] = newConnection();
assertTrue(c[i] != null);
// generate SQLWarning on connection
@@ -94,7 +116,7 @@
}
for (int i = 0; i < c.length; i++) {
- c[i] = getConnection();
+ c[i] = newConnection();
}
for (int i = 0; i < c.length; i++) {
@@ -109,7 +131,7 @@
public void testIsClosed() throws Exception {
for(int i=0;i<getMaxActive();i++) {
- Connection conn = getConnection();
+ Connection conn = newConnection();
assertTrue(null != conn);
assertTrue(!conn.isClosed());
PreparedStatement stmt = conn.prepareStatement("select * from
dual");
@@ -126,7 +148,7 @@
public void testCantCloseConnectionTwice() throws Exception {
for(int i=0;i<getMaxActive();i++) { // loop to show we *can* close
again once we've borrowed it from the pool again
- Connection conn = getConnection();
+ Connection conn = newConnection();
assertTrue(null != conn);
assertTrue(!conn.isClosed());
conn.close();
@@ -142,7 +164,7 @@
}
public void testCantCloseStatementTwice() throws Exception {
- Connection conn = getConnection();
+ Connection conn = newConnection();
assertTrue(null != conn);
assertTrue(!conn.isClosed());
for(int i=0;i<2;i++) { // loop to show we *can* close again once we've
borrowed it from the pool again
@@ -160,7 +182,7 @@
}
public void testSimple() throws Exception {
- Connection conn = getConnection();
+ Connection conn = newConnection();
assertTrue(null != conn);
PreparedStatement stmt = conn.prepareStatement("select * from dual");
assertTrue(null != stmt);
@@ -174,7 +196,7 @@
public void testRepeatedBorrowAndReturn() throws Exception {
for(int i=0;i<100;i++) {
- Connection conn = getConnection();
+ Connection conn = newConnection();
assertTrue(null != conn);
PreparedStatement stmt = conn.prepareStatement("select * from
dual");
assertTrue(null != stmt);
@@ -188,7 +210,7 @@
}
public void testSimple2() throws Exception {
- Connection conn = getConnection();
+ Connection conn = newConnection();
assertTrue(null != conn);
{
PreparedStatement stmt = conn.prepareStatement("select * from
dual");
@@ -216,7 +238,7 @@
; // expected
}
- conn = getConnection();
+ conn = newConnection();
assertTrue(null != conn);
{
PreparedStatement stmt = conn.prepareStatement("select * from
dual");
@@ -240,48 +262,52 @@
conn = null;
}
- public void testPooling() throws Exception {
- Connection conn = getConnection();
- Connection underconn = null;
- if(conn instanceof DelegatingConnection) {
- underconn = ((DelegatingConnection)conn).getInnermostDelegate();
- } else {
- return; // skip this test
- }
- assertTrue(underconn != null);
- Connection conn2 = getConnection();
- Connection underconn2 = null;
- if(conn2 instanceof DelegatingConnection) {
- underconn2 = ((DelegatingConnection)conn2).getInnermostDelegate();
- } else {
- return; // skip this test
- }
- assertTrue(underconn2 != null);
- assertTrue(underconn != underconn2);
- conn2.close();
- conn.close();
- Connection conn3 = getConnection();
- Connection underconn3 = null;
- if(conn3 instanceof DelegatingConnection) {
- underconn3 = ((DelegatingConnection)conn3).getInnermostDelegate();
- } else {
- return; // skip this test
+ public void testPooling() throws Exception {
+ // Grab a maximal set of open connections from the pool
+ Connection[] c = new Connection[getMaxActive()];
+ Connection[] u = new Connection[getMaxActive()];
+ for (int i = 0; i < c.length; i++) {
+ c[i] = newConnection();
+ if (c[i] instanceof DelegatingConnection) {
+ u[i] = ((DelegatingConnection) c[i]).getInnermostDelegate();
+ } else {
+ for (int j = 0; j <= i; j++) {
+ c[j].close();
+ }
+ return; // skip this test
+ }
+ }
+ // Close connections one at a time and get new ones, making sure
+ // the new ones come from the pool
+ for (int i = 0; i < c.length; i++) {
+ c[i].close();
+ Connection con = newConnection();
+ Connection underCon =
+ ((DelegatingConnection) con).getInnermostDelegate();
+ assertTrue("Failed to get connection", underCon != null);
+ boolean found = false;
+ for (int j = 0; j < c.length; j++) {
+ if (underCon == u[j]) {
+ found = true;
+ break;
+ }
+ }
+ assertTrue("New connection not from pool", found);
+ con.close();
}
- assertTrue( underconn3 == underconn || underconn3 == underconn2 );
- conn3.close();
}
public void testAutoCommitBehavior() throws Exception {
- Connection conn = getConnection();
+ Connection conn = newConnection();
assertTrue(conn != null);
assertTrue(conn.getAutoCommit());
conn.setAutoCommit(false);
conn.close();
- Connection conn2 = getConnection();
+ Connection conn2 = newConnection();
assertTrue( conn2.getAutoCommit() );
- Connection conn3 = getConnection();
+ Connection conn3 = newConnection();
assertTrue( conn3.getAutoCommit() );
conn2.close();
@@ -293,7 +319,7 @@
public void testConnectionsAreDistinct() throws Exception {
Connection[] conn = new Connection[getMaxActive()];
for(int i=0;i<conn.length;i++) {
- conn[i] = getConnection();
+ conn[i] = newConnection();
for(int j=0;j<i;j++) {
assertTrue(conn[j] != conn[i]);
assertTrue(!conn[j].equals(conn[i]));
@@ -309,7 +335,7 @@
Connection[] c = new Connection[getMaxActive()];
// test that opening new connections is not closing previous
for (int i = 0; i < c.length; i++) {
- c[i] = getConnection();
+ c[i] = newConnection();
assertTrue(c[i] != null);
for (int j = 0; j <= i; j++) {
assertTrue(!c[j].isClosed());
@@ -325,7 +351,7 @@
Connection[] c = new Connection[getMaxActive()];
// open the maximum connections
for (int i = 0; i < c.length; i++) {
- c[i] = getConnection();
+ c[i] = newConnection();
}
// close one of the connections
@@ -333,7 +359,7 @@
assertTrue(c[0].isClosed());
// get a new connection
- c[0] = getConnection();
+ c[0] = newConnection();
for (int i = 0; i < c.length; i++) {
c[i].close();
@@ -343,12 +369,12 @@
public void testMaxActive() throws Exception {
Connection[] c = new Connection[getMaxActive()];
for (int i = 0; i < c.length; i++) {
- c[i] = getConnection();
+ c[i] = newConnection();
assertTrue(c[i] != null);
}
try {
- getConnection();
+ newConnection();
fail("Allowed to open more than DefaultMaxActive connections.");
} catch (java.sql.SQLException e) {
// should only be able to open 10 connections, so this test should
@@ -419,7 +445,7 @@
PreparedStatement stmt = null;
ResultSet rset = null;
try {
- conn = getConnection();
+ conn = newConnection();
stmt = conn.prepareStatement("select 'literal', SYSDATE
from dual");
rset = stmt.executeQuery();
try {
@@ -447,7 +473,7 @@
// http://issues.apache.org/bugzilla/show_bug.cgi?id=24328
public void testPrepareStatementOptions() throws Exception
{
- Connection conn = getConnection();
+ Connection conn = newConnection();
assertTrue(null != conn);
PreparedStatement stmt = conn.prepareStatement("select * from dual",
ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
@@ -467,7 +493,7 @@
// Bugzilla Bug 24966: NullPointer with Oracle 9 driver
// wrong order of passivate/close when a rset isn't closed
public void testNoRsetClose() throws Exception {
- Connection conn = getConnection();
+ Connection conn = newConnection();
assertNotNull(conn);
PreparedStatement stmt = conn.prepareStatement("test");
assertNotNull(stmt);
@@ -480,9 +506,9 @@
// Bugzilla Bug 26966: Connectionpool's connections always returns same
public void testHashCode() throws Exception {
- Connection conn1 = getConnection();
+ Connection conn1 = newConnection();
assertNotNull(conn1);
- Connection conn2 = getConnection();
+ Connection conn2 = newConnection();
assertNotNull(conn2);
assertTrue(conn1.hashCode() != conn2.hashCode());
Modified:
jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestJOCLed.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestJOCLed.java?rev=392677&r1=392676&r2=392677&view=diff
==============================================================================
---
jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestJOCLed.java
(original)
+++
jakarta/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp/TestJOCLed.java
Sat Apr 8 21:42:24 2006
@@ -37,7 +37,7 @@
public static Test suite() {
return new TestSuite(TestJOCLed.class);
}
-
+
protected Connection getConnection() throws Exception {
return
DriverManager.getConnection("jdbc:apache:commons:dbcp:/testpool");
}
@@ -45,6 +45,7 @@
private PoolingDriver driver = null;
public void setUp() throws Exception {
+ super.setUp();
driver = new PoolingDriver();
PoolingDriver.setAccessToUnderlyingConnectionAllowed(true);
}
@@ -52,6 +53,7 @@
public void tearDown() throws Exception {
driver.closePool("testpool");
DriverManager.deregisterDriver(driver);
+ super.tearDown();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]