connectionPooledSource = new JdbcPooledConnectionSource(AppProperties.getInstance().getDbUrl(), AppProperties.getInstance().getDbUsername(), AppProperties.getInstance().getDbPassword()); connectionPooledSource.setMaxConnectionAgeMillis(McUtils.FIVE_MINUTES); connectionPooledSource.setCheckConnectionsEveryMillis(McUtils.THREE_MINUTES); connectionPooledSource.setMaxConnectionsFree(DB_MAX_FREE_CONNECTION); connectionPooledSource.setTestBeforeGet(true); _logger.debug("Database ConnectionSource loaded. Database Url:[{}]", AppProperties.getInstance() .getDbUrl()); "DatabaseConnectionPool Connections,Count[open:{},close:{}]," + "CurrentConnections[free:{},managed:{}]," + "MaxConnectionsEverUsed:{},TestLoopCount:{}", connectionPooledSource.getOpenCount(), connectionPooledSource.getCloseCount(), connectionPooledSource.getCurrentConnectionsFree(), connectionPooledSource.getCurrentConnectionsManaged(), connectionPooledSource.getMaxConnectionsEverUsed(), connectionPooledSource.getTestLoopCount()); return connectionPooledSource;
@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)); } }
public static void stop() { if (connectionPooledSource != null && connectionPooledSource.isOpen(null)) { try { connectionPooledSource.closeQuietly(); _logger.debug("Database service stopped."); DaoUtils.setIsDaoInitialized(false); } catch (Exception ioEx) { _logger.error("Unable to stop database service, ", ioEx); } } else { _logger.debug("Database service is not running."); } }
@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 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 public void testUsageCounts() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL); try { DatabaseConnection conn1 = pooled.getReadOnlyConnection(null); assertEquals(1, pooled.getOpenCount()); assertEquals(0, pooled.getCloseCount()); assertEquals(1, pooled.getMaxConnectionsEverUsed()); assertEquals(1, pooled.getCurrentConnectionsManaged()); assertEquals(1, pooled.getOpenCount()); assertEquals(0, pooled.getCloseCount()); assertEquals(1, pooled.getMaxConnectionsEverUsed()); assertEquals(1, pooled.getCurrentConnectionsManaged()); DatabaseConnection conn2 = pooled.getReadOnlyConnection(null); assertEquals(2, pooled.getOpenCount()); assertEquals(0, pooled.getCloseCount()); assertEquals(2, pooled.getMaxConnectionsEverUsed()); assertEquals(2, pooled.getCurrentConnectionsManaged()); pooled.releaseConnection(conn2); pooled.releaseConnection(conn1); assertEquals(2, pooled.getOpenCount()); assertEquals(0, pooled.getCloseCount()); assertEquals(2, pooled.getMaxConnectionsEverUsed()); assertEquals(2, pooled.getCurrentConnectionsManaged()); } finally { pooled.close(); assertEquals(2, pooled.getCloseCount()); assertEquals(2, pooled.getMaxConnectionsEverUsed()); assertEquals(0, pooled.getCurrentConnectionsManaged());
@Test public void testClosedConnction() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL); long checkEveryMillis = 250; pooled.setCheckConnectionsEveryMillis(checkEveryMillis); try { DatabaseConnection conn1 = pooled.getReadOnlyConnection(null); assertEquals(0, pooled.getReleaseCount()); assertEquals(0, pooled.getCurrentConnectionsFree()); pooled.releaseConnection(conn1); assertEquals(1, pooled.getReleaseCount()); assertEquals(1, pooled.getCurrentConnectionsFree()); DatabaseConnection conn2 = pooled.getReadOnlyConnection(null); pooled.releaseConnection(conn2); assertEquals(2, pooled.getReleaseCount()); assertEquals(1, pooled.getCurrentConnectionsFree()); DatabaseConnection conn3 = pooled.getReadOnlyConnection(null); assertEquals(0, pooled.getCurrentConnectionsFree()); assertTrue("loop counter is " + pooled.getTestLoopCount(), pooled.getTestLoopCount() < 100); pooled.close();
@Test public void testTransaction() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(DEFAULT_DATABASE_URL); try { DatabaseConnection conn1 = pooled.getReadOnlyConnection(null); DatabaseConnection conn2 = pooled.getReadWriteConnection(null); pooled.saveSpecialConnection(conn2); DatabaseConnection conn3 = pooled.getReadWriteConnection(null); assertSame(conn2, conn3); pooled.releaseConnection(conn3); pooled.releaseConnection(conn1); DatabaseConnection conn4 = pooled.getReadWriteConnection(null); assertSame(conn2, conn4); pooled.releaseConnection(conn4); pooled.clearSpecialConnection(conn2); DatabaseConnection conn5 = pooled.getReadWriteConnection(null); assertSame(conn1, conn5); conn1.close(); conn2.close(); conn3.close(); conn4.close(); conn5.close(); } 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 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 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 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 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(expected = SQLException.class) public void testSaveTransaction() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(); pooled.initialize(); try { pooled.saveSpecialConnection(null); } finally { IOUtils.closeQuietly(pooled); } }
@Test(expected = SQLException.class) public void testClearTransaction() throws SQLException { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(); pooled.initialize(); try { pooled.clearSpecialConnection(null); } finally { IOUtils.closeQuietly(pooled); } }
@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(expected = IOException.class) public void testCloseNoInit() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(); pooled.close(); }
@Test(expected = SQLException.class) public void testGetReadWriteNoInit() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(); try { pooled.getReadWriteConnection(null); } finally { IOUtils.closeQuietly(pooled); } }
@Test(expected = SQLException.class) public void testReleaseNoInit() throws Exception { JdbcPooledConnectionSource pooled = new JdbcPooledConnectionSource(); try { pooled.releaseConnection(null); } finally { IOUtils.closeQuietly(pooled); } }
@Override @Before public void before() throws Exception { if (connectionSource != null) { return; } super.before(); if (connectionSource != null) { connectionSource = new JdbcPooledConnectionSource(databaseUrl, userName, password); } }