Add more connection pools for testing.

pull/1/head
Brett Wooldridge 11 years ago
parent bb33e1f4fe
commit a2485dfa26

@ -109,6 +109,18 @@
<version>3.18.1-GA</version>
<type>bundle</type>
</dependency>
<dependency>
<groupId>net.snaq</groupId>
<artifactId>dbpool</artifactId>
<version>5.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>

@ -10,8 +10,11 @@ import java.util.concurrent.TimeUnit;
import javax.sql.DataSource;
import snaq.db.DBPoolDataSource;
import com.jolbox.bonecp.BoneCPConfig;
import com.jolbox.bonecp.BoneCPDataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
@ -53,6 +56,16 @@ public class Benchmark1
benchmarks.ds = benchmarks.setupBone();
System.out.printf("Benchmarking BoneCP - %d threads, %d connections", THREADS, POOL_MAX);
}
else if (args[0].equals("dbpool"))
{
benchmarks.ds = benchmarks.setupDbPool();
System.out.printf("Benchmarking DbPool - %d threads, %d connections", THREADS, POOL_MAX);
}
else if (args[0].equals("c3p0"))
{
benchmarks.ds = benchmarks.setupC3P0();
System.out.printf("Benchmarking C3P0 - %d threads, %d connections", THREADS, POOL_MAX);
}
else
{
System.err.println("Start with one of: hikari, bone");
@ -80,49 +93,6 @@ public class Benchmark1
benchmarks.startSillyBench(THREADS);
}
private DataSource setupHikari()
{
HikariConfig config = new HikariConfig();
config.setAcquireIncrement(5);
config.setMinimumPoolSize(POOL_MAX / 2);
config.setMaximumPoolSize(POOL_MAX);
config.setConnectionTimeout(8000);
config.setIdleTimeout(TimeUnit.MINUTES.toMillis(30));
config.setJdbc4ConnectionTest(true);
config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource");
HikariDataSource ds = new HikariDataSource(config);
return ds;
}
private DataSource setupBone()
{
try
{
Class.forName("com.zaxxer.hikari.mocks.StubDriver");
}
catch (ClassNotFoundException e)
{
throw new RuntimeException(e);
}
BoneCPConfig config = new BoneCPConfig();
config.setAcquireIncrement(5);
config.setMinConnectionsPerPartition(POOL_MAX / 2);
config.setMaxConnectionsPerPartition(POOL_MAX);
config.setConnectionTimeoutInMs(8000);
config.setIdleMaxAgeInMinutes(30);
config.setConnectionTestStatement("VALUES 1");
config.setCloseOpenStatements(true);
config.setDisableConnectionTracking(true);
config.setJdbcUrl("jdbc:stub");
config.setUsername("nobody");
config.setPassword("nopass");
BoneCPDataSource ds = new BoneCPDataSource(config);
return ds;
}
private long startMixedBench(int threads, int iter)
{
CyclicBarrier barrier = new CyclicBarrier(threads);
@ -189,6 +159,86 @@ public class Benchmark1
return absoluteFinish - absoluteStart;
}
private DataSource setupHikari()
{
HikariConfig config = new HikariConfig();
config.setAcquireIncrement(5);
config.setMinimumPoolSize(POOL_MAX / 2);
config.setMaximumPoolSize(POOL_MAX);
config.setConnectionTimeout(8000);
config.setIdleTimeout(TimeUnit.MINUTES.toMillis(30));
config.setJdbc4ConnectionTest(true);
config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource");
HikariDataSource ds = new HikariDataSource(config);
return ds;
}
private DataSource setupBone()
{
try
{
Class.forName("com.zaxxer.hikari.mocks.StubDriver");
}
catch (ClassNotFoundException e)
{
throw new RuntimeException(e);
}
BoneCPConfig config = new BoneCPConfig();
config.setAcquireIncrement(5);
config.setMinConnectionsPerPartition(POOL_MAX / 2);
config.setMaxConnectionsPerPartition(POOL_MAX);
config.setConnectionTimeoutInMs(8000);
config.setIdleMaxAgeInMinutes(30);
config.setConnectionTestStatement("VALUES 1");
config.setCloseOpenStatements(true);
config.setDisableConnectionTracking(true);
config.setJdbcUrl("jdbc:stub");
config.setUsername("nobody");
config.setPassword("nopass");
BoneCPDataSource ds = new BoneCPDataSource(config);
return ds;
}
private DataSource setupDbPool()
{
DBPoolDataSource ds = new DBPoolDataSource();
ds.setDriverClassName("com.zaxxer.hikari.mocks.StubDriver");
ds.setUrl("jdbc:stub");
ds.setMinPool(POOL_MAX / 2);
ds.setMaxPool(POOL_MAX);
ds.setMaxSize(POOL_MAX);
ds.setIdleTimeout(180);
ds.setLoginTimeout(8);
ds.setValidationQuery("VALUES 1");
return ds;
}
private DataSource setupC3P0()
{
try
{
ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass( "com.zaxxer.hikari.mocks.StubDriver" );
cpds.setJdbcUrl( "jdbc:stub" );
cpds.setMinPoolSize(POOL_MAX / 2);
cpds.setMaxPoolSize(POOL_MAX);
cpds.setCheckoutTimeout(8000);
cpds.setLoginTimeout(8);
cpds.setTestConnectionOnCheckout(true);
cpds.setPreferredTestQuery("VALUES 1");
return cpds;
}
catch (Exception e)
{
throw new RuntimeException(e);
}
}
private class MixedRunner implements Measurable
{
private CyclicBarrier barrier;

Loading…
Cancel
Save