package com.vladmihalcea.flexypool;
import com.jolbox.bonecp.BoneCPDataSource;
import com.vladmihalcea.flexypool.adaptor.BoneCPPoolAdapter;
import com.vladmihalcea.flexypool.metric.Metrics;
import com.vladmihalcea.flexypool.common.ConfigurationProperties;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.sql.Connection;
import java.util.List;
import static org.junit.Assert.*;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.when;
/**
* BoneCPIntegrationTest - BoneCPDataSource Integration Test
*
* @author Vlad Mihalcea
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:spring/applicationContext-test.xml")
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
public class BoneCPIntegrationTest extends AbstractPoolAdapterIntegrationTest {
@Autowired
private BoneCPDataSource poolingDataSource;
@Override
protected void verifyLeasedConnections(List<Connection> leasedConnections) {
assertEquals(3, leasedConnections.size());
}
@Test
public void testMaxPollSize() {
ConfigurationProperties configurationProperties = Mockito.mock(ConfigurationProperties.class);
Metrics metrics = Mockito.mock(Metrics.class);
when(configurationProperties.getMetrics()).thenReturn(metrics);
when(configurationProperties.getTargetDataSource()).thenReturn(poolingDataSource);
when(metrics.timer(anyString())).thenReturn(null);
@SuppressWarnings("unchecked")
BoneCPPoolAdapter poolAdapter = new BoneCPPoolAdapter(configurationProperties);
assertSame(3, poolAdapter.getMaxPoolSize());
try {
poolAdapter.setMaxPoolSize(12);
fail("Should throw UnsupportedOperationException");
} catch (UnsupportedOperationException expected) {
}
}
}