Fix all unit tests to cleanly shutdown the pool when they finish.

pull/84/head
Brett Wooldridge 11 years ago
parent 227cbffc11
commit c88a1d67e1

@ -90,15 +90,6 @@ public class ExceptionTest
@Test
public void testUseAfterClose() throws SQLException
{
HikariConfig config = new HikariConfig();
config.setMinimumIdle(1);
config.setMaximumPoolSize(2);
config.setInitializationFailFast(true);
config.setConnectionTestQuery("VALUES 1");
config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource");
HikariDataSource ds = new HikariDataSource(config);
Assert.assertSame("Totals connections not as expected", 1, TestElf.getPool(ds).getTotalConnections());
Assert.assertSame("Idle connections not as expected", 1, TestElf.getPool(ds).getIdleConnections());

@ -18,14 +18,22 @@ package com.zaxxer.hikari;
import java.sql.Connection;
import java.sql.SQLException;
import org.junit.After;
import org.junit.Assert;
import org.junit.Test;
import com.zaxxer.hikari.util.DriverDataSource;
public class JdbcDriverTest
{
private HikariDataSource ds;
@After
public void teardown()
{
ds.shutdown();
}
@Test
public void driverTest1() throws SQLException
{
@ -38,7 +46,7 @@ public class JdbcDriverTest
config.addDataSourceProperty("user", "bart");
config.addDataSourceProperty("password", "simpson");
HikariDataSource ds = new HikariDataSource(config);
ds = new HikariDataSource(config);
Assert.assertTrue(ds.isWrapperFor(DriverDataSource.class));
@ -47,6 +55,5 @@ public class JdbcDriverTest
Connection connection = ds.getConnection();
connection.close();
ds.shutdown();
}
}

@ -16,8 +16,6 @@
package com.zaxxer.hikari;
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadMXBean;
import java.sql.SQLException;
import java.util.concurrent.TimeUnit;
@ -173,18 +171,25 @@ public class ShutdownTest
ds.shutdown();
long start = System.currentTimeMillis();
while (PoolUtilities.elapsedTimeMs(start) < TimeUnit.SECONDS.toMillis(5) && threadCount() > threadCountStart)
while (PoolUtilities.elapsedTimeMs(start) < TimeUnit.SECONDS.toMillis(5) && threadCount() > 0)
{
PoolUtilities.quietlySleep(250);
}
Assert.assertSame("Thread was leaked", threadCountStart, threadCount());
Assert.assertSame("Thread was leaked", 0, threadCount());
}
private int threadCount()
{
ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
return threadMXBean.getThreadCount();
Thread[] threads = new Thread[Thread.activeCount() * 2];
Thread.enumerate(threads);
int count = 0;
for (Thread thread : threads)
{
count += (thread != null && thread.getName().startsWith("Hikari")) ? 1 : 0;
}
return count;
}
}

