Testing Connection Request Boundaries in HikariCP
This test suite validates the request boundary functionality in HikariCP connection pooling. It ensures proper handling of connection lifecycle events when request boundaries are enabled or disabled, which is crucial for connection pool management and resource optimization.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
brettwooldridge/hikaricp
src/test/java/com/zaxxer/hikari/pool/RequestBoundariesTest.java
package com.zaxxer.hikari.pool;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import com.zaxxer.hikari.mocks.StubConnection;
import org.junit.Assert;
import org.junit.Test;
import java.sql.Connection;
import static com.zaxxer.hikari.pool.TestElf.getPool;
import static com.zaxxer.hikari.pool.TestElf.newHikariConfig;
public class RequestBoundariesTest {
private static final HikariConfig config;
static {
config = newHikariConfig();
config.setMinimumIdle(0);
config.setMaximumPoolSize(10);
config.setInitializationFailTimeout(Long.MAX_VALUE);
config.setConnectionTestQuery("VALUES 1");
config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource");
}
private HikariPool getHikariPool(boolean enableRequestBoundaries) {
System.setProperty("com.zaxxer.hikari.enableRequestBoundaries", String.valueOf(enableRequestBoundaries));
HikariDataSource ds = new HikariDataSource(config);
HikariPool pool = getPool(ds);
return pool;
}
@Test
public void requestBoundaryEnabledTest() throws Exception {
HikariPool pool = getHikariPool(true);
Connection conn = pool.getConnection();
StubConnection stubConnection = conn.unwrap(StubConnection.class);
Assert.assertTrue("Begin request called", stubConnection.beginRequestCalled);
Assert.assertFalse("End request called", stubConnection.endRequestCalled);
conn.close();
Assert.assertTrue("Begin request called", stubConnection.beginRequestCalled);
Assert.assertTrue("End request called", stubConnection.endRequestCalled);
}
@Test
public void requestBoundaryDisabledTest() throws Exception {
HikariPool pool = getHikariPool(false);
Connection conn = pool.getConnection();
StubConnection stubConnection = conn.unwrap(StubConnection.class);
Assert.assertFalse("Begin request called", stubConnection.beginRequestCalled);
Assert.assertFalse("End request called", stubConnection.endRequestCalled);
conn.close();
Assert.assertFalse("Begin request called", stubConnection.beginRequestCalled);
Assert.assertFalse("End request called", stubConnection.endRequestCalled);
}
}