TestIsRunning.java

package com.zaxxer.hikari.pool;

import static com.zaxxer.hikari.pool.TestElf.getPool;
import static com.zaxxer.hikari.pool.TestElf.newHikariConfig;
import static com.zaxxer.hikari.pool.TestElf.newHikariDataSource;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;

import java.util.concurrent.TimeUnit;

import org.junit.Test;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

/**
 * Tests for {@link HikariDataSource#isRunning()}.
 */
public class TestIsRunning
{
    @Test
    public void testRunningNormally()
    {
        try (HikariDataSource ds = new HikariDataSource(basicConfig()))
        {
            assertTrue(ds.isRunning());
        }
    }


    @Test
    public void testNoPool()
    {
        try (HikariDataSource ds = newHikariDataSource())
        {
            assertNull("Pool should not be initialized.", getPool(ds));
            assertFalse(ds.isRunning());
        }
    }


    @Test
    public void testSuspendAndResume()
    {
        try (HikariDataSource ds = new HikariDataSource(basicConfig()))
        {
            ds.getHikariPoolMXBean().suspendPool();
            assertFalse(ds.isRunning());

            ds.getHikariPoolMXBean().resumePool();
            assertTrue(ds.isRunning());
        }
    }


    @Test
    public void testShutdown()
    {
        try (HikariDataSource ds = new HikariDataSource(basicConfig()))
        {
            ds.close();
            assertFalse(ds.isRunning());
        }
    }


    private HikariConfig basicConfig()
    {
        HikariConfig config = newHikariConfig();
        config.setMinimumIdle(1);
        config.setMaximumPoolSize(1);
        config.setConnectionTestQuery("VALUES 1");
        config.setConnectionInitSql("SELECT 1");
        config.setReadOnly(true);
        config.setConnectionTimeout(2500);
        config.setLeakDetectionThreshold(TimeUnit.SECONDS.toMillis(30));
        config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource");
        config.setAllowPoolSuspension(true);

        return config;
    }
}