From 8f06ed2f7e1a264a129e918f9b24d622332ad2ca Mon Sep 17 00:00:00 2001 From: wenshao Date: Tue, 28 Aug 2012 08:27:53 +0800 Subject: [PATCH] add StatFilter testcase for : OpenClobCount, OpenBlobCount, OpenInputStreamCount, OpenReaderCount --- .../filter/StatFilterOpenBlobCountTest.java | 104 +++++++++++ .../filter/StatFilterOpenBlobCountTest2.java | 171 +++++++++++++++++ .../filter/StatFilterOpenClobCountTest.java | 104 +++++++++++ .../filter/StatFilterOpenClobCountTest2.java | 174 ++++++++++++++++++ .../StatFilterOpenInputStreamCountTest.java | 100 ++++++++++ .../StatFilterOpenInputStreamCountTest2.java | 101 ++++++++++ .../filter/StatFilterOpenReaderCountTest.java | 102 ++++++++++ .../filter/StatFilterReadBytesLengthTest.java | 4 +- 8 files changed, 858 insertions(+), 2 deletions(-) create mode 100644 src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenBlobCountTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenBlobCountTest2.java create mode 100644 src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenClobCountTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenClobCountTest2.java create mode 100644 src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenInputStreamCountTest.java create mode 100644 src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenInputStreamCountTest2.java create mode 100644 src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenReaderCountTest.java diff --git a/src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenBlobCountTest.java b/src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenBlobCountTest.java new file mode 100644 index 0000000000..10bd9e0139 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenBlobCountTest.java @@ -0,0 +1,104 @@ +package com.alibaba.druid.bvt.filter; + +import java.sql.Blob; +import java.sql.Clob; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.filter.FilterAdapter; +import com.alibaba.druid.filter.FilterChain; +import com.alibaba.druid.mock.MockBlob; +import com.alibaba.druid.mock.MockClob; +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.proxy.jdbc.ClobProxyImpl; +import com.alibaba.druid.proxy.jdbc.ResultSetProxy; +import com.alibaba.druid.stat.JdbcSqlStat; +import com.alibaba.druid.util.JdbcUtils; + +public class StatFilterOpenBlobCountTest extends TestCase { + + private DruidDataSource dataSource; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + + dataSource.setUrl("jdbc:mock:xxx"); + dataSource.setFilters("stat"); + dataSource.setTestOnBorrow(false); + dataSource.getProxyFilters().add(new FilterAdapter() { + + @Override + public Blob resultSet_getBlob(FilterChain chain, ResultSetProxy result, int columnIndex) + throws SQLException { + return new MockBlob(); + } + + @Override + public Blob resultSet_getBlob(FilterChain chain, ResultSetProxy result, String columnLabel) + throws SQLException { + return new MockBlob(); + } + }); + dataSource.init(); + } + + protected void tearDown() throws Exception { + JdbcUtils.close(dataSource); + } + + public void test_stat() throws Exception { + Connection conn = dataSource.getConnection(); + + String sql = "select 'x'"; + PreparedStatement stmt = conn.prepareStatement("select 'x'"); + + JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql); + + Assert.assertEquals(0, sqlStat.getBlobOpenCount()); + + ResultSet rs = stmt.executeQuery(); + rs.next(); + rs.getBlob(1); + rs.getBlob(2); + rs.close(); + stmt.close(); + + conn.close(); + + Assert.assertEquals(2, sqlStat.getBlobOpenCount()); + + sqlStat.reset(); + Assert.assertEquals(0, sqlStat.getBlobOpenCount()); + } + + public void test_stat_1() throws Exception { + Connection conn = dataSource.getConnection(); + + String sql = "select 'x'"; + PreparedStatement stmt = conn.prepareStatement("select 'x'"); + + JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql); + + Assert.assertEquals(0, sqlStat.getBlobOpenCount()); + + ResultSet rs = stmt.executeQuery(); + rs.next(); + rs.getBlob("1"); + rs.getBlob("2"); + rs.getBlob("3"); + rs.close(); + stmt.close(); + + conn.close(); + + Assert.assertEquals(3, sqlStat.getBlobOpenCount()); + + sqlStat.reset(); + Assert.assertEquals(0, sqlStat.getBlobOpenCount()); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenBlobCountTest2.java b/src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenBlobCountTest2.java new file mode 100644 index 0000000000..0196c94cc0 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenBlobCountTest2.java @@ -0,0 +1,171 @@ +package com.alibaba.druid.bvt.filter; + +import java.sql.Clob; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Collections; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.filter.FilterAdapter; +import com.alibaba.druid.filter.FilterChain; +import com.alibaba.druid.mock.MockBlob; +import com.alibaba.druid.mock.MockClob; +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.proxy.jdbc.ClobProxyImpl; +import com.alibaba.druid.proxy.jdbc.ResultSetProxy; +import com.alibaba.druid.stat.JdbcSqlStat; +import com.alibaba.druid.util.JdbcUtils; + +public class StatFilterOpenBlobCountTest2 extends TestCase { + + private DruidDataSource dataSource; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + + dataSource.setUrl("jdbc:mock:xxx"); + dataSource.setFilters("stat"); + dataSource.setTestOnBorrow(false); + dataSource.getProxyFilters().add(new FilterAdapter() { + + @Override + public Object resultSet_getObject(FilterChain chain, ResultSetProxy result, int columnIndex) + throws SQLException { + return new MockBlob(); + } + + @Override + public Object resultSet_getObject(FilterChain chain, ResultSetProxy result, String columnLabel) + throws SQLException { + return new MockBlob(); + } + + @Override + public Object resultSet_getObject(FilterChain chain, ResultSetProxy result, int columnIndex, + java.util.Map> map) throws SQLException { + return new MockBlob(); + } + + @Override + public Object resultSet_getObject(FilterChain chain, ResultSetProxy result, String columnIndex, + java.util.Map> map) throws SQLException { + return new MockBlob(); + } + }); + dataSource.init(); + } + + protected void tearDown() throws Exception { + JdbcUtils.close(dataSource); + } + + public void test_stat() throws Exception { + Connection conn = dataSource.getConnection(); + + String sql = "select 'x'"; + PreparedStatement stmt = conn.prepareStatement("select 'x'"); + + JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql); + + Assert.assertEquals(0, sqlStat.getBlobOpenCount()); + + ResultSet rs = stmt.executeQuery(); + rs.next(); + rs.getObject(1); + rs.getObject(2); + rs.close(); + stmt.close(); + + conn.close(); + + Assert.assertEquals(2, sqlStat.getBlobOpenCount()); + + sqlStat.reset(); + Assert.assertEquals(0, sqlStat.getBlobOpenCount()); + } + + public void test_stat_1() throws Exception { + Connection conn = dataSource.getConnection(); + + String sql = "select 'x'"; + PreparedStatement stmt = conn.prepareStatement("select 'x'"); + + JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql); + + Assert.assertEquals(0, sqlStat.getBlobOpenCount()); + + ResultSet rs = stmt.executeQuery(); + rs.next(); + rs.getObject("1"); + rs.getObject("2"); + rs.getObject("3"); + rs.close(); + stmt.close(); + + conn.close(); + + Assert.assertEquals(3, sqlStat.getBlobOpenCount()); + + sqlStat.reset(); + Assert.assertEquals(0, sqlStat.getBlobOpenCount()); + } + + public void test_stat_2() throws Exception { + Connection conn = dataSource.getConnection(); + + String sql = "select 'x'"; + PreparedStatement stmt = conn.prepareStatement("select 'x'"); + + JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql); + + Assert.assertEquals(0, sqlStat.getBlobOpenCount()); + + ResultSet rs = stmt.executeQuery(); + rs.next(); + rs.getObject(1, Collections.> emptyMap()); + rs.getObject(2, Collections.> emptyMap()); + rs.getObject(3, Collections.> emptyMap()); + rs.getObject(4, Collections.> emptyMap()); + rs.close(); + stmt.close(); + + conn.close(); + + Assert.assertEquals(4, sqlStat.getBlobOpenCount()); + + sqlStat.reset(); + Assert.assertEquals(0, sqlStat.getBlobOpenCount()); + } + + public void test_stat_4() throws Exception { + Connection conn = dataSource.getConnection(); + + String sql = "select 'x'"; + PreparedStatement stmt = conn.prepareStatement("select 'x'"); + + JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql); + + Assert.assertEquals(0, sqlStat.getBlobOpenCount()); + + ResultSet rs = stmt.executeQuery(); + rs.next(); + rs.getObject("1", Collections.> emptyMap()); + rs.getObject("2", Collections.> emptyMap()); + rs.getObject("3", Collections.> emptyMap()); + rs.getObject("4", Collections.> emptyMap()); + rs.getObject("5", Collections.> emptyMap()); + rs.close(); + stmt.close(); + + conn.close(); + + Assert.assertEquals(5, sqlStat.getBlobOpenCount()); + + sqlStat.reset(); + Assert.assertEquals(0, sqlStat.getBlobOpenCount()); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenClobCountTest.java b/src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenClobCountTest.java new file mode 100644 index 0000000000..c156e61b83 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenClobCountTest.java @@ -0,0 +1,104 @@ +package com.alibaba.druid.bvt.filter; + +import java.sql.Clob; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.filter.FilterAdapter; +import com.alibaba.druid.filter.FilterChain; +import com.alibaba.druid.mock.MockClob; +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.proxy.jdbc.ClobProxyImpl; +import com.alibaba.druid.proxy.jdbc.ResultSetProxy; +import com.alibaba.druid.stat.JdbcSqlStat; +import com.alibaba.druid.util.JdbcUtils; + +public class StatFilterOpenClobCountTest extends TestCase { + + private DruidDataSource dataSource; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + + dataSource.setUrl("jdbc:mock:xxx"); + dataSource.setFilters("stat"); + dataSource.setTestOnBorrow(false); + dataSource.getProxyFilters().add(new FilterAdapter() { + + @Override + public Clob resultSet_getClob(FilterChain chain, ResultSetProxy result, int columnIndex) + throws SQLException { + return new ClobProxyImpl(result.getStatementProxy().getConnectionProxy().getDirectDataSource(), + result.getStatementProxy().getConnectionProxy(), new MockClob()); + } + + @Override + public Clob resultSet_getClob(FilterChain chain, ResultSetProxy result, String columnLabel) + throws SQLException { + return new ClobProxyImpl(result.getStatementProxy().getConnectionProxy().getDirectDataSource(), + result.getStatementProxy().getConnectionProxy(), new MockClob()); + } + }); + dataSource.init(); + } + + protected void tearDown() throws Exception { + JdbcUtils.close(dataSource); + } + + public void test_stat() throws Exception { + Connection conn = dataSource.getConnection(); + + String sql = "select 'x'"; + PreparedStatement stmt = conn.prepareStatement("select 'x'"); + + JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql); + + Assert.assertEquals(0, sqlStat.getClobOpenCount()); + + ResultSet rs = stmt.executeQuery(); + rs.next(); + rs.getClob(1); + rs.getClob(2); + rs.close(); + stmt.close(); + + conn.close(); + + Assert.assertEquals(2, sqlStat.getClobOpenCount()); + + sqlStat.reset(); + Assert.assertEquals(0, sqlStat.getClobOpenCount()); + } + + public void test_stat_1() throws Exception { + Connection conn = dataSource.getConnection(); + + String sql = "select 'x'"; + PreparedStatement stmt = conn.prepareStatement("select 'x'"); + + JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql); + + Assert.assertEquals(0, sqlStat.getClobOpenCount()); + + ResultSet rs = stmt.executeQuery(); + rs.next(); + rs.getClob("1"); + rs.getClob("2"); + rs.getClob("3"); + rs.close(); + stmt.close(); + + conn.close(); + + Assert.assertEquals(3, sqlStat.getClobOpenCount()); + + sqlStat.reset(); + Assert.assertEquals(0, sqlStat.getClobOpenCount()); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenClobCountTest2.java b/src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenClobCountTest2.java new file mode 100644 index 0000000000..6d54576ad7 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenClobCountTest2.java @@ -0,0 +1,174 @@ +package com.alibaba.druid.bvt.filter; + +import java.sql.Clob; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Collections; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.filter.FilterAdapter; +import com.alibaba.druid.filter.FilterChain; +import com.alibaba.druid.mock.MockClob; +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.proxy.jdbc.ClobProxyImpl; +import com.alibaba.druid.proxy.jdbc.ResultSetProxy; +import com.alibaba.druid.stat.JdbcSqlStat; +import com.alibaba.druid.util.JdbcUtils; + +public class StatFilterOpenClobCountTest2 extends TestCase { + + private DruidDataSource dataSource; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + + dataSource.setUrl("jdbc:mock:xxx"); + dataSource.setFilters("stat"); + dataSource.setTestOnBorrow(false); + dataSource.getProxyFilters().add(new FilterAdapter() { + + @Override + public Object resultSet_getObject(FilterChain chain, ResultSetProxy result, int columnIndex) + throws SQLException { + return new ClobProxyImpl(result.getStatementProxy().getConnectionProxy().getDirectDataSource(), + result.getStatementProxy().getConnectionProxy(), new MockClob()); + } + + @Override + public Object resultSet_getObject(FilterChain chain, ResultSetProxy result, String columnLabel) + throws SQLException { + return new ClobProxyImpl(result.getStatementProxy().getConnectionProxy().getDirectDataSource(), + result.getStatementProxy().getConnectionProxy(), new MockClob()); + } + + @Override + public Object resultSet_getObject(FilterChain chain, ResultSetProxy result, int columnIndex, + java.util.Map> map) throws SQLException { + return new ClobProxyImpl(result.getStatementProxy().getConnectionProxy().getDirectDataSource(), + result.getStatementProxy().getConnectionProxy(), new MockClob()); + } + + @Override + public Object resultSet_getObject(FilterChain chain, ResultSetProxy result, String columnIndex, + java.util.Map> map) throws SQLException { + return new ClobProxyImpl(result.getStatementProxy().getConnectionProxy().getDirectDataSource(), + result.getStatementProxy().getConnectionProxy(), new MockClob()); + } + }); + dataSource.init(); + } + + protected void tearDown() throws Exception { + JdbcUtils.close(dataSource); + } + + public void test_stat() throws Exception { + Connection conn = dataSource.getConnection(); + + String sql = "select 'x'"; + PreparedStatement stmt = conn.prepareStatement("select 'x'"); + + JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql); + + Assert.assertEquals(0, sqlStat.getClobOpenCount()); + + ResultSet rs = stmt.executeQuery(); + rs.next(); + rs.getObject(1); + rs.getObject(2); + rs.close(); + stmt.close(); + + conn.close(); + + Assert.assertEquals(2, sqlStat.getClobOpenCount()); + + sqlStat.reset(); + Assert.assertEquals(0, sqlStat.getClobOpenCount()); + } + + public void test_stat_1() throws Exception { + Connection conn = dataSource.getConnection(); + + String sql = "select 'x'"; + PreparedStatement stmt = conn.prepareStatement("select 'x'"); + + JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql); + + Assert.assertEquals(0, sqlStat.getClobOpenCount()); + + ResultSet rs = stmt.executeQuery(); + rs.next(); + rs.getObject("1"); + rs.getObject("2"); + rs.getObject("3"); + rs.close(); + stmt.close(); + + conn.close(); + + Assert.assertEquals(3, sqlStat.getClobOpenCount()); + + sqlStat.reset(); + Assert.assertEquals(0, sqlStat.getClobOpenCount()); + } + + public void test_stat_2() throws Exception { + Connection conn = dataSource.getConnection(); + + String sql = "select 'x'"; + PreparedStatement stmt = conn.prepareStatement("select 'x'"); + + JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql); + + Assert.assertEquals(0, sqlStat.getClobOpenCount()); + + ResultSet rs = stmt.executeQuery(); + rs.next(); + rs.getObject(1, Collections.>emptyMap()); + rs.getObject(2, Collections.>emptyMap()); + rs.getObject(3, Collections.>emptyMap()); + rs.getObject(4, Collections.>emptyMap()); + rs.close(); + stmt.close(); + + conn.close(); + + Assert.assertEquals(4, sqlStat.getClobOpenCount()); + + sqlStat.reset(); + Assert.assertEquals(0, sqlStat.getClobOpenCount()); + } + + public void test_stat_4() throws Exception { + Connection conn = dataSource.getConnection(); + + String sql = "select 'x'"; + PreparedStatement stmt = conn.prepareStatement("select 'x'"); + + JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql); + + Assert.assertEquals(0, sqlStat.getClobOpenCount()); + + ResultSet rs = stmt.executeQuery(); + rs.next(); + rs.getObject("1", Collections.>emptyMap()); + rs.getObject("2", Collections.>emptyMap()); + rs.getObject("3", Collections.>emptyMap()); + rs.getObject("4", Collections.>emptyMap()); + rs.getObject("5", Collections.>emptyMap()); + rs.close(); + stmt.close(); + + conn.close(); + + Assert.assertEquals(5, sqlStat.getClobOpenCount()); + + sqlStat.reset(); + Assert.assertEquals(0, sqlStat.getClobOpenCount()); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenInputStreamCountTest.java b/src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenInputStreamCountTest.java new file mode 100644 index 0000000000..0dfd9a9b38 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenInputStreamCountTest.java @@ -0,0 +1,100 @@ +package com.alibaba.druid.bvt.filter; + +import java.io.ByteArrayInputStream; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import junit.framework.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.ResultSetProxy; +import com.alibaba.druid.stat.JdbcSqlStat; +import com.alibaba.druid.util.JdbcUtils; + +public class StatFilterOpenInputStreamCountTest extends TestCase { + + private DruidDataSource dataSource; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + + dataSource.setUrl("jdbc:mock:xxx"); + dataSource.setFilters("stat"); + dataSource.setTestOnBorrow(false); + dataSource.getProxyFilters().add(new FilterAdapter() { + + @Override + public java.io.InputStream resultSet_getBinaryStream(FilterChain chain, ResultSetProxy result, int columnIndex) + throws SQLException { + return new ByteArrayInputStream(new byte[0]); + } + + @Override + public java.io.InputStream resultSet_getBinaryStream(FilterChain chain, ResultSetProxy result, String columnLabel) + throws SQLException { + return new ByteArrayInputStream(new byte[0]); + } + }); + dataSource.init(); + } + + protected void tearDown() throws Exception { + JdbcUtils.close(dataSource); + } + + public void test_stat() throws Exception { + Connection conn = dataSource.getConnection(); + + String sql = "select 'x'"; + PreparedStatement stmt = conn.prepareStatement("select 'x'"); + + JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql); + + Assert.assertEquals(0, sqlStat.getInputStreamOpenCount()); + + ResultSet rs = stmt.executeQuery(); + rs.next(); + rs.getBinaryStream(1); + rs.getBinaryStream(2); + rs.close(); + stmt.close(); + + conn.close(); + + Assert.assertEquals(2, sqlStat.getInputStreamOpenCount()); + + sqlStat.reset(); + Assert.assertEquals(0, sqlStat.getInputStreamOpenCount()); + } + + public void test_stat_1() throws Exception { + Connection conn = dataSource.getConnection(); + + String sql = "select 'x'"; + PreparedStatement stmt = conn.prepareStatement("select 'x'"); + + JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql); + + Assert.assertEquals(0, sqlStat.getInputStreamOpenCount()); + + ResultSet rs = stmt.executeQuery(); + rs.next(); + rs.getBinaryStream("1"); + rs.getBinaryStream("2"); + rs.getBinaryStream("3"); + rs.close(); + stmt.close(); + + conn.close(); + + Assert.assertEquals(3, sqlStat.getInputStreamOpenCount()); + + sqlStat.reset(); + Assert.assertEquals(0, sqlStat.getInputStreamOpenCount()); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenInputStreamCountTest2.java b/src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenInputStreamCountTest2.java new file mode 100644 index 0000000000..238a961867 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenInputStreamCountTest2.java @@ -0,0 +1,101 @@ +package com.alibaba.druid.bvt.filter; + +import java.io.ByteArrayInputStream; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import junit.framework.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.ResultSetProxy; +import com.alibaba.druid.stat.JdbcSqlStat; +import com.alibaba.druid.util.JdbcUtils; + +public class StatFilterOpenInputStreamCountTest2 extends TestCase { + + private DruidDataSource dataSource; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + + dataSource.setUrl("jdbc:mock:xxx"); + dataSource.setFilters("stat"); + dataSource.setTestOnBorrow(false); + dataSource.getProxyFilters().add(new FilterAdapter() { + + @Override + public java.io.InputStream resultSet_getAsciiStream(FilterChain chain, ResultSetProxy result, + int columnIndex) throws SQLException { + return new ByteArrayInputStream(new byte[0]); + } + + @Override + public java.io.InputStream resultSet_getAsciiStream(FilterChain chain, ResultSetProxy result, + String columnLabel) throws SQLException { + return new ByteArrayInputStream(new byte[0]); + } + + }); + dataSource.init(); + } + + protected void tearDown() throws Exception { + JdbcUtils.close(dataSource); + } + + public void test_stat() throws Exception { + Connection conn = dataSource.getConnection(); + + String sql = "select 'x'"; + PreparedStatement stmt = conn.prepareStatement("select 'x'"); + + JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql); + + Assert.assertEquals(0, sqlStat.getInputStreamOpenCount()); + + ResultSet rs = stmt.executeQuery(); + rs.next(); + rs.getAsciiStream(1); + rs.getAsciiStream(2); + rs.close(); + stmt.close(); + + conn.close(); + + Assert.assertEquals(2, sqlStat.getInputStreamOpenCount()); + + sqlStat.reset(); + Assert.assertEquals(0, sqlStat.getInputStreamOpenCount()); + } + + public void test_stat_1() throws Exception { + Connection conn = dataSource.getConnection(); + + String sql = "select 'x'"; + PreparedStatement stmt = conn.prepareStatement("select 'x'"); + + JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql); + + Assert.assertEquals(0, sqlStat.getInputStreamOpenCount()); + + ResultSet rs = stmt.executeQuery(); + rs.next(); + rs.getAsciiStream("1"); + rs.getAsciiStream("2"); + rs.getAsciiStream("3"); + rs.close(); + stmt.close(); + + conn.close(); + + Assert.assertEquals(3, sqlStat.getInputStreamOpenCount()); + + sqlStat.reset(); + Assert.assertEquals(0, sqlStat.getInputStreamOpenCount()); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenReaderCountTest.java b/src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenReaderCountTest.java new file mode 100644 index 0000000000..749b46f58b --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/filter/StatFilterOpenReaderCountTest.java @@ -0,0 +1,102 @@ +package com.alibaba.druid.bvt.filter; + +import java.io.ByteArrayInputStream; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import org.nutz.lang.stream.StringReader; + +import junit.framework.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.ResultSetProxy; +import com.alibaba.druid.stat.JdbcSqlStat; +import com.alibaba.druid.util.JdbcUtils; + +public class StatFilterOpenReaderCountTest extends TestCase { + + private DruidDataSource dataSource; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + + dataSource.setUrl("jdbc:mock:xxx"); + dataSource.setFilters("stat"); + dataSource.setTestOnBorrow(false); + dataSource.getProxyFilters().add(new FilterAdapter() { + + @Override + public java.io.Reader resultSet_getCharacterStream(FilterChain chain, ResultSetProxy result, int columnIndex) + throws SQLException { + return new StringReader(""); + } + + @Override + public java.io.Reader resultSet_getCharacterStream(FilterChain chain, ResultSetProxy result, String columnLabel) + throws SQLException { + return new StringReader(""); + } + }); + dataSource.init(); + } + + protected void tearDown() throws Exception { + JdbcUtils.close(dataSource); + } + + public void test_stat() throws Exception { + Connection conn = dataSource.getConnection(); + + String sql = "select 'x'"; + PreparedStatement stmt = conn.prepareStatement("select 'x'"); + + JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql); + + Assert.assertEquals(0, sqlStat.getReaderOpenCount()); + + ResultSet rs = stmt.executeQuery(); + rs.next(); + rs.getCharacterStream(1); + rs.getCharacterStream(2); + rs.close(); + stmt.close(); + + conn.close(); + + Assert.assertEquals(2, sqlStat.getReaderOpenCount()); + + sqlStat.reset(); + Assert.assertEquals(0, sqlStat.getReaderOpenCount()); + } + + public void test_stat_1() throws Exception { + Connection conn = dataSource.getConnection(); + + String sql = "select 'x'"; + PreparedStatement stmt = conn.prepareStatement("select 'x'"); + + JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql); + + Assert.assertEquals(0, sqlStat.getReaderOpenCount()); + + ResultSet rs = stmt.executeQuery(); + rs.next(); + rs.getCharacterStream("1"); + rs.getCharacterStream("2"); + rs.getCharacterStream("3"); + rs.close(); + stmt.close(); + + conn.close(); + + Assert.assertEquals(3, sqlStat.getReaderOpenCount()); + + sqlStat.reset(); + Assert.assertEquals(0, sqlStat.getReaderOpenCount()); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/filter/StatFilterReadBytesLengthTest.java b/src/test/java/com/alibaba/druid/bvt/filter/StatFilterReadBytesLengthTest.java index 2322a13f99..d6da8f2b88 100644 --- a/src/test/java/com/alibaba/druid/bvt/filter/StatFilterReadBytesLengthTest.java +++ b/src/test/java/com/alibaba/druid/bvt/filter/StatFilterReadBytesLengthTest.java @@ -68,7 +68,7 @@ public class StatFilterReadBytesLengthTest extends TestCase { Assert.assertEquals(0, sqlStat.getReadStringLength()); Assert.assertEquals(6, sqlStat.getReadBytesLength()); - + sqlStat.reset(); Assert.assertEquals(0, sqlStat.getReadStringLength()); Assert.assertEquals(0, sqlStat.getReadBytesLength()); @@ -95,7 +95,7 @@ public class StatFilterReadBytesLengthTest extends TestCase { Assert.assertEquals(0, sqlStat.getReadStringLength()); Assert.assertEquals(7, sqlStat.getReadBytesLength()); - + sqlStat.reset(); Assert.assertEquals(0, sqlStat.getReadStringLength()); Assert.assertEquals(0, sqlStat.getReadBytesLength());