@Test(expected = IOException.class) public void testCloseNoInit() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(); pooled.close(); }
@Test public void testReleaseUnknown() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL); try { JdbcDatabaseConnection conn1 = new JdbcDatabaseConnection(DriverManager.getConnection(DEFAULT_DATABASE_URL)); pooled.releaseConnection(conn1); } finally { pooled.close(); } }
@Test public void testClearOtherConnection() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL); try { JdbcDatabaseConnection conn1 = new JdbcDatabaseConnection(DriverManager.getConnection(DEFAULT_DATABASE_URL)); JdbcDatabaseConnection conn2 = new JdbcDatabaseConnection(DriverManager.getConnection(DEFAULT_DATABASE_URL)); pooled.saveSpecialConnection(conn1); pooled.clearSpecialConnection(conn2); } finally { pooled.close(); } }
@Test(expected = SQLException.class) public void testSaveOtherConnection() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL); try { JdbcDatabaseConnection conn1 = new JdbcDatabaseConnection(DriverManager.getConnection(DEFAULT_DATABASE_URL)); JdbcDatabaseConnection conn2 = new JdbcDatabaseConnection(DriverManager.getConnection(DEFAULT_DATABASE_URL)); pooled.saveSpecialConnection(conn1); pooled.saveSpecialConnection(conn2); } finally { pooled.close(); } }
@Test public void testReleaseAfterClose() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL); DatabaseConnection conn1; try { conn1 = pooled.getReadOnlyConnection(null); } finally { pooled.close(); } pooled.releaseConnection(conn1); }
@Test public void testReleaseAlreadyClosedUnknown() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL); try { JdbcDatabaseConnection conn1 = new JdbcDatabaseConnection(DriverManager.getConnection(DEFAULT_DATABASE_URL)); conn1.close(); pooled.releaseConnection(conn1); } finally { pooled.close(); } }
@Test public void testMaxAgeMaxValue() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL); try { pooled.setMaxConnectionAgeMillis(Long.MAX_VALUE); DatabaseConnection conn1 = pooled.getReadOnlyConnection(null); pooled.releaseConnection(conn1); } finally { pooled.close(); } }
@Test public void testReleaseAlreadyClosed() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL); try { DatabaseConnection conn1 = pooled.getReadOnlyConnection(null); conn1.close(); pooled.releaseConnection(conn1); } finally { pooled.close(); } }
@Test public void testNestedConnection() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL); try { JdbcDatabaseConnection conn1 = new JdbcDatabaseConnection(DriverManager.getConnection(DEFAULT_DATABASE_URL)); pooled.saveSpecialConnection(conn1); pooled.saveSpecialConnection(conn1); pooled.releaseConnection(conn1); pooled.releaseConnection(conn1); } finally { pooled.close(); } }
@Test public void testConstructors() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL); assertEquals(DEFAULT_DATABASE_URL, pooled.getUrl()); pooled.close(); pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL, null, null); assertEquals(DEFAULT_DATABASE_URL, pooled.getUrl()); pooled.close(); DatabaseType databaseType = DatabaseTypeUtils.createDatabaseType(DEFAULT_DATABASE_URL); pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL, databaseType); assertEquals(DEFAULT_DATABASE_URL, pooled.getUrl()); assertSame(databaseType, pooled.getDatabaseType()); pooled.close(); pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL, null, null, databaseType); assertEquals(DEFAULT_DATABASE_URL, pooled.getUrl()); assertSame(databaseType, pooled.getDatabaseType()); pooled.close(); }
@Test public void testMaxAge() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL); try { long maxAge = 500; pooled.setMaxConnectionAgeMillis(maxAge); DatabaseConnection conn1 = pooled.getReadOnlyConnection(null); pooled.releaseConnection(conn1); Thread.sleep(maxAge + 1); DatabaseConnection conn2 = pooled.getReadOnlyConnection(null); assertNotSame(conn1, conn2); } finally { pooled.close(); } }
@Test public void testSetAutoCommit() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL); try { DatabaseConnection conn1 = pooled.getReadOnlyConnection(null); conn1.setAutoCommit(false); pooled.releaseConnection(conn1); DatabaseConnection conn2 = pooled.getReadOnlyConnection(null); assertSame(conn1, conn2); assertTrue(conn2.isAutoCommit()); } finally { pooled.close(); } }
@Test public void testIsOpen() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL); try { pooled.setUrl("jdbc:h2:mem:baz"); assertTrue(pooled.isOpen(null)); DatabaseConnection conn = pooled.getReadOnlyConnection(null); pooled.releaseConnection(conn); assertTrue(pooled.isOpen(null)); } finally { pooled.close(); assertFalse(pooled.isOpen(null)); } }
@Test public void testAuthTestConnectionExpired() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL); long delay = 100; pooled.setCheckConnectionsEveryMillis(delay); pooled.setMaxConnectionAgeMillis(delay); String pingStatement = pooled.getDatabaseType().getPingStatement(); try { DatabaseConnection conn1 = pooled.getReadWriteConnection(null); conn1.queryForLong(pingStatement); pooled.releaseConnection(conn1); // make it test ok once Thread.sleep(delay * 2); DatabaseConnection conn2 = pooled.getReadWriteConnection(null); assertNotSame(conn1, conn2); conn2.queryForLong(pingStatement); pooled.releaseConnection(conn2); } finally { pooled.close(); } }
@Test(expected = SQLException.class) public void testTestConnectionThatWasClosed() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL); String pingStatement = pooled.getDatabaseType().getPingStatement(); try { DatabaseConnection conn1 = pooled.getReadWriteConnection(null); conn1.queryForLong(pingStatement); pooled.releaseConnection(conn1); // close it behind the pool's back, bad dog conn1.close(); DatabaseConnection conn2 = pooled.getReadWriteConnection(null); assertSame(conn1, conn2); conn2.queryForLong(pingStatement); } finally { pooled.close(); } }
@Test public void testMaxFree() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL); try { pooled.setMaxConnectionsFree(2); DatabaseConnection conn1 = pooled.getReadWriteConnection(null); DatabaseConnection conn2 = pooled.getReadWriteConnection(null); DatabaseConnection conn3 = pooled.getReadWriteConnection(null); pooled.releaseConnection(conn1); pooled.releaseConnection(conn2); pooled.releaseConnection(conn3); DatabaseConnection conn4 = pooled.getReadWriteConnection(null); // not conn1 which should be closed assertSame(conn2, conn4); } finally { pooled.close(); } }
@Test public void testConnectionRollback() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL); Dao<Foo, Integer> dao = null; DatabaseConnection conn = null; try { TableUtils.createTable(pooled, Foo.class); dao = DaoManager.createDao(pooled, Foo.class); conn = dao.startThreadConnection(); dao.setAutoCommit(conn, false); Foo foo = new Foo(); assertEquals(1, dao.create(foo)); assertNotNull(dao.queryForId(foo.id)); dao.endThreadConnection(conn); assertNull(dao.queryForId(foo.id)); } finally { TableUtils.dropTable(pooled, Foo.class, true); if (dao != null) { dao.endThreadConnection(conn); } pooled.close(); } }
@Test public void testTestClosedConnectionWithTesting() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL); String pingStatement = pooled.getDatabaseType().getPingStatement(); pooled.setTestBeforeGet(true); try { DatabaseConnection conn1 = pooled.getReadWriteConnection(null); conn1.queryForLong(pingStatement); pooled.releaseConnection(conn1); // close it behind the pool's back, bad dog conn1.close(); DatabaseConnection conn2 = pooled.getReadWriteConnection(null); assertNotSame(conn1, conn2); conn2.queryForLong(pingStatement); pooled.releaseConnection(conn2); DatabaseConnection conn3 = pooled.getReadWriteConnection(null); assertSame(conn2, conn3); conn3.queryForLong(pingStatement); pooled.releaseConnection(conn3); } finally { pooled.close(); } }
@Test public void testBasic() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL); try { DatabaseConnection conn1 = pooled.getReadOnlyConnection(null); DatabaseConnection conn2 = pooled.getReadWriteConnection(null); assertNotSame(conn1, conn2); pooled.releaseConnection(conn2); DatabaseConnection conn3 = pooled.getReadWriteConnection(null); assertNotSame(conn1, conn3); assertSame(conn2, conn3); DatabaseConnection conn4 = pooled.getReadWriteConnection(null); assertNotSame(conn1, conn4); assertNotSame(conn3, conn4); pooled.releaseConnection(conn1); pooled.releaseConnection(conn3); DatabaseConnection conn5 = pooled.getReadOnlyConnection(null); assertSame(conn1, conn5); DatabaseConnection conn6 = pooled.getReadOnlyConnection(null); assertSame(conn3, conn6); conn1.close(); conn2.close(); conn3.close(); conn4.close(); conn5.close(); conn6.close(); } finally { pooled.close(); } }
assertEquals(2, pooled.getCurrentConnectionsManaged()); } finally { pooled.close();