From dcfdf5449e8ae9418b016ff3cfe923eb4af19bac Mon Sep 17 00:00:00 2001 From: wenshao Date: Sat, 25 Aug 2012 07:58:45 +0800 Subject: [PATCH] add testcase & bug fixed --- .../druid/pool/DruidAbstractDataSource.java | 5 +- .../alibaba/druid/pool/DruidDataSource.java | 5 +- ...va => DruidDataSourceTest_autocommit.java} | 3 +- .../pool/DruidDataSourceTest_autocommit2.java | 52 ++++++++++++ .../pool/DruidDataSourceTest_autocommit3.java | 52 ++++++++++++ .../pool/DruidDataSourceTest_autocommit4.java | 52 ++++++++++++ ...ruidDataSourceTest_getPoolingPeakTime.java | 38 +++++++++ .../pool/DruidDataSourceTest_maxActive1.java | 40 +++++++++ ...va => DruidDataSourceTest_maxActive2.java} | 2 +- ...va => DruidDataSourceTest_maxActive3.java} | 5 +- .../pool/DruidDataSourceTest_maxActive4.java | 40 +++++++++ .../DruidDataSourceTest_notEmptyWait.java | 81 +++++++++++++++++++ .../bvt/pool/DruidDataSourceTest_oracle.java | 41 ++++++++++ .../bvt/pool/DruidDataSourceTest_oracle2.java | 44 ++++++++++ .../bvt/pool/DruidDataSourceTest_oracle3.java | 35 ++++++++ .../DruidDataSourceTest_oracle_error.java | 46 +++++++++++ 16 files changed, 532 insertions(+), 9 deletions(-) rename src/test/java/com/alibaba/druid/bvt/pool/{DruidDataSourceTest6.java => DruidDataSourceTest_autocommit.java} (93%) create mode 100644 src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_autocommit2.java create mode 100644 src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_autocommit3.java create mode 100644 src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_autocommit4.java create mode 100644 src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_getPoolingPeakTime.java create mode 100644 src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_maxActive1.java rename src/test/java/com/alibaba/druid/bvt/pool/{DruidDataSourceTest4.java => DruidDataSourceTest_maxActive2.java} (93%) rename src/test/java/com/alibaba/druid/bvt/pool/{DruidDataSourceTest5.java => DruidDataSourceTest_maxActive3.java} (86%) create mode 100644 src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_maxActive4.java create mode 100644 src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_notEmptyWait.java create mode 100644 src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_oracle.java create mode 100644 src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_oracle2.java create mode 100644 src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_oracle3.java create mode 100644 src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_oracle_error.java diff --git a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java index e01ccb7b86..501da678bd 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java @@ -1297,7 +1297,10 @@ public abstract class DruidAbstractDataSource extends WrapperAdapter implements } public void initPhysicalConnection(Connection conn) throws SQLException { - conn.setAutoCommit(isDefaultAutoCommit()); + if (conn.getAutoCommit() != defaultAutoCommit) { + conn.setAutoCommit(defaultAutoCommit); + } + if (getDefaultReadOnly() != null) { if (conn.isReadOnly() != getDefaultReadOnly()) { conn.setReadOnly(getDefaultReadOnly()); diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 3008cd6556..e9d7e799e4 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -347,7 +347,7 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat } if (getInitialSize() > maxActive) { - throw new IllegalArgumentException("illegal initialSize"); + throw new IllegalArgumentException("illegal initialSize " + this.initialSize + ", maxActieve " + maxActive); } if (this.driverClass != null) { @@ -402,9 +402,6 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat // 初始化连接 for (int i = 0, size = getInitialSize(); i < size; ++i) { Connection conn = createPhysicalConnection(); - if (defaultAutoCommit != conn.getAutoCommit()) { - conn.setAutoCommit(defaultAutoCommit); - } connections[poolingCount++] = new DruidConnectionHolder(this, conn); } diff --git a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest6.java b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_autocommit.java similarity index 93% rename from src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest6.java rename to src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_autocommit.java index 94442c24a9..303abf05c9 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest6.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_autocommit.java @@ -18,7 +18,7 @@ import com.alibaba.druid.proxy.jdbc.ConnectionProxy; * * @author wenshao */ -public class DruidDataSourceTest6 extends TestCase { +public class DruidDataSourceTest_autocommit extends TestCase { private DruidDataSource dataSource; @@ -27,6 +27,7 @@ public class DruidDataSourceTest6 extends TestCase { dataSource.setUrl("jdbc:mock:xxx"); dataSource.setTestOnBorrow(false); dataSource.setDefaultAutoCommit(true); + dataSource.setInitialSize(1); dataSource.getProxyFilters().add(new FilterAdapter() { public ConnectionProxy connection_connect(FilterChain chain, Properties info) throws SQLException { ConnectionProxy conn = chain.connection_connect(info); diff --git a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_autocommit2.java b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_autocommit2.java new file mode 100644 index 0000000000..0c0e0c1d2c --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_autocommit2.java @@ -0,0 +1,52 @@ +package com.alibaba.druid.bvt.pool; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Properties; + +import org.junit.Assert; + +import junit.framework.TestCase; + +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; + +/** + * 这个场景测试defaultAutoCommit + * + * @author wenshao + */ +public class DruidDataSourceTest_autocommit2 extends TestCase { + + private DruidDataSource dataSource; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + dataSource.setUrl("jdbc:mock:xxx"); + dataSource.setTestOnBorrow(false); + dataSource.setDefaultAutoCommit(false); + dataSource.setInitialSize(1); + dataSource.getProxyFilters().add(new FilterAdapter() { + public ConnectionProxy connection_connect(FilterChain chain, Properties info) throws SQLException { + ConnectionProxy conn = chain.connection_connect(info); + conn.setAutoCommit(true); + return conn; + } + }); + + } + + protected void tearDown() throws Exception { + dataSource.close(); + } + + public void test_autoCommit() throws Exception { + Connection conn = dataSource.getConnection(); + + Assert.assertFalse(conn.getAutoCommit()); + + conn.close(); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_autocommit3.java b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_autocommit3.java new file mode 100644 index 0000000000..9a7486d7b0 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_autocommit3.java @@ -0,0 +1,52 @@ +package com.alibaba.druid.bvt.pool; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Properties; + +import org.junit.Assert; + +import junit.framework.TestCase; + +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; + +/** + * 这个场景测试defaultAutoCommit + * + * @author wenshao + */ +public class DruidDataSourceTest_autocommit3 extends TestCase { + + private DruidDataSource dataSource; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + dataSource.setUrl("jdbc:mock:xxx"); + dataSource.setTestOnBorrow(false); + dataSource.setDefaultAutoCommit(false); + dataSource.setInitialSize(1); + dataSource.getProxyFilters().add(new FilterAdapter() { + public ConnectionProxy connection_connect(FilterChain chain, Properties info) throws SQLException { + ConnectionProxy conn = chain.connection_connect(info); + conn.setAutoCommit(false); + return conn; + } + }); + + } + + protected void tearDown() throws Exception { + dataSource.close(); + } + + public void test_autoCommit() throws Exception { + Connection conn = dataSource.getConnection(); + + Assert.assertFalse(conn.getAutoCommit()); + + conn.close(); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_autocommit4.java b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_autocommit4.java new file mode 100644 index 0000000000..3c5b04e261 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_autocommit4.java @@ -0,0 +1,52 @@ +package com.alibaba.druid.bvt.pool; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Properties; + +import org.junit.Assert; + +import junit.framework.TestCase; + +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; + +/** + * 这个场景测试defaultAutoCommit + * + * @author wenshao + */ +public class DruidDataSourceTest_autocommit4 extends TestCase { + + private DruidDataSource dataSource; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + dataSource.setUrl("jdbc:mock:xxx"); + dataSource.setTestOnBorrow(false); + dataSource.setDefaultAutoCommit(true); + dataSource.setInitialSize(1); + dataSource.getProxyFilters().add(new FilterAdapter() { + public ConnectionProxy connection_connect(FilterChain chain, Properties info) throws SQLException { + ConnectionProxy conn = chain.connection_connect(info); + conn.setAutoCommit(true); + return conn; + } + }); + + } + + protected void tearDown() throws Exception { + dataSource.close(); + } + + public void test_autoCommit() throws Exception { + Connection conn = dataSource.getConnection(); + + Assert.assertTrue(conn.getAutoCommit()); + + conn.close(); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_getPoolingPeakTime.java b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_getPoolingPeakTime.java new file mode 100644 index 0000000000..114c7cb91f --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_getPoolingPeakTime.java @@ -0,0 +1,38 @@ +package com.alibaba.druid.bvt.pool; + +import java.sql.Connection; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.pool.DruidDataSource; + +/** + * 这个场景测试initialSize > maxActive + * + * @author wenshao + */ +public class DruidDataSourceTest_getPoolingPeakTime extends TestCase { + + private DruidDataSource dataSource; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + dataSource.setUrl("jdbc:mock:xxx"); + dataSource.setTestOnBorrow(false); + + } + + protected void tearDown() throws Exception { + dataSource.close(); + } + + public void test_error() throws Exception { + Assert.assertNull(dataSource.getPoolingPeakTime()); + + Connection conn = dataSource.getConnection(); + conn.close(); + + Assert.assertNotNull(dataSource.getPoolingPeakTime()); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_maxActive1.java b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_maxActive1.java new file mode 100644 index 0000000000..02ba108b49 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_maxActive1.java @@ -0,0 +1,40 @@ +package com.alibaba.druid.bvt.pool; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.pool.DruidDataSource; + +/** + * 这个场景测试initialSize > maxActive + * + * @author wenshao + */ +public class DruidDataSourceTest_maxActive1 extends TestCase { + + private DruidDataSource dataSource; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + dataSource.setUrl("jdbc:mock:xxx"); + dataSource.setTestOnBorrow(false); + dataSource.setFilters("stat"); + dataSource.setInitialSize(3); + dataSource.setMaxActive(1); + + } + + protected void tearDown() throws Exception { + dataSource.close(); + } + + public void test_error() throws Exception { + Exception error = null; + try { + dataSource.init(); + } catch (IllegalArgumentException e) { + error = e; + } + Assert.assertNotNull(error); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest4.java b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_maxActive2.java similarity index 93% rename from src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest4.java rename to src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_maxActive2.java index 22d4732a49..8b3936fd32 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest4.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_maxActive2.java @@ -10,7 +10,7 @@ import com.alibaba.druid.pool.DruidDataSource; * * @author wenshao */ -public class DruidDataSourceTest4 extends TestCase { +public class DruidDataSourceTest_maxActive2 extends TestCase { private DruidDataSource dataSource; diff --git a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest5.java b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_maxActive3.java similarity index 86% rename from src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest5.java rename to src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_maxActive3.java index 2a2ef79335..40d05365cf 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest5.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_maxActive3.java @@ -10,7 +10,7 @@ import com.alibaba.druid.pool.DruidDataSource; * * @author wenshao */ -public class DruidDataSourceTest5 extends TestCase { +public class DruidDataSourceTest_maxActive3 extends TestCase { private DruidDataSource dataSource; @@ -19,7 +19,8 @@ public class DruidDataSourceTest5 extends TestCase { dataSource.setUrl("jdbc:mock:xxx"); dataSource.setTestOnBorrow(false); dataSource.setFilters("stat"); - dataSource.setInitialSize(100); + dataSource.setMinIdle(100); + dataSource.setMaxActive(10); } diff --git a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_maxActive4.java b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_maxActive4.java new file mode 100644 index 0000000000..455d6bc141 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_maxActive4.java @@ -0,0 +1,40 @@ +package com.alibaba.druid.bvt.pool; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.pool.DruidDataSource; + +/** + * 这个场景测试initialSize > maxActive + * + * @author wenshao + */ +public class DruidDataSourceTest_maxActive4 extends TestCase { + + private DruidDataSource dataSource; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + dataSource.setUrl("jdbc:mock:xxx"); + dataSource.setTestOnBorrow(false); + dataSource.setFilters("stat"); + dataSource.setMinIdle(4); + dataSource.setMaxActive(8); + } + + protected void tearDown() throws Exception { + dataSource.close(); + } + + public void test_error() throws Exception { + dataSource.init(); + Exception error = null; + try { + dataSource.setMaxActive(2); + } catch (IllegalArgumentException e) { + error = e; + } + Assert.assertNotNull(error); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_notEmptyWait.java b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_notEmptyWait.java new file mode 100644 index 0000000000..55a3dc10bf --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_notEmptyWait.java @@ -0,0 +1,81 @@ +package com.alibaba.druid.bvt.pool; + +import java.sql.Connection; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.pool.DruidDataSource; + +/** + * 这个场景测试maxActive < 0 + * + * @author wenshao + */ +public class DruidDataSourceTest_notEmptyWait extends TestCase { + + private DruidDataSource dataSource; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + dataSource.setUrl("jdbc:mock:xxx"); + dataSource.setTestOnBorrow(false); + dataSource.setFilters("stat"); + dataSource.setMaxActive(1); + } + + protected void tearDown() throws Exception { + dataSource.close(); + } + + public void test_error() throws Exception { + { + Connection conn = dataSource.getConnection(); + conn.close(); + Assert.assertEquals(1, dataSource.getNotEmptyWaitCount()); + } + + { + Connection conn = dataSource.getConnection(); + conn.close(); + Assert.assertEquals(1, dataSource.getNotEmptyWaitCount()); // notEmptyWaitCount没有增长 + } + + Connection conn = dataSource.getConnection(); + + final int THREAD_COUNT = 10; + final CountDownLatch startLatch = new CountDownLatch(THREAD_COUNT); + final CountDownLatch endLatch = new CountDownLatch(THREAD_COUNT); + Thread[] threads = new Thread[THREAD_COUNT]; + for (int i = 0; i < THREAD_COUNT; ++i) { + threads[i] = new Thread("thread-" + i) { + + public void run() { + startLatch.countDown(); + try { + Connection conn = dataSource.getConnection(); + conn.close(); + } catch (Exception e) { + //e.printStackTrace(); + } finally { + endLatch.countDown(); + } + } + }; + threads[i].start(); + } + + startLatch.await(100, TimeUnit.MILLISECONDS); + + Assert.assertEquals(10, dataSource.getNotEmptyWaitThreadCount()); + Assert.assertEquals(10, dataSource.getNotEmptyWaitThreadPeak()); + + conn.close(); + + endLatch.await(100, TimeUnit.MILLISECONDS); + Assert.assertEquals(0, dataSource.getNotEmptyWaitThreadCount()); + Assert.assertEquals(10, dataSource.getNotEmptyWaitThreadPeak()); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_oracle.java b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_oracle.java new file mode 100644 index 0000000000..3038fb05ad --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_oracle.java @@ -0,0 +1,41 @@ +package com.alibaba.druid.bvt.pool; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.mock.MockDriver; +import com.alibaba.druid.pool.DruidDataSource; + +/** + * 这个场景测试minIdle > maxActive + * + * @author wenshao + */ +public class DruidDataSourceTest_oracle extends TestCase { + + private DruidDataSource dataSource; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + dataSource.setUrl("jdbc:mock:xxx"); + dataSource.setTestOnBorrow(false); + dataSource.setFilters("stat"); + dataSource.setDbType("oracle"); + dataSource.setDriver(new MockDriver() { + + @Override + public int getMajorVersion() { + return 11; + } + }); + } + + protected void tearDown() throws Exception { + dataSource.close(); + } + + public void test_error() throws Exception { + dataSource.init(); + Assert.assertTrue(dataSource.isOracle()); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_oracle2.java b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_oracle2.java new file mode 100644 index 0000000000..bb9007ce00 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_oracle2.java @@ -0,0 +1,44 @@ +package com.alibaba.druid.bvt.pool; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.mock.MockDriver; +import com.alibaba.druid.pool.DruidDataSource; + +/** + * 这个场景测试minIdle > maxActive + * + * @author wenshao + */ +public class DruidDataSourceTest_oracle2 extends TestCase { + + private DruidDataSource dataSource; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + dataSource.setUrl("jdbc:mock:xxx"); + dataSource.setTestOnBorrow(false); + dataSource.setFilters("stat"); + dataSource.setDbType("oracle"); + dataSource.setPoolPreparedStatements(true); + dataSource.setDriver(new MockDriver() { + + @Override + public int getMajorVersion() { + return 10; + } + }); + } + + protected void tearDown() throws Exception { + dataSource.close(); + } + + public void test_error() throws Exception { + Assert.assertNull(dataSource.getConnectProperties().get("oracle.jdbc.FreeMemoryOnEnterImplicitCache")); + dataSource.init(); + Assert.assertTrue(dataSource.isOracle()); + Assert.assertEquals("true", dataSource.getConnectProperties().get("oracle.jdbc.FreeMemoryOnEnterImplicitCache")); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_oracle3.java b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_oracle3.java new file mode 100644 index 0000000000..1b266c8f03 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_oracle3.java @@ -0,0 +1,35 @@ +package com.alibaba.druid.bvt.pool; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.mock.MockDriver; +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.pool.vendor.OracleValidConnectionChecker; + +/** + * 这个场景测试minIdle > maxActive + * + * @author wenshao + */ +public class DruidDataSourceTest_oracle3 extends TestCase { + + private DruidDataSource dataSource; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + dataSource.setUrl("jdbc:oracle:xxx"); + dataSource.setTestOnBorrow(false); + dataSource.setFilters("stat"); + } + + protected void tearDown() throws Exception { + dataSource.close(); + } + + public void test_error() throws Exception { + dataSource.init(); + Assert.assertTrue(dataSource.isOracle()); + Assert.assertTrue(dataSource.getValidConnectionChecker() instanceof OracleValidConnectionChecker); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_oracle_error.java b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_oracle_error.java new file mode 100644 index 0000000000..21d474f8cb --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_oracle_error.java @@ -0,0 +1,46 @@ +package com.alibaba.druid.bvt.pool; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.mock.MockDriver; +import com.alibaba.druid.pool.DruidDataSource; + +/** + * 这个场景测试minIdle > maxActive + * + * @author wenshao + */ +public class DruidDataSourceTest_oracle_error extends TestCase { + + private DruidDataSource dataSource; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + dataSource.setUrl("jdbc:mock:xxx"); + dataSource.setTestOnBorrow(false); + dataSource.setFilters("stat"); + dataSource.setDbType("oracle"); + dataSource.setDriver(new MockDriver() { + + @Override + public int getMajorVersion() { + return 9; + } + }); + } + + protected void tearDown() throws Exception { + dataSource.close(); + } + + public void test_error() throws Exception { + Exception error = null; + try { + dataSource.init(); + } catch (Exception e) { + error = e; + } + Assert.assertNotNull(error); + } +}