fix init check for mysql

This commit is contained in:
sandzhang
2012-08-24 12:22:21 +08:00
parent 5def831116
commit 43fa15f668
2 changed files with 56 additions and 2 deletions
@@ -526,8 +526,8 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat
this.getConnectProperties().setProperty("oracle.jdbc.FreeMemoryOnEnterImplicitCache", "true");
}
} else if (JdbcUtils.MYSQL.equals(this.dbType)) {
if (LOG.isWarnEnabled()) {
LOG.warn("Your dbType is mysql, recommend set testWhileIdle is true and validationQuery shoud not be null");
if (!this.isTestWhileIdle()) {
if (LOG.isWarnEnabled()) LOG.warn("Your dbType is mysql, recommend set testWhileIdle is true");
}
}
}
@@ -0,0 +1,54 @@
package com.alibaba.druid.bvt.pool;
import java.lang.reflect.Field;
import junit.framework.Assert;
import junit.framework.TestCase;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.logging.Log;
public class ConfigErrorTestMysql extends TestCase {
private DruidDataSource dataSource;
protected void setUp() throws Exception {
dataSource = new DruidDataSource();
dataSource.setUrl("jdbc:mysql:xxx");
dataSource.setTestOnBorrow(false);
dataSource.setInitialSize(0);
}
protected void tearDown() throws Exception {
dataSource.close();
}
public void test_success() throws Exception {
dataSource.setTestWhileIdle(true);
Field field = DruidDataSource.class.getDeclaredField("LOG");
dataSource.setValidationQuery("select 1");
field.setAccessible(true);
Log LOG = (Log) field.get(null);
LOG.resetStat();
Assert.assertEquals(0, LOG.getWarnCount());
dataSource.init();
Assert.assertEquals(0, LOG.getWarnCount());
}
public void test_warn() throws Exception {
dataSource.setTestWhileIdle(false);
Field field = DruidDataSource.class.getDeclaredField("LOG");
field.setAccessible(true);
Log LOG = (Log) field.get(null);
LOG.resetStat();
Assert.assertEquals(0, LOG.getWarnCount());
dataSource.init();
Assert.assertEquals(1, LOG.getWarnCount());
}
}