diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 4e2aa98a03..6dd6563ce8 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -430,6 +430,10 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat exceptionSorter.configFromProperties(properties); } + if (validConnectionChecker != null) { + validConnectionChecker.configFromProperties(properties); + } + if (statLogger != null) { statLogger.configFromProperties(properties); } diff --git a/src/test/java/com/alibaba/druid/bvt/pool/vendor/MySQLValidConnectionCheckerTest.java b/src/test/java/com/alibaba/druid/bvt/pool/vendor/MySQLValidConnectionCheckerTest.java new file mode 100644 index 0000000000..dd9b21d280 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/pool/vendor/MySQLValidConnectionCheckerTest.java @@ -0,0 +1,51 @@ +package com.alibaba.druid.bvt.pool.vendor; + +import java.sql.Connection; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.pool.vendor.MySqlValidConnectionChecker; + +public class MySQLValidConnectionCheckerTest extends TestCase { + + private DruidDataSource dataSource; + + protected void setUp() throws Exception { + System.setProperty("druid.mysql.usePingMethod", "false"); + + dataSource = new DruidDataSource(); + dataSource.setUrl("jdbc:mock:xxx"); + dataSource.setDbType("mysql"); + dataSource.setValidationQuery("select 1"); + dataSource.setValidConnectionChecker(new MySqlValidConnectionChecker()); + dataSource.setInitialSize(1); + dataSource.setTestOnBorrow(true); + } + + protected void tearDown() throws Exception { + dataSource.close(); + + System.clearProperty("druid.mysql.usePingMethod"); + } + + public void test_connect() throws Exception { + { + Connection conn = dataSource.getConnection(); + conn.close(); + } + + MySqlValidConnectionChecker checker = (MySqlValidConnectionChecker) dataSource.getValidConnectionChecker(); + Assert.assertFalse(checker.isUsePingMethod()); + + dataSource.setConnectionProperties("druid.mysql.usePingMethod=true"); + + Assert.assertTrue(checker.isUsePingMethod()); + + Connection conn = dataSource.getConnection(); + conn.close(); + } + +}