Search in sources :

Example 1 with MockNClob

use of com.alibaba.druid.mock.MockNClob in project druid by alibaba.

the class StatFilterBuildSlowParameterTest method test_buildSlowSql.

public void test_buildSlowSql() throws Exception {
    long currentMillis = System.currentTimeMillis();
    String sql = "select ?, ?, ?, ?, ?";
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = new Date(System.currentTimeMillis());
    String dateText = dateFormat.format(date);
    {
        Connection conn = dataSource.getConnection();
        PreparedStatement stmt = conn.prepareStatement(sql);
        stmt.setBoolean(1, true);
        stmt.setInt(2, 123);
        stmt.setLong(3, 10001);
        stmt.setTimestamp(4, new java.sql.Timestamp(currentMillis));
        stmt.setDate(5, new java.sql.Date(currentMillis));
        ResultSet rs = stmt.executeQuery();
        rs.close();
        stmt.close();
        conn.close();
        // //////
        JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql);
        Assert.assertNotNull(sqlStat);
        String slowParameters = sqlStat.getLastSlowParameters();
        Assert.assertNotNull(slowParameters);
        List<Object> parameters = (List<Object>) JSONUtils.parse(slowParameters);
        Assert.assertEquals(5, parameters.size());
        Assert.assertEquals(true, parameters.get(0));
        Assert.assertEquals(123, parameters.get(1));
        Assert.assertEquals(10001, parameters.get(2));
        Assert.assertEquals(dateText, parameters.get(3));
        Assert.assertEquals(dateText, parameters.get(4));
    }
    currentMillis = System.currentTimeMillis();
    date = new Date(System.currentTimeMillis());
    dateText = dateFormat.format(date);
    {
        Connection conn = dataSource.getConnection();
        PreparedStatement stmt = conn.prepareStatement(sql);
        stmt.setBoolean(1, false);
        stmt.setInt(2, 234);
        stmt.setLong(3, 10002);
        stmt.setTimestamp(4, new java.sql.Timestamp(currentMillis));
        stmt.setDate(5, new java.sql.Date(currentMillis));
        ResultSet rs = stmt.executeQuery();
        rs.close();
        stmt.close();
        conn.close();
        // //////
        JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql);
        Assert.assertNotNull(sqlStat);
        String slowParameters = sqlStat.getLastSlowParameters();
        Assert.assertNotNull(slowParameters);
        List<Object> parameters = (List<Object>) JSONUtils.parse(slowParameters);
        Assert.assertEquals(5, parameters.size());
        Assert.assertEquals(false, parameters.get(0));
        Assert.assertEquals(234, parameters.get(1));
        Assert.assertEquals(10002, parameters.get(2));
        Assert.assertEquals(dateText, parameters.get(3));
        Assert.assertEquals(dateText, parameters.get(4));
    }
    {
        StringBuilder buf = new StringBuilder();
        for (int i = 0; i < 10; ++i) {
            buf.append("abcdefghijklmnABCDEFGHIJKLMN1234567890!@#$%^&*(");
        }
        Connection conn = dataSource.getConnection();
        PreparedStatement stmt = conn.prepareStatement(sql);
        stmt.setNull(1, Types.VARCHAR);
        stmt.setString(2, buf.toString());
        stmt.setClob(3, new MockClob());
        stmt.setNClob(4, new MockNClob());
        stmt.setBlob(5, new MockBlob());
        ResultSet rs = stmt.executeQuery();
        rs.close();
        stmt.close();
        conn.close();
        // //////
        JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql);
        Assert.assertNotNull(sqlStat);
        String slowParameters = sqlStat.getLastSlowParameters();
        Assert.assertNotNull(slowParameters);
        List<Object> parameters = (List<Object>) JSONUtils.parse(slowParameters);
        Assert.assertEquals(5, parameters.size());
        Assert.assertEquals(null, parameters.get(0));
        Assert.assertEquals(buf.substring(0, 97) + "...", parameters.get(1));
        Assert.assertEquals("<Clob>", parameters.get(2));
        Assert.assertEquals("<NClob>", parameters.get(3));
        Assert.assertEquals("<Blob>", parameters.get(4));
    }
    {
        StringBuilder buf = new StringBuilder();
        for (int i = 0; i < 10; ++i) {
            buf.append("中国abcdefghijklmnABCDEFGHIJKLMN1234567890!@#$%^&*(");
        }
        Connection conn = dataSource.getConnection();
        PreparedStatement stmt = conn.prepareStatement(sql);
        stmt.setBinaryStream(1, new ByteInputStream(new byte[0]));
        stmt.setString(2, buf.toString());
        stmt.setTime(3, new Time(currentMillis));
        stmt.setBigDecimal(4, new BigDecimal("56789.123"));
        stmt.setRowId(5, new MockRowId());
        ResultSet rs = stmt.executeQuery();
        rs.close();
        stmt.close();
        conn.close();
        // //////
        JdbcSqlStat sqlStat = dataSource.getDataSourceStat().getSqlStat(sql);
        Assert.assertNotNull(sqlStat);
        String slowParameters = sqlStat.getLastSlowParameters();
        Assert.assertNotNull(slowParameters);
        List<Object> parameters = (List<Object>) JSONUtils.parse(slowParameters);
        Assert.assertEquals(5, parameters.size());
        Assert.assertEquals("<InputStream>", parameters.get(0));
        Assert.assertEquals(buf.substring(0, 97) + "...", parameters.get(1));
        Assert.assertEquals(dateText, parameters.get(2));
        Assert.assertEquals(56789.123, parameters.get(3));
        Assert.assertEquals("<com.alibaba.druid.mock.MockRowId>", parameters.get(4));
    }
}
Also used : MockNClob(com.alibaba.druid.mock.MockNClob) JdbcSqlStat(com.alibaba.druid.stat.JdbcSqlStat) MockRowId(com.alibaba.druid.mock.MockRowId) ByteInputStream(org.nutz.lang.util.ByteInputStream) MockBlob(com.alibaba.druid.mock.MockBlob) MockClob(com.alibaba.druid.mock.MockClob) Connection(java.sql.Connection) PreparedStatement(java.sql.PreparedStatement) Time(java.sql.Time) Date(java.util.Date) BigDecimal(java.math.BigDecimal) ResultSet(java.sql.ResultSet) List(java.util.List) SimpleDateFormat(java.text.SimpleDateFormat)

