From 439e917f8f05a393ae81bb3423f6b48ab6c48668 Mon Sep 17 00:00:00 2001 From: wenshao Date: Fri, 16 Sep 2011 16:22:06 +0000 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84mock=E5=92=8C=E6=B5=8B?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://code.alibabatech.com/svn/druid/trunk@825 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- .../druid/pool/DruidAbstractDataSource.java | 19 ++- .../bvt/pool/basic/TestDataSourceBasic2.java | 119 ++++++++++++++++++ 2 files changed, 132 insertions(+), 6 deletions(-) create mode 100644 src/test/java/com/alibaba/druid/bvt/pool/basic/TestDataSourceBasic2.java diff --git a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java index 6428a12bb4..c02ec56505 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java @@ -190,11 +190,11 @@ public abstract class DruidAbstractDataSource extends WrapperAdapter implements public void incrementRollbackCount() { rollbackCount.incrementAndGet(); } - + public long getStartTransactionCount() { return startTransactionCount.get(); } - + public void incrementStartTransactionCount() { startTransactionCount.incrementAndGet(); } @@ -249,7 +249,10 @@ public abstract class DruidAbstractDataSource extends WrapperAdapter implements public void setValidConnectionCheckerClassName(String validConnectionCheckerClass) throws Exception { Class clazz = DruidLoaderUtils.loadClass(validConnectionCheckerClass); - ValidConnectionChecker validConnectionChecker = (ValidConnectionChecker) clazz.newInstance(); + ValidConnectionChecker validConnectionChecker = null; + if (clazz != null) { + validConnectionChecker = (ValidConnectionChecker) clazz.newInstance(); + } this.validConnectionChecker = validConnectionChecker; } @@ -467,9 +470,13 @@ public abstract class DruidAbstractDataSource extends WrapperAdapter implements this.passwordCallback = passwordCallback; } - public void setPasswordCallback(String passwordCallbackClassName) throws Exception { - Class clazz = Thread.currentThread().getContextClassLoader().loadClass(passwordCallbackClassName); - this.passwordCallback = (PasswordCallback) clazz.newInstance(); + public void setPasswordCallbackClassName(String passwordCallbackClassName) throws Exception { + Class clazz = DruidLoaderUtils.loadClass(passwordCallbackClassName); + if (clazz != null) { + this.passwordCallback = (PasswordCallback) clazz.newInstance(); + } else { + this.passwordCallback = null; + } } public NameCallback getUserCallback() { diff --git a/src/test/java/com/alibaba/druid/bvt/pool/basic/TestDataSourceBasic2.java b/src/test/java/com/alibaba/druid/bvt/pool/basic/TestDataSourceBasic2.java new file mode 100644 index 0000000000..ab933ff1d4 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/pool/basic/TestDataSourceBasic2.java @@ -0,0 +1,119 @@ +package com.alibaba.druid.bvt.pool.basic; + +import java.util.Arrays; +import java.util.Properties; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.pool.ExceptionSorter; +import com.alibaba.druid.stat.DruidDataSourceStatManager; + +public class TestDataSourceBasic2 extends TestCase { + + public void test_0() throws Exception { + Assert.assertEquals(0, DruidDataSourceStatManager.getInstance().getDataSourceList().size()); + + DruidDataSource dataSource = new DruidDataSource(); + dataSource.setUrl("jdbc:mock:xxx"); + + + dataSource.setBreakAfterAcquireFailure(true); + Assert.assertEquals(true, dataSource.isBreakAfterAcquireFailure()); + + dataSource.setConnectionErrorRetryAttempts(234); + Assert.assertEquals(234, dataSource.getConnectionErrorRetryAttempts()); + + dataSource.setMaxPoolPreparedStatementPerConnectionSize(234); + Assert.assertEquals(234, dataSource.getMaxPoolPreparedStatementPerConnectionSize()); + + dataSource.incrementDupCloseCount(); + Assert.assertEquals(1, dataSource.getDupCloseCount()); + + dataSource.setValidConnectionChecker(null); + dataSource.setValidConnectionCheckerClassName(null); + Assert.assertEquals(null, dataSource.getValidConnectionChecker()); + + dataSource.addConnectionProperty("user", "ljw"); + Assert.assertEquals(1, dataSource.getConnectProperties().size()); + + Assert.assertEquals(0, dataSource.getConnectionInitSqls().size()); + dataSource.setConnectionInitSqls(Arrays.asList("SELECT 1", null, "")); + Assert.assertEquals(1, dataSource.getConnectionInitSqls().size()); + + Assert.assertEquals(30 * 1000, dataSource.getTimeBetweenConnectErrorMillis()); + Assert.assertEquals(-1, dataSource.getMaxOpenPreparedStatements()); + Assert.assertEquals(300, dataSource.getRemoveAbandonedTimeout()); + dataSource.setRemoveAbandonedTimeout(400); + Assert.assertEquals(400, dataSource.getRemoveAbandonedTimeout()); + Assert.assertEquals(400 * 1000, dataSource.getRemoveAbandonedTimeoutMillis()); + Assert.assertEquals(3, dataSource.getNumTestsPerEvictionRun()); + dataSource.setNumTestsPerEvictionRun(4); + Assert.assertEquals(4, dataSource.getNumTestsPerEvictionRun()); + + dataSource.setMaxWaitThreadCount(4); + Assert.assertEquals(4, dataSource.getMaxWaitThreadCount()); + + dataSource.setValidationQueryTimeout(4); + Assert.assertEquals(4, dataSource.getValidationQueryTimeout()); + + dataSource.setAccessToUnderlyingConnectionAllowed(true); + Assert.assertEquals(true, dataSource.isAccessToUnderlyingConnectionAllowed()); + + dataSource.setDefaultReadOnly(true); + Assert.assertEquals(Boolean.TRUE, dataSource.getDefaultReadOnly()); + + dataSource.setDefaultTransactionIsolation(10); + Assert.assertEquals(Integer.valueOf(10), dataSource.getDefaultTransactionIsolation()); + + + dataSource.setDefaultCatalog("xxx"); + Assert.assertEquals("xxx", dataSource.getDefaultCatalog()); + + dataSource.setPasswordCallbackClassName(null); + dataSource.setUserCallback(null); + + Assert.assertEquals(0, dataSource.getQueryTimeout()); + dataSource.setQueryTimeout(10001); + Assert.assertEquals(10001, dataSource.getQueryTimeout()); + + Assert.assertEquals(-1, dataSource.getMaxWait()); + dataSource.setMaxWait(10001); + Assert.assertEquals(10001, dataSource.getMaxWait()); + + Assert.assertEquals(8, dataSource.getMaxIdle()); + dataSource.setMaxIdle(3); + Assert.assertEquals(3, dataSource.getMaxIdle()); + + Assert.assertEquals(0, dataSource.getLoginTimeout()); + dataSource.setLoginTimeout(30); + Assert.assertEquals(30, dataSource.getLoginTimeout()); + + + Assert.assertEquals(null, dataSource.getUsername()); + dataSource.setUsername("ljw"); + Assert.assertEquals("ljw", dataSource.getUsername()); + + + Assert.assertEquals(null, dataSource.getPassword()); + dataSource.setPassword("xxx"); + Assert.assertEquals("xxx", dataSource.getPassword()); + + dataSource.setConnectProperties(new Properties()); + Assert.assertEquals(0, dataSource.getConnectProperties().size()); + dataSource.setConnectionProperties("a=1;b=2;c"); + Assert.assertEquals(3, dataSource.getConnectProperties().size()); + + dataSource.setExceptionSoter((ExceptionSorter) null); + + dataSource.close(); + } + + protected void tearDown() throws Exception { + for (DruidDataSource dataSource : DruidDataSourceStatManager.getDruidDataSourceInstances()) { + dataSource.close(); + } + } + +}