You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2023/01/20 15:07:50 UTC
[commons-dbcp] branch master updated: Use try-with-resources and JUnit 5 API
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-dbcp.git
The following commit(s) were added to refs/heads/master by this push:
new 3c26e90c Use try-with-resources and JUnit 5 API
3c26e90c is described below
commit 3c26e90caa8c66caa33b632af179c5e06286b0ef
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Fri Jan 20 10:07:44 2023 -0500
Use try-with-resources and JUnit 5 API
---
.../datasources/TestPerUserPoolDataSource.java | 213 ++++++-------
.../datasources/TestSharedPoolDataSource.java | 353 ++++++++++-----------
2 files changed, 271 insertions(+), 295 deletions(-)
diff --git a/src/test/java/org/apache/commons/dbcp2/datasources/TestPerUserPoolDataSource.java b/src/test/java/org/apache/commons/dbcp2/datasources/TestPerUserPoolDataSource.java
index fb21c7a0..d68fbd56 100644
--- a/src/test/java/org/apache/commons/dbcp2/datasources/TestPerUserPoolDataSource.java
+++ b/src/test/java/org/apache/commons/dbcp2/datasources/TestPerUserPoolDataSource.java
@@ -21,6 +21,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
@@ -226,48 +227,49 @@ public class TestPerUserPoolDataSource extends TestConnectionPool {
@SuppressWarnings("deprecation")
@Test
public void testDepreactedAccessors() {
- final PerUserPoolDataSource ds = new PerUserPoolDataSource();
- int i = 0;
- //
- i++;
- ds.setDefaultMaxWaitMillis(i);
- assertEquals(i, ds.getDefaultMaxWaitMillis());
- assertEquals(Duration.ofMillis(i), ds.getDefaultMaxWait());
- //
- i++;
- ds.setDefaultMinEvictableIdleTimeMillis(i);
- assertEquals(i, ds.getDefaultMinEvictableIdleTimeMillis());
- assertEquals(Duration.ofMillis(i), ds.getDefaultMinEvictableIdleDuration());
- //
- i++;
- ds.setDefaultSoftMinEvictableIdleTimeMillis(i);
- assertEquals(i, ds.getDefaultSoftMinEvictableIdleTimeMillis());
- assertEquals(Duration.ofMillis(i), ds.getDefaultSoftMinEvictableIdleDuration());
- //
- i++;
- ds.setDefaultTimeBetweenEvictionRunsMillis(i);
- assertEquals(i, ds.getDefaultTimeBetweenEvictionRunsMillis());
- assertEquals(Duration.ofMillis(i), ds.getDefaultDurationBetweenEvictionRuns());
- //
- i++;
- ds.setPerUserMaxWaitMillis(user, Long.valueOf(i));
- assertEquals(i, ds.getPerUserMaxWaitMillis(user));
- assertEquals(Duration.ofMillis(i), ds.getPerUserMaxWaitDuration(user));
- //
- i++;
- ds.setPerUserMinEvictableIdleTimeMillis(user, Long.valueOf(i));
- assertEquals(i, ds.getPerUserMinEvictableIdleTimeMillis(user));
- assertEquals(Duration.ofMillis(i), ds.getPerUserMinEvictableIdleDuration(user));
- //
- i++;
- ds.setPerUserSoftMinEvictableIdleTimeMillis(user, Long.valueOf(i));
- assertEquals(i, ds.getPerUserSoftMinEvictableIdleTimeMillis(user));
- assertEquals(Duration.ofMillis(i), ds.getPerUserSoftMinEvictableIdleDuration(user));
- //
- i++;
- ds.setPerUserTimeBetweenEvictionRunsMillis(user, Long.valueOf(i));
- assertEquals(i, ds.getPerUserTimeBetweenEvictionRunsMillis(user));
- assertEquals(Duration.ofMillis(i), ds.getPerUserDurationBetweenEvictionRuns(user));
+ try (final PerUserPoolDataSource ds = new PerUserPoolDataSource()) {
+ int i = 0;
+ //
+ i++;
+ ds.setDefaultMaxWaitMillis(i);
+ assertEquals(i, ds.getDefaultMaxWaitMillis());
+ assertEquals(Duration.ofMillis(i), ds.getDefaultMaxWait());
+ //
+ i++;
+ ds.setDefaultMinEvictableIdleTimeMillis(i);
+ assertEquals(i, ds.getDefaultMinEvictableIdleTimeMillis());
+ assertEquals(Duration.ofMillis(i), ds.getDefaultMinEvictableIdleDuration());
+ //
+ i++;
+ ds.setDefaultSoftMinEvictableIdleTimeMillis(i);
+ assertEquals(i, ds.getDefaultSoftMinEvictableIdleTimeMillis());
+ assertEquals(Duration.ofMillis(i), ds.getDefaultSoftMinEvictableIdleDuration());
+ //
+ i++;
+ ds.setDefaultTimeBetweenEvictionRunsMillis(i);
+ assertEquals(i, ds.getDefaultTimeBetweenEvictionRunsMillis());
+ assertEquals(Duration.ofMillis(i), ds.getDefaultDurationBetweenEvictionRuns());
+ //
+ i++;
+ ds.setPerUserMaxWaitMillis(user, Long.valueOf(i));
+ assertEquals(i, ds.getPerUserMaxWaitMillis(user));
+ assertEquals(Duration.ofMillis(i), ds.getPerUserMaxWaitDuration(user));
+ //
+ i++;
+ ds.setPerUserMinEvictableIdleTimeMillis(user, Long.valueOf(i));
+ assertEquals(i, ds.getPerUserMinEvictableIdleTimeMillis(user));
+ assertEquals(Duration.ofMillis(i), ds.getPerUserMinEvictableIdleDuration(user));
+ //
+ i++;
+ ds.setPerUserSoftMinEvictableIdleTimeMillis(user, Long.valueOf(i));
+ assertEquals(i, ds.getPerUserSoftMinEvictableIdleTimeMillis(user));
+ assertEquals(Duration.ofMillis(i), ds.getPerUserSoftMinEvictableIdleDuration(user));
+ //
+ i++;
+ ds.setPerUserTimeBetweenEvictionRunsMillis(user, Long.valueOf(i));
+ assertEquals(i, ds.getPerUserTimeBetweenEvictionRunsMillis(user));
+ assertEquals(Duration.ofMillis(i), ds.getPerUserDurationBetweenEvictionRuns(user));
+ }
}
/**
@@ -276,14 +278,9 @@ public class TestPerUserPoolDataSource extends TestConnectionPool {
* https://issues.apache.org/bugzilla/show_bug.cgi?id=18905
*/
@Test
- public void testIncorrectPassword() throws Exception {
+ public void testIncorrectPassword() throws SQLException {
// Use bad password
- try (Connection c = ds.getConnection("u1", "zlsafjk")){
- fail("Able to retrieve connection with incorrect password");
- } catch (final SQLException e1) {
- // should fail
-
- }
+ assertThrows(SQLException.class, () -> ds.getConnection("u1", "zlsafjk"));
// Use good password
ds.getConnection("u1", "p1").close();
@@ -301,28 +298,22 @@ public class TestPerUserPoolDataSource extends TestConnectionPool {
// Try related users and passwords
ds.getConnection(user, "bar").close();
- try (Connection c = ds.getConnection("foob", "ar")) {
- fail("Should have caused an SQLException");
- } catch (final SQLException expected) {
- }
- try (Connection c = ds.getConnection(user, "baz")){
- fail("Should have generated SQLException");
- } catch (final SQLException expected) {
- }
+ assertThrows(SQLException.class, () -> ds.getConnection("foob", "ar"));
+ assertThrows(SQLException.class, () -> ds.getConnection(user, "baz"));
}
@Override
@Test
public void testMaxTotal() throws Exception {
final Connection[] c = new Connection[getMaxTotal()];
- for (int i=0; i<c.length; i++) {
+ for (int i = 0; i < c.length; i++) {
c[i] = ds.getConnection();
assertNotNull(c[i]);
}
- try (Connection conn = ds.getConnection()){
+ try (Connection conn = ds.getConnection()) {
fail("Allowed to open more than DefaultMaxTotal connections.");
- } catch(final java.sql.SQLException e) {
+ } catch (final java.sql.SQLException e) {
// should only be able to open 10 connections, so this test should
// throw an exception
}
@@ -341,13 +332,9 @@ public class TestPerUserPoolDataSource extends TestConnectionPool {
final PerUserPoolDataSource tds = (PerUserPoolDataSource) ds;
tds.setDefaultMaxWait(Duration.ZERO);
tds.setPerUserMaxTotal("u1", 1);
- final Connection conn = tds.getConnection("u1", "p1");
- try (Connection c2 = tds.getConnection("u1", "p1")){
- fail("Expecting Pool Exhausted exception");
- } catch (final SQLException ex) {
- // expected
+ try (final Connection conn = tds.getConnection("u1", "p1")) {
+ assertThrows(SQLException.class, () -> tds.getConnection("u1", "p1"));
}
- conn.close();
}
@Test
@@ -972,16 +959,15 @@ public class TestPerUserPoolDataSource extends TestConnectionPool {
assertEquals(0, tds.getNumIdle("u1"));
assertEquals(0, tds.getNumIdle("u2"));
- Connection conn = tds.getConnection();
- assertNotNull(conn);
- assertEquals(1, tds.getNumActive());
- assertEquals(0, tds.getNumActive("u1"));
- assertEquals(0, tds.getNumActive("u2"));
- assertEquals(0, tds.getNumIdle());
- assertEquals(0, tds.getNumIdle("u1"));
- assertEquals(0, tds.getNumIdle("u2"));
-
- conn.close();
+ try (Connection conn = tds.getConnection()) {
+ assertNotNull(conn);
+ assertEquals(1, tds.getNumActive());
+ assertEquals(0, tds.getNumActive("u1"));
+ assertEquals(0, tds.getNumActive("u2"));
+ assertEquals(0, tds.getNumIdle());
+ assertEquals(0, tds.getNumIdle("u1"));
+ assertEquals(0, tds.getNumIdle("u2"));
+ }
assertEquals(0, tds.getNumActive());
assertEquals(0, tds.getNumActive("u1"));
assertEquals(0, tds.getNumActive("u2"));
@@ -989,16 +975,16 @@ public class TestPerUserPoolDataSource extends TestConnectionPool {
assertEquals(0, tds.getNumIdle("u1"));
assertEquals(0, tds.getNumIdle("u2"));
- conn = tds.getConnection("u1", "p1");
- assertNotNull(conn);
- assertEquals(0, tds.getNumActive());
- assertEquals(1, tds.getNumActive("u1"));
- assertEquals(0, tds.getNumActive("u2"));
- assertEquals(1, tds.getNumIdle());
- assertEquals(0, tds.getNumIdle("u1"));
- assertEquals(0, tds.getNumIdle("u2"));
+ try (Connection conn = tds.getConnection("u1", "p1")) {
+ assertNotNull(conn);
+ assertEquals(0, tds.getNumActive());
+ assertEquals(1, tds.getNumActive("u1"));
+ assertEquals(0, tds.getNumActive("u2"));
+ assertEquals(1, tds.getNumIdle());
+ assertEquals(0, tds.getNumIdle("u1"));
+ assertEquals(0, tds.getNumIdle("u2"));
+ }
- conn.close();
assertEquals(0, tds.getNumActive());
assertEquals(0, tds.getNumActive("u1"));
assertEquals(0, tds.getNumActive("u2"));
@@ -1567,30 +1553,26 @@ public class TestPerUserPoolDataSource extends TestConnectionPool {
@Override
@Test
- public void testSimple() throws Exception
- {
- final Connection conn = ds.getConnection();
- assertNotNull(conn);
- final PreparedStatement stmt = conn.prepareStatement("select * from dual");
- assertNotNull(stmt);
- final ResultSet rset = stmt.executeQuery();
- assertNotNull(rset);
- assertTrue(rset.next());
- rset.close();
- stmt.close();
- conn.close();
+ public void testSimple() throws Exception {
+ try (final Connection conn = ds.getConnection()) {
+ assertNotNull(conn);
+ try (final PreparedStatement stmt = conn.prepareStatement("select * from dual")) {
+ assertNotNull(stmt);
+ try (final ResultSet rset = stmt.executeQuery()) {
+ assertNotNull(rset);
+ assertTrue(rset.next());
+ }
+ }
+ }
}
@Override
@Test
- public void testSimple2()
- throws Exception
- {
+ public void testSimple2() throws Exception {
Connection conn = ds.getConnection();
assertNotNull(conn);
- PreparedStatement stmt =
- conn.prepareStatement("select * from dual");
+ PreparedStatement stmt = conn.prepareStatement("select * from dual");
assertNotNull(stmt);
ResultSet rset = stmt.executeQuery();
assertNotNull(rset);
@@ -1607,9 +1589,9 @@ public class TestPerUserPoolDataSource extends TestConnectionPool {
stmt.close();
conn.close();
- try (Statement s = conn.createStatement()){
+ try (Statement s = conn.createStatement()) {
fail("Can't use closed connections");
- } catch(final SQLException e) {
+ } catch (final SQLException e) {
// expected
}
@@ -1637,18 +1619,17 @@ public class TestPerUserPoolDataSource extends TestConnectionPool {
}
@Test
- public void testSimpleWithUsername() throws Exception
- {
- final Connection conn = ds.getConnection("u1", "p1");
- assertNotNull(conn);
- final PreparedStatement stmt = conn.prepareStatement("select * from dual");
- assertNotNull(stmt);
- final ResultSet rset = stmt.executeQuery();
- assertNotNull(rset);
- assertTrue(rset.next());
- rset.close();
- stmt.close();
- conn.close();
+ public void testSimpleWithUsername() throws Exception {
+ try (final Connection conn = ds.getConnection("u1", "p1")) {
+ assertNotNull(conn);
+ try (final PreparedStatement stmt = conn.prepareStatement("select * from dual")) {
+ assertNotNull(stmt);
+ try (final ResultSet rset = stmt.executeQuery()) {
+ assertNotNull(rset);
+ assertTrue(rset.next());
+ }
+ }
+ }
}
@Test
diff --git a/src/test/java/org/apache/commons/dbcp2/datasources/TestSharedPoolDataSource.java b/src/test/java/org/apache/commons/dbcp2/datasources/TestSharedPoolDataSource.java
index a817bb2c..ee7fd08d 100644
--- a/src/test/java/org/apache/commons/dbcp2/datasources/TestSharedPoolDataSource.java
+++ b/src/test/java/org/apache/commons/dbcp2/datasources/TestSharedPoolDataSource.java
@@ -89,7 +89,7 @@ public class TestSharedPoolDataSource extends TestConnectionPool {
private static abstract class PrepareStatementCallback {
protected Connection conn;
- abstract PreparedStatement getPreparedStatement() throws SQLException;
+ abstract PreparedStatement prepareStatement() throws SQLException;
void setConnection(final Connection conn) {
this.conn = conn;
@@ -98,42 +98,42 @@ public class TestSharedPoolDataSource extends TestConnectionPool {
private static class PscbString extends PrepareStatementCallback {
@Override
- PreparedStatement getPreparedStatement() throws SQLException {
+ PreparedStatement prepareStatement() throws SQLException {
return conn.prepareStatement("select * from dual");
}
}
private static class PscbStringInt extends PrepareStatementCallback {
@Override
- PreparedStatement getPreparedStatement() throws SQLException {
+ PreparedStatement prepareStatement() throws SQLException {
return conn.prepareStatement("select * from dual", 0);
}
}
private static class PscbStringIntArray extends PrepareStatementCallback {
@Override
- PreparedStatement getPreparedStatement() throws SQLException {
+ PreparedStatement prepareStatement() throws SQLException {
return conn.prepareStatement("select * from dual", ArrayUtils.EMPTY_INT_ARRAY);
}
}
private static class PscbStringIntInt extends PrepareStatementCallback {
@Override
- PreparedStatement getPreparedStatement() throws SQLException {
+ PreparedStatement prepareStatement() throws SQLException {
return conn.prepareStatement("select * from dual", 0, 0);
}
}
private static class PscbStringIntIntInt extends PrepareStatementCallback {
@Override
- PreparedStatement getPreparedStatement() throws SQLException {
+ PreparedStatement prepareStatement() throws SQLException {
return conn.prepareStatement("select * from dual", 0, 0, 0);
}
}
private static class PscbStringStringArray extends PrepareStatementCallback {
@Override
- PreparedStatement getPreparedStatement() throws SQLException {
+ PreparedStatement prepareStatement() throws SQLException {
return conn.prepareStatement("select * from dual", ArrayUtils.EMPTY_STRING_ARRAY);
}
}
@@ -158,6 +158,7 @@ public class TestSharedPoolDataSource extends TestConnectionPool {
spDs.setDefaultMaxWait(getMaxWaitDuration());
spDs.setDefaultTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
+ @SuppressWarnings("resource")
final DataSource myDs = spDs;
try (Connection conn = ds.getConnection()) {
@@ -168,7 +169,7 @@ public class TestSharedPoolDataSource extends TestConnectionPool {
final long l2HashCode;
try (CallableStatement stmt = callBack.getCallableStatement()) {
assertNotNull(stmt);
- l1HashCode = ((DelegatingStatement) stmt).getDelegate().hashCode();
+ l1HashCode = getDelegateHashCode(stmt);
try (ResultSet rset = stmt.executeQuery()) {
assertNotNull(rset);
assertTrue(rset.next());
@@ -177,7 +178,7 @@ public class TestSharedPoolDataSource extends TestConnectionPool {
try (CallableStatement stmt = callBack.getCallableStatement()) {
assertNotNull(stmt);
- l2HashCode = ((DelegatingStatement) stmt).getDelegate().hashCode();
+ l2HashCode = getDelegateHashCode(stmt);
try (ResultSet rset = stmt.executeQuery()) {
assertNotNull(rset);
assertTrue(rset.next());
@@ -195,7 +196,7 @@ public class TestSharedPoolDataSource extends TestConnectionPool {
final long l4HashCode;
try (CallableStatement stmt = callBack.getCallableStatement()) {
assertNotNull(stmt);
- l3HashCode = ((DelegatingStatement) stmt).getDelegate().hashCode();
+ l3HashCode = getDelegateHashCode(stmt);
try (ResultSet rset = stmt.executeQuery()) {
assertNotNull(rset);
assertTrue(rset.next());
@@ -204,7 +205,7 @@ public class TestSharedPoolDataSource extends TestConnectionPool {
try (CallableStatement stmt = callBack.getCallableStatement()) {
assertNotNull(stmt);
- l4HashCode = ((DelegatingStatement) stmt).getDelegate().hashCode();
+ l4HashCode = getDelegateHashCode(stmt);
try (ResultSet rset = stmt.executeQuery()) {
assertNotNull(rset);
assertTrue(rset.next());
@@ -217,10 +218,8 @@ public class TestSharedPoolDataSource extends TestConnectionPool {
}
}
- private void doTestPoolPreparedStatements(final PrepareStatementCallback callBack)
- throws Exception {
+ private void doTestPoolPreparedStatements(final PrepareStatementCallback psCallBack) throws Exception {
final DriverAdapterCPDS mypcds = new DriverAdapterCPDS();
- DataSource myds;
mypcds.setDriver("org.apache.commons.dbcp2.TesterDriver");
mypcds.setUrl("jdbc:apache:commons:testdriver");
mypcds.setUser("foo");
@@ -228,71 +227,70 @@ public class TestSharedPoolDataSource extends TestConnectionPool {
mypcds.setPoolPreparedStatements(true);
mypcds.setMaxPreparedStatements(10);
- final SharedPoolDataSource tds = new SharedPoolDataSource();
- tds.setConnectionPoolDataSource(mypcds);
- tds.setMaxTotal(getMaxTotal());
- tds.setDefaultMaxWait(getMaxWaitDuration());
- tds.setDefaultTransactionIsolation(
- Connection.TRANSACTION_READ_COMMITTED);
-
- myds = tds;
-
- Connection conn = ds.getConnection();
- callBack.setConnection(conn);
- PreparedStatement stmt;
- ResultSet rset;
-
- assertNotNull(conn);
-
- stmt = callBack.getPreparedStatement();
- assertNotNull(stmt);
- final long l1HashCode = ((DelegatingStatement) stmt).getDelegate().hashCode();
- rset = stmt.executeQuery();
- assertNotNull(rset);
- assertTrue(rset.next());
- rset.close();
- stmt.close();
-
- stmt = callBack.getPreparedStatement();
- assertNotNull(stmt);
- final long l2HashCode = ((DelegatingStatement) stmt).getDelegate().hashCode();
- rset = stmt.executeQuery();
- assertNotNull(rset);
- assertTrue(rset.next());
- rset.close();
- stmt.close();
-
- // statement pooling is not enabled, we should get different statements
- assertTrue(l1HashCode != l2HashCode);
- conn.close();
- conn = null;
-
- conn = myds.getConnection();
- callBack.setConnection(conn);
-
- stmt = callBack.getPreparedStatement();
- assertNotNull(stmt);
- final long l3HashCode = ((DelegatingStatement) stmt).getDelegate().hashCode();
- rset = stmt.executeQuery();
- assertNotNull(rset);
- assertTrue(rset.next());
- rset.close();
- stmt.close();
-
- stmt = callBack.getPreparedStatement();
- assertNotNull(stmt);
- final long l4HashCode = ((DelegatingStatement) stmt).getDelegate().hashCode();
- rset = stmt.executeQuery();
- assertNotNull(rset);
- assertTrue(rset.next());
- rset.close();
- stmt.close();
-
- // prepared statement pooling is working
- assertEquals(l3HashCode, l4HashCode);
- conn.close();
- conn = null;
- tds.close();
+ try (final SharedPoolDataSource tds = new SharedPoolDataSource()) {
+ tds.setConnectionPoolDataSource(mypcds);
+ tds.setMaxTotal(getMaxTotal());
+ tds.setDefaultMaxWait(getMaxWaitDuration());
+ tds.setDefaultTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
+
+ @SuppressWarnings("resource")
+ DataSource myDs = tds;
+
+ try (Connection conn = ds.getConnection()) {
+ final long l1HashCode;
+ final long l2HashCode;
+ assertNotNull(conn);
+ psCallBack.setConnection(conn);
+ try (PreparedStatement stmt = psCallBack.prepareStatement()) {
+ assertNotNull(stmt);
+ l1HashCode = getDelegateHashCode(stmt);
+ try (ResultSet resultSet = stmt.executeQuery()) {
+ assertNotNull(resultSet);
+ assertTrue(resultSet.next());
+ }
+ }
+
+ try (PreparedStatement stmt = psCallBack.prepareStatement()) {
+ assertNotNull(stmt);
+ l2HashCode = getDelegateHashCode(stmt);
+ try (ResultSet resultSet = stmt.executeQuery()) {
+ assertNotNull(resultSet);
+ assertTrue(resultSet.next());
+ }
+ }
+
+ // statement pooling is not enabled, we should get different statements
+ assertTrue(l1HashCode != l2HashCode);
+ }
+
+ try (Connection conn = myDs.getConnection()) {
+ final long l3HashCode;
+ final long l4HashCode;
+
+ assertNotNull(conn);
+ psCallBack.setConnection(conn);
+ try (PreparedStatement stmt = psCallBack.prepareStatement()) {
+ assertNotNull(stmt);
+ l3HashCode = getDelegateHashCode(stmt);
+ try (ResultSet resultSet = stmt.executeQuery()) {
+ assertNotNull(resultSet);
+ assertTrue(resultSet.next());
+ }
+ }
+
+ try (PreparedStatement stmt = psCallBack.prepareStatement()) {
+ assertNotNull(stmt);
+ l4HashCode = getDelegateHashCode(stmt);
+ try (ResultSet resultSet = stmt.executeQuery()) {
+ assertNotNull(resultSet);
+ assertTrue(resultSet.next());
+ }
+ }
+
+ // prepared statement pooling is working
+ assertEquals(l3HashCode, l4HashCode);
+ }
+ }
}
@Override
@@ -300,6 +298,11 @@ public class TestSharedPoolDataSource extends TestConnectionPool {
return ds.getConnection("foo","bar");
}
+ @SuppressWarnings("resource")
+ private int getDelegateHashCode(final Statement stmt) {
+ return ((DelegatingStatement) stmt).getDelegate().hashCode();
+ }
+
@BeforeEach
public void setUp() throws Exception {
pcds = new DriverAdapterCPDS();
@@ -323,36 +326,27 @@ public class TestSharedPoolDataSource extends TestConnectionPool {
// See DBCP-8
@Test
public void testChangePassword() throws Exception {
- try (Connection c = ds.getConnection("foo", "bay")){
- fail("Should have generated SQLException");
- } catch (final SQLException expected) {
- }
+ assertThrows(SQLException.class, () -> ds.getConnection("foo", "bay"));
final Connection con1 = ds.getConnection("foo", "bar");
final Connection con2 = ds.getConnection("foo", "bar");
final Connection con3 = ds.getConnection("foo", "bar");
con1.close();
con2.close();
- TesterDriver.addUser("foo","bay"); // change the user/password setting
+ TesterDriver.addUser("foo", "bay"); // change the user/password setting
try (Connection con4 = ds.getConnection("foo", "bay")) { // new password
// Idle instances with old password should have been cleared
- assertEquals(0, ((SharedPoolDataSource) ds).getNumIdle(),
- "Should be no idle connections in the pool");
+ assertEquals(0, ((SharedPoolDataSource) ds).getNumIdle(), "Should be no idle connections in the pool");
con4.close();
// Should be one idle instance with new pwd
- assertEquals(1, ((SharedPoolDataSource) ds).getNumIdle(),
- "Should be one idle connection in the pool");
- try (Connection con4b = ds.getConnection("foo", "bar")) { // old password
- fail("Should have generated SQLException");
- } catch (final SQLException expected) {
+ assertEquals(1, ((SharedPoolDataSource) ds).getNumIdle(), "Should be one idle connection in the pool");
+ assertThrows(SQLException.class, () -> ds.getConnection("foo", "bar")); // old password
+ try (final Connection con5 = ds.getConnection("foo", "bay")) { // take the idle one
+ con3.close(); // Return a connection with the old password
+ ds.getConnection("foo", "bay").close(); // will try bad returned connection and destroy it
+ assertEquals(1, ((SharedPoolDataSource) ds).getNumIdle(), "Should be one idle connection in the pool");
}
- final Connection con5 = ds.getConnection("foo", "bay"); // take the idle one
- con3.close(); // Return a connection with the old password
- ds.getConnection("foo", "bay").close(); // will try bad returned connection and destroy it
- assertEquals(1, ((SharedPoolDataSource) ds).getNumIdle(),
- "Should be one idle connection in the pool");
- con5.close();
} finally {
- TesterDriver.addUser("foo","bar");
+ TesterDriver.addUser("foo", "bar");
}
}
@@ -363,10 +357,11 @@ public class TestSharedPoolDataSource extends TestConnectionPool {
*/
@Test
public void testClosePool() throws Exception {
- ((SharedPoolDataSource)ds).close();
- final SharedPoolDataSource tds = new SharedPoolDataSource();
- // NPE before BZ 37359 fix
- tds.close();
+ ((SharedPoolDataSource) ds).close();
+ @SuppressWarnings("resource") // closed below
+ final SharedPoolDataSource tds = new SharedPoolDataSource();
+ // NPE before BZ 37359 fix
+ tds.close();
}
@Override
@@ -457,7 +452,7 @@ public class TestSharedPoolDataSource extends TestConnectionPool {
* JIRA: DBCP-245
*/
@Test
- public void testIncorrectPassword() throws Exception {
+ public void testIncorrectPassword() throws SQLException {
ds.getConnection("u2", "p2").close();
try (Connection c = ds.getConnection("u1", "zlsafjk")){ // Use bad password
fail("Able to retrieve connection with incorrect password");
@@ -588,19 +583,18 @@ public class TestSharedPoolDataSource extends TestConnectionPool {
* Bugzilla Bug 24136 ClassCastException in DriverAdapterCPDS when setPoolPreparedStatements(true)
*/
@Test
- public void testPoolPrepareCall() throws Exception {
+ public void testPoolPrepareCall() throws SQLException {
pcds.setPoolPreparedStatements(true);
-
- final Connection conn = ds.getConnection();
- assertNotNull(conn);
- final PreparedStatement stmt = conn.prepareCall("{call home()}");
- assertNotNull(stmt);
- final ResultSet rset = stmt.executeQuery();
- assertNotNull(rset);
- assertTrue(rset.next());
- rset.close();
- stmt.close();
- conn.close();
+ try (final Connection conn = ds.getConnection()) {
+ assertNotNull(conn);
+ try (final PreparedStatement stmt = conn.prepareCall("{call home()}")) {
+ assertNotNull(stmt);
+ try (final ResultSet rset = stmt.executeQuery()) {
+ assertNotNull(rset);
+ assertTrue(rset.next());
+ }
+ }
+ }
}
@Test
@@ -621,85 +615,86 @@ public class TestSharedPoolDataSource extends TestConnectionPool {
}
@Test
- public void testPoolPrepareStatement() throws Exception {
+ public void testPoolPrepareStatement() throws SQLException {
pcds.setPoolPreparedStatements(true);
- final Connection conn = ds.getConnection();
- assertNotNull(conn);
- final PreparedStatement stmt = conn.prepareStatement("select * from dual");
- assertNotNull(stmt);
- final ResultSet rset = stmt.executeQuery();
- assertNotNull(rset);
- assertTrue(rset.next());
- rset.close();
- stmt.close();
- conn.close();
+ try (final Connection conn = ds.getConnection()) {
+ assertNotNull(conn);
+ try (final PreparedStatement stmt = conn.prepareStatement("select * from dual")) {
+ assertNotNull(stmt);
+ try (final ResultSet rset = stmt.executeQuery()) {
+ assertNotNull(rset);
+ assertTrue(rset.next());
+ }
+ }
+ }
}
@Override
@Test
public void testSimple() throws Exception {
- final Connection conn = ds.getConnection();
- assertNotNull(conn);
- final PreparedStatement stmt = conn.prepareStatement("select * from dual");
- assertNotNull(stmt);
- final ResultSet rset = stmt.executeQuery();
- assertNotNull(rset);
- assertTrue(rset.next());
- rset.close();
- stmt.close();
- conn.close();
+ try (final Connection conn = ds.getConnection()) {
+ assertNotNull(conn);
+ try (final PreparedStatement stmt = conn.prepareStatement("select * from dual")) {
+ assertNotNull(stmt);
+ try (final ResultSet rset = stmt.executeQuery()) {
+ assertNotNull(rset);
+ assertTrue(rset.next());
+ }
+ }
+ }
}
@Override
@Test
- public void testSimple2() throws Exception {
- Connection conn = ds.getConnection();
- assertNotNull(conn);
-
- PreparedStatement stmt = conn.prepareStatement("select * from dual");
- assertNotNull(stmt);
- ResultSet rset = stmt.executeQuery();
- assertNotNull(rset);
- assertTrue(rset.next());
- rset.close();
- stmt.close();
-
- stmt = conn.prepareStatement("select * from dual");
- assertNotNull(stmt);
- rset = stmt.executeQuery();
- assertNotNull(rset);
- assertTrue(rset.next());
- rset.close();
- stmt.close();
-
- conn.close();
- try (Statement s = conn.createStatement()) {
- fail("Can't use closed connections");
- } catch (final SQLException e) {
- // expected
- }
+ public void testSimple2() throws SQLException {
+ {
+ Connection conn = ds.getConnection();
+ assertNotNull(conn);
- conn = ds.getConnection();
- assertNotNull(conn);
+ try (PreparedStatement stmt = conn.prepareStatement("select * from dual")) {
+ assertNotNull(stmt);
+ try (ResultSet rset = stmt.executeQuery()) {
+ assertNotNull(rset);
+ assertTrue(rset.next());
+ }
+ }
- stmt = conn.prepareStatement("select * from dual");
- assertNotNull(stmt);
- rset = stmt.executeQuery();
- assertNotNull(rset);
- assertTrue(rset.next());
- rset.close();
- stmt.close();
+ try (PreparedStatement stmt = conn.prepareStatement("select * from dual")) {
+ assertNotNull(stmt);
+ try (ResultSet rset = stmt.executeQuery()) {
+ assertNotNull(rset);
+ assertTrue(rset.next());
+ }
+ }
- stmt = conn.prepareStatement("select * from dual");
- assertNotNull(stmt);
- rset = stmt.executeQuery();
- assertNotNull(rset);
- assertTrue(rset.next());
- rset.close();
- stmt.close();
+ conn.close();
+ try (Statement s = conn.createStatement()) {
+ fail("Can't use closed connections");
+ } catch (final SQLException e) {
+ // expected
+ }
+ }
+ try (Connection conn = ds.getConnection()) {
+ assertNotNull(conn);
- conn.close();
+ try (PreparedStatement stmt = conn.prepareStatement("select * from dual")) {
+ assertNotNull(stmt);
+ try (ResultSet rset = stmt.executeQuery()) {
+ assertNotNull(rset);
+ assertTrue(rset.next());
+ }
+ }
+
+ try (PreparedStatement stmt = conn.prepareStatement("select * from dual")) {
+ assertNotNull(stmt);
+ try (ResultSet rset = stmt.executeQuery()) {
+ assertNotNull(rset);
+ assertTrue(rset.next());
+ }
+ }
+
+ }
}
@Test