@ -4,13 +4,17 @@ import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class StatementTest
{
@Test
public void testStatementClose() throws SQLException
private HikariDataSource ds;
@Before
public void setup()
{
HikariConfig config = new HikariConfig();
config.setMinimumIdle(1);
@ -19,8 +23,18 @@ public class StatementTest
config.setConnectionTestQuery("VALUES 1");
config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource");
HikariDataSource ds = new HikariDataSource(config);
ds = new HikariDataSource(config);
}
@After
public void teardown()
{
ds.shutdown();
}
@Test
public void testStatementClose() throws SQLException
{
Assert.assertSame("Totals connections not as expected", 1, TestElf.getPool(ds).getTotalConnections());
Assert.assertSame("Idle connections not as expected", 1, TestElf.getPool(ds).getIdleConnections());
@ -41,14 +55,6 @@ public class StatementTest
@Test
public void testAutoStatementClose() throws SQLException
{
HikariConfig config = new HikariConfig();
config.setMinimumIdle(1);
config.setMaximumPoolSize(2);
config.setInitializationFailFast(true);
config.setConnectionTestQuery("VALUES 1");
config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource");
HikariDataSource ds = new HikariDataSource(config);
Connection connection = ds.getConnection();
Assert.assertNotNull(connection);
@ -66,14 +72,6 @@ public class StatementTest
@Test
public void testDoubleStatementClose() throws SQLException
{
HikariConfig config = new HikariConfig();
config.setMinimumIdle(1);
config.setMaximumPoolSize(2);
config.setInitializationFailFast(true);
config.setConnectionTestQuery("VALUES 1");
config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource");
HikariDataSource ds = new HikariDataSource(config);
Connection connection = ds.getConnection();
Statement statement1 = connection.createStatement();
@ -87,14 +85,6 @@ public class StatementTest
@Test
public void testOutOfOrderStatementClose() throws SQLException
{
HikariConfig config = new HikariConfig();
config.setMinimumIdle(1);
config.setMaximumPoolSize(2);
config.setInitializationFailFast(true);
config.setConnectionTestQuery("VALUES 1");
config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource");
HikariDataSource ds = new HikariDataSource(config);
Connection connection = ds.getConnection();
Statement statement1 = connection.createStatement();

@ -243,28 +243,35 @@ public class TestConnectionTimeoutRetry
HikariDataSource ds = new HikariDataSource(config);
Connection connection1 = ds.getConnection();
Connection connection2 = ds.getConnection();
Connection connection3 = ds.getConnection();
Connection connection4 = ds.getConnection();
Connection connection5 = ds.getConnection();
Connection connection6 = ds.getConnection();
Connection connection7 = ds.getConnection();
Thread.sleep(1000);
Assert.assertSame("Totals connections not as expected", 10, TestElf.getPool(ds).getTotalConnections());
Assert.assertSame("Idle connections not as expected", 3, TestElf.getPool(ds).getIdleConnections());
connection1.close();
connection2.close();
connection3.close();
connection4.close();
connection5.close();
connection6.close();
connection7.close();
Assert.assertSame("Totals connections not as expected", 10, TestElf.getPool(ds).getTotalConnections());
Assert.assertSame("Idle connections not as expected", 10, TestElf.getPool(ds).getIdleConnections());
try
{
Connection connection1 = ds.getConnection();
Connection connection2 = ds.getConnection();
Connection connection3 = ds.getConnection();
Connection connection4 = ds.getConnection();
Connection connection5 = ds.getConnection();
Connection connection6 = ds.getConnection();
Connection connection7 = ds.getConnection();
Thread.sleep(1000);
Assert.assertSame("Totals connections not as expected", 10, TestElf.getPool(ds).getTotalConnections());
Assert.assertSame("Idle connections not as expected", 3, TestElf.getPool(ds).getIdleConnections());
connection1.close();
connection2.close();
connection3.close();
connection4.close();
connection5.close();
connection6.close();
connection7.close();
Assert.assertSame("Totals connections not as expected", 10, TestElf.getPool(ds).getTotalConnections());
Assert.assertSame("Idle connections not as expected", 10, TestElf.getPool(ds).getIdleConnections());
}
finally
{
ds.shutdown();
}
}
}

@ -282,38 +282,44 @@ public class TestConnections
StubConnection.count.set(0);
final HikariDataSource ds = new HikariDataSource(config);
Thread[] threads = new Thread[20];
for (int i = 0; i < threads.length; i++)
try
{
threads[i] = new Thread(new Runnable() {
public void run()
{
try
{
Connection connection = ds.getConnection();
Thread.sleep(1000);
connection.close();
}
catch (Exception e)
Thread[] threads = new Thread[20];
for (int i = 0; i < threads.length; i++)
{
threads[i] = new Thread(new Runnable() {
public void run()
{
// TODO Auto-generated catch block
e.printStackTrace();
try
{
Connection connection = ds.getConnection();
Thread.sleep(1000);
connection.close();
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
}
for (int i = 0; i < threads.length; i++)
{
threads[i].start();
});
}
for (int i = 0; i < threads.length; i++)
{
threads[i].start();
}
for (int i = 0; i < threads.length; i++)
{
threads[i].join();
}
Assert.assertEquals(4, StubConnection.count.get());
}
for (int i = 0; i < threads.length; i++)
finally
{
threads[i].join();
ds.shutdown();
}
Assert.assertEquals(4, StubConnection.count.get());
}
}

@ -25,7 +25,6 @@ import org.junit.Test;
import com.zaxxer.hikari.mocks.StubConnection;
/**
*
* @author Brett Wooldridge
*/
public class UnwrapTest
@ -42,12 +41,19 @@ public class UnwrapTest
HikariDataSource ds = new HikariDataSource(config);
Assert.assertSame("Idle connections not as expected", 1, TestElf.getPool(ds).getIdleConnections());
Connection connection = ds.getConnection();
Assert.assertNotNull(connection);
StubConnection unwrapped = connection.unwrap(StubConnection.class);
Assert.assertTrue("unwrapped connection is not instance of StubConnection: " + unwrapped, (unwrapped != null && unwrapped instanceof StubConnection));
try
{
Assert.assertSame("Idle connections not as expected", 1, TestElf.getPool(ds).getIdleConnections());
Connection connection = ds.getConnection();
Assert.assertNotNull(connection);
StubConnection unwrapped = connection.unwrap(StubConnection.class);
Assert.assertTrue("unwrapped connection is not instance of StubConnection: " + unwrapped, (unwrapped != null && unwrapped instanceof StubConnection));
}
finally
{
ds.shutdown();
}
}
}

Loading…
Cancel
Save