use of com.zaxxer.hikari.HikariDataSource in project HikariCP by brettwooldridge.
the class BasicPoolTest method testIdleTimeout2.
@Test
public void testIdleTimeout2() throws InterruptedException, SQLException {
HikariConfig config = newHikariConfig();
config.setMaximumPoolSize(50);
config.setConnectionTestQuery("SELECT 1");
config.setDataSourceClassName("org.h2.jdbcx.JdbcDataSource");
config.addDataSourceProperty("url", "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1");
System.setProperty("com.zaxxer.hikari.housekeeping.periodMs", "1000");
try (HikariDataSource ds = new HikariDataSource(config)) {
System.clearProperty("com.zaxxer.hikari.housekeeping.periodMs");
SECONDS.sleep(1);
HikariPool pool = getPool(ds);
getUnsealedConfig(ds).setIdleTimeout(3000);
assertEquals("Total connections not as expected", 50, pool.getTotalConnections());
assertEquals("Idle connections not as expected", 50, pool.getIdleConnections());
try (Connection connection = ds.getConnection()) {
assertNotNull(connection);
MILLISECONDS.sleep(1500);
assertEquals("Second total connections not as expected", 50, pool.getTotalConnections());
assertEquals("Second idle connections not as expected", 49, pool.getIdleConnections());
}
assertEquals("Idle connections not as expected", 50, pool.getIdleConnections());
SECONDS.sleep(3);
assertEquals("Third total connections not as expected", 50, pool.getTotalConnections());
assertEquals("Third idle connections not as expected", 50, pool.getIdleConnections());
}
}
use of com.zaxxer.hikari.HikariDataSource in project HikariCP by brettwooldridge.
the class HikariCPCollectorTest method noConnectionWithoutPoolName.
@Test
public void noConnectionWithoutPoolName() throws Exception {
HikariConfig config = new HikariConfig();
config.setMinimumIdle(0);
config.setMetricsTrackerFactory(new PrometheusMetricsTrackerFactory());
config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource");
StubConnection.slowCreate = true;
try (HikariDataSource ds = new HikariDataSource(config)) {
String poolName = ds.getHikariConfigMXBean().getPoolName();
assertThat(getValue("hikaricp_active_connections", poolName), is(0.0));
assertThat(getValue("hikaricp_idle_connections", poolName), is(0.0));
assertThat(getValue("hikaricp_pending_threads", poolName), is(0.0));
assertThat(getValue("hikaricp_connections", poolName), is(0.0));
assertThat(getValue("hikaricp_max_connections", poolName), is(10.0));
assertThat(getValue("hikaricp_min_connections", poolName), is(0.0));
} finally {
StubConnection.slowCreate = false;
}
}
use of com.zaxxer.hikari.HikariDataSource in project HikariCP by brettwooldridge.
the class HikariCPCollectorTest method connection1.
@Test
public void connection1() throws Exception {
HikariConfig config = newHikariConfig();
config.setMetricsTrackerFactory(new PrometheusMetricsTrackerFactory());
config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource");
config.setMaximumPoolSize(1);
StubConnection.slowCreate = true;
try (HikariDataSource ds = new HikariDataSource(config);
Connection connection1 = ds.getConnection()) {
quietlySleep(1000);
assertThat(getValue("hikaricp_active_connections", "connection1"), is(1.0));
assertThat(getValue("hikaricp_idle_connections", "connection1"), is(0.0));
assertThat(getValue("hikaricp_pending_threads", "connection1"), is(0.0));
assertThat(getValue("hikaricp_connections", "connection1"), is(1.0));
assertThat(getValue("hikaricp_max_connections", "connection1"), is(1.0));
assertThat(getValue("hikaricp_min_connections", "connection1"), is(1.0));
} finally {
StubConnection.slowCreate = false;
}
}
use of com.zaxxer.hikari.HikariDataSource in project HikariCP by brettwooldridge.
the class PrometheusMetricsTrackerTest method checkSummaryMetricFamily.
private void checkSummaryMetricFamily(String metricName) {
HikariConfig config = newHikariConfig();
config.setMetricsTrackerFactory(new PrometheusMetricsTrackerFactory());
config.setJdbcUrl("jdbc:h2:mem:");
try (HikariDataSource ignored = new HikariDataSource(config)) {
Double count = collectorRegistry.getSampleValue(metricName + "_count", new String[] { POOL_LABEL_NAME }, new String[] { config.getPoolName() });
assertNotNull(count);
Double sum = collectorRegistry.getSampleValue(metricName + "_sum", new String[] { POOL_LABEL_NAME }, new String[] { config.getPoolName() });
assertNotNull(sum);
for (String quantileLabelValue : QUANTILE_LABEL_VALUES) {
Double quantileValue = collectorRegistry.getSampleValue(metricName, new String[] { POOL_LABEL_NAME, QUANTILE_LABEL_NAME }, new String[] { config.getPoolName(), quantileLabelValue });
assertNotNull("q = " + quantileLabelValue, quantileValue);
}
}
}
use of com.zaxxer.hikari.HikariDataSource in project HikariCP by brettwooldridge.
the class PrometheusMetricsTrackerTest method testMultiplePoolName.
@Test
public void testMultiplePoolName() throws Exception {
String[] labelNames = { POOL_LABEL_NAME };
HikariConfig config = newHikariConfig();
config.setMetricsTrackerFactory(new PrometheusMetricsTrackerFactory());
config.setPoolName("first");
config.setJdbcUrl("jdbc:h2:mem:");
config.setMaximumPoolSize(2);
config.setConnectionTimeout(250);
String[] labelValues1 = { config.getPoolName() };
try (HikariDataSource ignored = new HikariDataSource(config)) {
assertThat(collectorRegistry.getSampleValue("hikaricp_connection_timeout_total", labelNames, labelValues1), is(0.0));
HikariConfig config2 = newHikariConfig();
config2.setMetricsTrackerFactory(new PrometheusMetricsTrackerFactory());
config2.setPoolName("second");
config2.setJdbcUrl("jdbc:h2:mem:");
config2.setMaximumPoolSize(4);
config2.setConnectionTimeout(250);
String[] labelValues2 = { config2.getPoolName() };
try (HikariDataSource ignored2 = new HikariDataSource(config2)) {
assertThat(collectorRegistry.getSampleValue("hikaricp_connection_timeout_total", labelNames, labelValues2), is(0.0));
}
}
}
Aggregations