Search in sources :

Example 46 with HikariDataSource

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());
    }
}
Also used : HikariDataSource(com.zaxxer.hikari.HikariDataSource) HikariPool(com.zaxxer.hikari.pool.HikariPool) Connection(java.sql.Connection) HikariConfig(com.zaxxer.hikari.HikariConfig) TestElf.newHikariConfig(com.zaxxer.hikari.pool.TestElf.newHikariConfig) Test(org.junit.Test)

Example 47 with HikariDataSource

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;
    }
}
Also used : HikariDataSource(com.zaxxer.hikari.HikariDataSource) HikariConfig(com.zaxxer.hikari.HikariConfig) TestElf.newHikariConfig(com.zaxxer.hikari.pool.TestElf.newHikariConfig) Test(org.junit.Test)

Example 48 with HikariDataSource

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;
    }
}
Also used : HikariDataSource(com.zaxxer.hikari.HikariDataSource) Connection(java.sql.Connection) StubConnection(com.zaxxer.hikari.mocks.StubConnection) HikariConfig(com.zaxxer.hikari.HikariConfig) TestElf.newHikariConfig(com.zaxxer.hikari.pool.TestElf.newHikariConfig) Test(org.junit.Test)

Example 49 with HikariDataSource

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);
        }
    }
}
Also used : HikariDataSource(com.zaxxer.hikari.HikariDataSource) HikariConfig(com.zaxxer.hikari.HikariConfig) TestElf.newHikariConfig(com.zaxxer.hikari.pool.TestElf.newHikariConfig)

Example 50 with HikariDataSource

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));
        }
    }
}
Also used : HikariDataSource(com.zaxxer.hikari.HikariDataSource) HikariConfig(com.zaxxer.hikari.HikariConfig) TestElf.newHikariConfig(com.zaxxer.hikari.pool.TestElf.newHikariConfig) Test(org.junit.Test)

Aggregations

HikariDataSource (com.zaxxer.hikari.HikariDataSource)185 HikariConfig (com.zaxxer.hikari.HikariConfig)109 Test (org.junit.Test)106 Connection (java.sql.Connection)61 TestElf.newHikariConfig (com.zaxxer.hikari.pool.TestElf.newHikariConfig)57 SQLException (java.sql.SQLException)33 StubConnection (com.zaxxer.hikari.mocks.StubConnection)30 TestElf.newHikariDataSource (com.zaxxer.hikari.pool.TestElf.newHikariDataSource)18 StubDataSource (com.zaxxer.hikari.mocks.StubDataSource)11 MetricRegistry (com.codahale.metrics.MetricRegistry)9 DataSource (javax.sql.DataSource)8 Statement (java.sql.Statement)7 ArrayList (java.util.ArrayList)7 FacesMessage (javax.faces.application.FacesMessage)7 BoneCPDataSource (com.jolbox.bonecp.BoneCPDataSource)6 PoolInitializationException (com.zaxxer.hikari.pool.HikariPool.PoolInitializationException)6 Properties (java.util.Properties)6 ConnexionTest (connexion.ConnexionTest)5 File (java.io.File)5 FileInputStream (java.io.FileInputStream)5