Example 2 with MockNClob

use of com.alibaba.druid.mock.MockNClob in project druid by alibaba.

the class FilterChainTest_NClob method setUp.

protected void setUp() throws Exception {
    dataSource = new DruidDataSource();
    ConnectionProxyImpl conn = new ConnectionProxyImpl(dataSource, null, new Properties(), 0);
    statement = new StatementProxyImpl(conn, null, 1);
    mockResultSet = new MockResultSet(null) {

        public Object getObject(int columnIndex) throws SQLException {
            invokeCount++;
            return new MockNClob();
        }
    };
}
Also used : MockNClob(com.alibaba.druid.mock.MockNClob) SQLException(java.sql.SQLException) ConnectionProxyImpl(com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl) MockResultSet(com.alibaba.druid.mock.MockResultSet) Properties(java.util.Properties) DruidDataSource(com.alibaba.druid.pool.DruidDataSource) StatementProxyImpl(com.alibaba.druid.proxy.jdbc.StatementProxyImpl)

Example 3 with MockNClob

use of com.alibaba.druid.mock.MockNClob in project druid by alibaba.

the class FilterChainImplTest method test_unwrap_6.

public void test_unwrap_6() throws Exception {
    Connection conn = dataSource.getConnection();
    Assert.assertTrue(new FilterChainImpl(dataSource).wrap((ConnectionProxy) dataSource.getConnection().getConnection(), new MockNClob()) instanceof NClob);
    conn.close();
}
Also used : MockNClob(com.alibaba.druid.mock.MockNClob) NClob(java.sql.NClob) FilterChainImpl(com.alibaba.druid.filter.FilterChainImpl) MockNClob(com.alibaba.druid.mock.MockNClob) Connection(java.sql.Connection)

Example 4 with MockNClob

use of com.alibaba.druid.mock.MockNClob in project druid by alibaba.

the class FilterChainImplTest method test_unwrap_8.

public void test_unwrap_8() throws Exception {
    Connection conn = dataSource.getConnection();
    Assert.assertTrue(new FilterChainImpl(dataSource).wrap((ConnectionProxy) dataSource.getConnection().getConnection(), (Clob) new MockNClob()) instanceof NClob);
    conn.close();
}
Also used : MockNClob(com.alibaba.druid.mock.MockNClob) NClob(java.sql.NClob) FilterChainImpl(com.alibaba.druid.filter.FilterChainImpl) MockNClob(com.alibaba.druid.mock.MockNClob) Connection(java.sql.Connection)

Example 5 with MockNClob

use of com.alibaba.druid.mock.MockNClob in project druid by alibaba.

the class FilterChainTest_NClob_2 method setUp.

protected void setUp() throws Exception {
    dataSource = new DruidDataSource();
    MockCallableStatement mockStmt = new MockCallableStatement(null, "") {

        @Override
        public Object getObject(int parameterIndex) throws SQLException {
            invokeCount++;
            return new MockNClob();
        }
    };
    statement = new CallableStatementProxyImpl(new ConnectionProxyImpl(null, null, null, 0), mockStmt, "", 1);
}
Also used : MockCallableStatement(com.alibaba.druid.mock.MockCallableStatement) MockNClob(com.alibaba.druid.mock.MockNClob) ConnectionProxyImpl(com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl) CallableStatementProxyImpl(com.alibaba.druid.proxy.jdbc.CallableStatementProxyImpl) DruidDataSource(com.alibaba.druid.pool.DruidDataSource)

Aggregations

MockNClob (com.alibaba.druid.mock.MockNClob)5 Connection (java.sql.Connection)3 FilterChainImpl (com.alibaba.druid.filter.FilterChainImpl)2 DruidDataSource (com.alibaba.druid.pool.DruidDataSource)2 ConnectionProxyImpl (com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl)2 NClob (java.sql.NClob)2 MockBlob (com.alibaba.druid.mock.MockBlob)1 MockCallableStatement (com.alibaba.druid.mock.MockCallableStatement)1 MockClob (com.alibaba.druid.mock.MockClob)1 MockResultSet (com.alibaba.druid.mock.MockResultSet)1 MockRowId (com.alibaba.druid.mock.MockRowId)1 CallableStatementProxyImpl (com.alibaba.druid.proxy.jdbc.CallableStatementProxyImpl)1 StatementProxyImpl (com.alibaba.druid.proxy.jdbc.StatementProxyImpl)1 JdbcSqlStat (com.alibaba.druid.stat.JdbcSqlStat)1 BigDecimal (java.math.BigDecimal)1 PreparedStatement (java.sql.PreparedStatement)1 ResultSet (java.sql.ResultSet)1 SQLException (java.sql.SQLException)1 Time (java.sql.Time)1 SimpleDateFormat (java.text.SimpleDateFormat)1