package com.alibaba.druid.bvt.pool; import com.alibaba.druid.filter.FilterAdapter; import com.alibaba.druid.filter.FilterChain; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.proxy.jdbc.ConnectionProxy; import com.mysql.jdbc.Driver; import junit.framework.TestCase; import java.sql.SQLException; public class DruidConnectionHolderTest extends TestCase { Driver driver; private DruidDataSource dataSource; private Class exceptionClass; protected void setUp() throws Exception { driver = new Driver(); if (driver.getMajorVersion() == 5) { exceptionClass = Class.forName("com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException"); dataSource = new DruidDataSource(); dataSource.setUrl("jdbc:mock:xxx"); dataSource.setTestOnBorrow(false); dataSource.setInitialSize(1); dataSource.getProxyFilters().add(new FilterAdapter() { public int connection_getTransactionIsolation(FilterChain chain, ConnectionProxy connection) throws SQLException { throw createSyntaxException(); } }); } } protected SQLException createSyntaxException() { try { return (SQLException) exceptionClass.newInstance(); } catch (Exception e) { throw new IllegalStateException(); } } protected void tearDown() throws Exception { if (dataSource != null) { dataSource.close(); } } public void test_mysqlSyntaxError() throws Exception { if (driver.getMajorVersion() == 5) { dataSource.init(); dataSource.getConnection(); } } }