package org.resthub.jpa;
import com.jolbox.bonecp.BoneCPConfig;
import com.jolbox.bonecp.BoneCPTestDataSource;
import org.fest.assertions.api.Assertions;
import org.resthub.jpa.pool.BoneCPDataSourceTestFactory;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.testng.annotations.Test;
import javax.inject.Inject;
import javax.inject.Named;
@ContextConfiguration(locations = {"classpath:boneCPContext.xml", "classpath:bonecp-test-context.xml"})
@ActiveProfiles({"resthub-jpa", "resthub-pool-bonecp"})
public class BoneCPDataSourceFactoryIntegrationTest extends AbstractTestNGSpringContextTests {
@Inject
@Named("boneCPDataSourceFactory")
private BoneCPDataSourceTestFactory boneCPDataSourceTestFactory;
@Inject
@Named("dataSource")
private BoneCPTestDataSource boneCPTestDataSource;
@Test
public void testBoneCPDataSourceConfigResthub() {
Assertions.assertThat(this.boneCPTestDataSource).isNotNull();
Assertions.assertThat(this.boneCPTestDataSource.getDriverClass()).isNotNull().isEqualTo("org.h2.Driver");
Assertions.assertThat(this.boneCPTestDataSource.getConfig()).isNotNull();
// check Resthub default values
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getConnectionTestStatement()).isEqualTo("/* ping*/ SELECT 1");
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getPoolName()).isEqualTo("ResthubDBPool");
Assertions.assertThat(this.boneCPTestDataSource.getJdbcUrl()).isNotNull().isEqualTo("jdbc:h2:mem:resthub;DB_CLOSE_DELAY=-1;MVCC=TRUE");
Assertions.assertThat(this.boneCPTestDataSource.getUser()).isNotNull().isEqualTo("sa");
Assertions.assertThat(this.boneCPTestDataSource.getPassword()).isNotNull().isEqualTo("");
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getMinConnectionsPerPartition()).isEqualTo(2);
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getMaxConnectionsPerPartition()).isEqualTo(4);
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getPartitionCount()).isEqualTo(3);
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getIdleConnectionTestPeriodInMinutes()).isEqualTo(1);
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getStatementsCacheSize()).isEqualTo(100);
// check that properties provided in database.properties are resolved
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getMaxConnectionAgeInSeconds()).isEqualTo(200000);
// check that BoneCP defaults are kept
BoneCPConfig expectedDefaults = new BoneCPConfig();
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getAcquireRetryAttempts()).isEqualTo(expectedDefaults.getAcquireRetryAttempts());
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getAcquireRetryDelayInMs()).isEqualTo(expectedDefaults.getAcquireRetryDelayInMs());
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getCloseConnectionWatchTimeoutInMs()).isEqualTo(expectedDefaults.getCloseConnectionWatchTimeoutInMs());
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getConnectionTimeoutInMs()).isEqualTo(expectedDefaults.getConnectionTimeoutInMs());
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getConnectionHookClassName()).isEqualTo(expectedDefaults.getConnectionHookClassName());
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getDefaultAutoCommit()).isEqualTo(expectedDefaults.getDefaultAutoCommit());
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getDefaultCatalog()).isEqualTo(expectedDefaults.getDefaultCatalog());
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getDefaultReadOnly()).isEqualTo(expectedDefaults.getDefaultReadOnly());
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getDefaultTransactionIsolation()).isEqualTo(expectedDefaults.getDefaultTransactionIsolation());
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getIdleMaxAgeInMinutes()).isEqualTo(expectedDefaults.getIdleMaxAgeInMinutes());
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getInitSQL()).isEqualTo(expectedDefaults.getInitSQL());
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getPoolAvailabilityThreshold()).isEqualTo(expectedDefaults.getPoolAvailabilityThreshold());
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getPoolStrategy()).isEqualTo(expectedDefaults.getPoolStrategy());
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getQueryExecuteTimeLimitInMs()).isEqualTo(expectedDefaults.getQueryExecuteTimeLimitInMs());
Assertions.assertThat(this.boneCPTestDataSource.getConfig().getServiceOrder()).isEqualTo(expectedDefaults.getServiceOrder());
}
}