db-derby-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From myrn...@apache.org
Subject svn commit: r681487 - in /db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests: suites/ tests/derbynet/
Date Thu, 31 Jul 2008 20:59:59 GMT
Author: myrnavl
Date: Thu Jul 31 13:59:58 2008
New Revision: 681487

URL: http://svn.apache.org/viewvc?rev=681487&view=rev
Log:
DERBY-3796: convert derbynet/OutBufferStream to Junit test OutBufferStreamTest.
  patch contributed by Erlend Birkenes

Added:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/OutBufferedStreamTest.java
  (with props)
Removed:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/OutBufferedStream.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/OutBufferedStream.policy
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/OutBufferedStream_app.properties
Modified:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbynetmats.runall
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/_Suite.java

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbynetmats.runall
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbynetmats.runall?rev=681487&r1=681486&r2=681487&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbynetmats.runall
(original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbynetmats.runall
Thu Jul 31 13:59:58 2008
@@ -15,4 +15,3 @@
 lang/ShutdownDatabase.java
 store/holdCursorExternalSortJDBC30.sql
 store/holdCursorJDBC30.sql
-derbynet/OutBufferedStream.java

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/OutBufferedStreamTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/OutBufferedStreamTest.java?rev=681487&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/OutBufferedStreamTest.java
(added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/OutBufferedStreamTest.java
Thu Jul 31 13:59:58 2008
@@ -0,0 +1,170 @@
+/*
+
+Derby -
+Class org.apache.derbyTesting.functionTests.tests.derbynet.OutBufferedStreamTest
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+ */
+
+package org.apache.derbyTesting.functionTests.tests.derbynet;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Properties;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.apache.derbyTesting.junit.BaseJDBCTestCase;
+import org.apache.derbyTesting.junit.CleanDatabaseTestSetup;
+import org.apache.derbyTesting.junit.TestConfiguration;
+
+/**
+ *
+ * This program tests streaming a blob with derby.drda.streamOutBufferSize
+ * configuration.
+ *
+ * When derby.drda.streamOutBufferSize is configured,
+ * a buffer of configured size is placed at network server just before
+ * sending the stream to the client.
+ *
+ * Buffer size is 131072
+ */
+public class OutBufferedStreamTest extends BaseJDBCTestCase {
+
+    /**
+     * This constructor takes the name of the test.
+     *
+     * @param name
+     */
+    public OutBufferedStreamTest(String name) {
+        super(name);
+    }
+
+    /**
+     * Returns the testsuite with a clientServerDecorator and a
+     * CleanDatabaseTestSetup with a table. Also sets system property
+     * derby.drda.streamOutBufferSize=131072.
+     *
+     * @return the testsuite
+     */
+    public static Test suite() {
+        Properties sysprops = System.getProperties();
+        sysprops.put("derby.drda.streamOutBufferSize", "131072");
+
+        TestSuite s = new TestSuite("OutBufferedStreamTest");
+        s.addTestSuite(OutBufferedStreamTest.class);
+
+        return new CleanDatabaseTestSetup(
+                                  TestConfiguration.clientServerDecorator(s)) {
+            /**
+             * Creates the table used in the test case.
+             *
+             * @throws SQLException
+             */
+            protected void decorateSQL(Statement s) throws SQLException {
+                /* Create a table */
+                s.execute("create table TEST_TABLE( TEST_COL blob( 65536 ))");
+                getConnection().commit();
+
+            }
+        };
+
+    }
+
+    /**
+     *  This test inserts a blob of length 65536 containing the series 0-255
+     *  256 times and then reads the data back and checks that it is correct.
+     */
+    public void testOutBufferStream() {
+
+        try {
+            PreparedStatement insertLobSt = prepareStatement(
+                                "insert into TEST_TABLE( TEST_COL ) values(?)");
+
+            insertLobSt.setBinaryStream(1, createOriginalDataInputStream(65536),
+                                                                         65536);
+            insertLobSt.executeUpdate();
+            insertLobSt.close();
+            commit();
+
+            PreparedStatement st = prepareStatement(
+                                            "select TEST_COL from TEST_TABLE");
+            ResultSet rs = st.executeQuery();
+
+            rs.next();
+
+            InputStream is = rs.getBinaryStream(1);
+
+            int[][] expected = new int[256][256];
+            int[][] actual = new int[256][256];
+
+            //Build the expected array.
+            for (int i = 0; i < 256; i++) {
+                for (int j = 0; j < 256; j++) {
+                    expected[i][j] = j;
+                }
+            }
+
+            //Read data from the lob and build array.
+            for (int i = 0; i < 256; i++) {
+                for (int j = 0; j < 256; j++) {
+                    actual[i][j] = is.read();
+                }
+
+            }
+
+            //Assert that the arrays are equal.
+            for (int i = 0; i < 256; i++) {
+                for (int j = 0; j < 256; j++) {
+                    assertEquals("Not correct: Line " + i + " pos " + j,
+                                 expected[i][j], actual[i][j]);
+                }
+            }
+
+            is.close();
+            rs.close();
+            st.close();
+            commit();
+        } catch (SQLException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Build a ByteArrayInputStream of the given length, with values
+     * from 0 t0 255 so they will fit into a byte.
+     */
+    private static ByteArrayInputStream createOriginalDataInputStream(int length) {
+
+        byte[] originalValue = new byte[length];
+
+        for (int i = 0; i < originalValue.length; i++) {
+            originalValue[i] = (byte) (i % 256);
+        }
+
+        return new ByteArrayInputStream(originalValue);
+
+    }
+}
\ No newline at end of file

Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/OutBufferedStreamTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/_Suite.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/_Suite.java?rev=681487&r1=681486&r2=681487&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/_Suite.java
(original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/_Suite.java
Thu Jul 31 13:59:58 2008
@@ -25,7 +25,7 @@
 import org.apache.derbyTesting.junit.Derby;
 import org.apache.derbyTesting.junit.JDBC;
 
-import junit.framework.Test; 
+import junit.framework.Test;
 import junit.framework.TestSuite;
 
 /**
@@ -41,12 +41,12 @@
     private _Suite(String name) {
         super(name);
     }
-    
+
     public static Test suite() {
 
         TestSuite suite = new TestSuite("derbynet");
         suite.addTest(PrepareStatementTest.suite());
-        suite.addTest(NetworkServerControlApiTest.suite());     
+        suite.addTest(NetworkServerControlApiTest.suite());
         suite.addTest(ShutDownDBWhenNSShutsDownTest.suite());
         suite.addTest(DRDAProtocolTest.suite());
         suite.addTest(ClientSideSystemPropertiesTest.suite());
@@ -59,21 +59,22 @@
         suite.addTest(NetworkServerControlClientCommandTest.suite());
         suite.addTest(ServerPropertiesTest.suite());
         suite.addTest(LOBLocatorReleaseTest.suite());
-        
-        
+        suite.addTest(OutBufferedStreamTest.suite());
+
+
         // Disabled due to "java.sql.SQLSyntaxErrorException: The class
         // 'org.apache.derbyTesting.functionTests.tests.derbynet.checkSecMgr'
         //  does not exist or is inaccessible. This can happen if the class is not public."
         //  in the nightly tests with JDK 1.6 and jar files.
         //suite.addTest(CheckSecurityManager.suite());
-        
+
         // this test refers to ConnectionPooledDataSource class
         // thus causing class not found exceptions with JSR169
         if (JDBC.vmSupportsJDBC3())
         {
             suite.addTest(NSSecurityMechanismTest.suite());
         }
-        
+
         // These tests references a client class directly
         // thus causing class not found exceptions if the
         // client code is not in the classpath.
@@ -81,8 +82,8 @@
             suite.addTest(ByteArrayCombinerStreamTest.suite());
             suite.addTest(SqlExceptionTest.suite());
         }
- 
+
         return suite;
     }
-    
+
 }



Mime
View raw message