package com.alibaba.druid.bvt.pool;
import java.sql.Connection;
import java.util.concurrent.atomic.AtomicInteger;
import javax.sql.PooledConnection;
import junit.framework.TestCase;
import org.junit.Assert;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.ValidConnectionCheckerAdapter;
/**
* 这个场景测试defaultAutoCommit
*
* @author wenshao<szujobs@hotmail.com>
*/
public class DruidDataSourceTest_testOnBorrowFailed extends TestCase {
private DruidDataSource dataSource;
private AtomicInteger validCount = new AtomicInteger();
protected void setUp() throws Exception {
dataSource = new DruidDataSource();
dataSource.setUrl("jdbc:mock:xxx");
dataSource.setTestOnBorrow(true);
dataSource.setValidationQuery("select 'x'");
dataSource.setValidConnectionChecker(new ValidConnectionCheckerAdapter() {
@Override
public boolean isValidConnection(Connection c, String query, int validationQueryTimeout) {
int count = validCount.getAndIncrement();
if (count == 0) {
return true;
}
if (count == 1) {
return false;
}
return true;
}
});
}
protected void tearDown() throws Exception {
dataSource.close();
}
public void test_conn() throws Exception {
PooledConnection conn = dataSource.getPooledConnection();
conn.close();
Assert.assertEquals(1, dataSource.getPoolingCount());
Assert.assertEquals(2, dataSource.getCreateCount());
Assert.assertEquals(1, dataSource.getDiscardCount());
Assert.assertEquals(2, dataSource.getConnectCount());
Assert.assertEquals(1, dataSource.getCloseCount());
}
}