You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by be...@apache.org on 2006/10/16 16:16:44 UTC

svn commit: r464504 - in /db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests: master/ suites/ tests/jdbcapi/ tests/largedata/

Author: bernt
Date: Mon Oct 16 07:16:43 2006
New Revision: 464504

URL: http://svn.apache.org/viewvc?view=rev&rev=464504
Log:
DERBY-1893 Convert largedata/lobLengthTests.java to junit. Comitted by Øystein Grøvlen

Added:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/LobLengthTest.java   (with props)
Removed:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/lobLengthTests.out
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/largedata/lobLengthTests.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/largedata/lobLengthTests_app.properties
Modified:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/largeDataTests.runall
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/_Suite.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/largedata/copyfiles.ant

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/largeDataTests.runall
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/largeDataTests.runall?view=diff&rev=464504&r1=464503&r2=464504
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/largeDataTests.runall (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/largeDataTests.runall Mon Oct 16 07:16:43 2006
@@ -1,2 +1 @@
-largedata/lobLengthTests.java
 largedata/LobLimits.java

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/LobLengthTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/LobLengthTest.java?view=auto&rev=464504
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/LobLengthTest.java (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/LobLengthTest.java Mon Oct 16 07:16:43 2006
@@ -0,0 +1,130 @@
+/*
+
+   Derby - Class org.apache.derbyTesting.functionTests.tests.jdbcapi.LobLengthTest
+
+   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.jdbcapi;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.Statement;
+import java.sql.SQLException;
+
+import java.io.ByteArrayInputStream;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.apache.derbyTesting.junit.BaseJDBCTestCase;
+
+/**
+ * This tests a fix for a defect (DERBY-121) where the server and
+ * client were processing lob lengths incorrectly.  For lob lengths
+ * that are represented by 24 or more bits, the server and Derby
+ * client were doing incorrect bit-shifting.  This test makes sure
+ * that problem no longer occurs.
+ */
+
+public class LobLengthTest extends BaseJDBCTestCase {
+
+
+    /* Connection to be used in test */
+    private Connection conn = null; 
+
+    /**
+     * Creates a new instance of LobLengthTest
+     *
+     * @param name name of the test.
+     */
+    public LobLengthTest(String name)
+    {
+        super(name);
+    }
+
+    
+    public static Test suite() 
+    {
+        final TestSuite suite = new TestSuite();
+        
+        suite.addTest(new LobLengthTest("testLongLobLengths"));
+
+        return suite;
+    }
+
+
+    /**
+     * Create a JDBC connection using the arguments passed
+     * in from the harness, and create the table to be used by the test.
+     */
+    public void setUp() throws Exception
+    {
+        conn = getConnection();
+        conn.setAutoCommit(false);
+
+        // Create a test table.
+        Statement st = conn.createStatement();
+        st.execute("create table lobTable100M(bl blob(100M))");
+        st.close();
+    }
+
+
+    /**
+     * Cleanup: Drop table and close connection.
+     */
+    public void tearDown() throws Exception 
+    {
+        Statement st = conn.createStatement();
+        st.execute("drop table lobTable100M");
+        st.close();
+
+        conn.commit();
+        conn.close();
+    }
+
+
+    /**
+     * There was a defect (DERBY-121) where the server and client
+     * were processing lob lengths incorrectly.  For lob lengths
+     * that are represented by 24 or more bits, the server and
+     * Derby client were doing incorrect bit-shifting.  This
+     * test makes sure that problem no longer occurs.
+     */
+    public void testLongLobLengths() throws Exception
+    {
+        PreparedStatement pSt = conn.prepareStatement(
+            "insert into lobTable100M(bl) values (?)");
+
+        // The error we're testing occurs when the server
+        // is shifting bits 24 and higher of the lob's
+        // length (in bytes).  This means that, in order
+        // to check for the error, we have to specify a
+        // lob length (in bytes) that requires at least
+        // 24 bits to represent.  Thus for a blob the
+        // length of the test data must be specified as
+        // at least 2^24 bytes (hence the '16800000' in
+        // the next line).
+        byte [] bA = new byte[16800000];
+        pSt.setBinaryStream(1,
+            new java.io.ByteArrayInputStream(bA), bA.length);
+
+        // Now try the insert; this is where the server processes
+        // the lob length.
+        pSt.execute();
+        pSt.close();
+    }
+}

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

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/_Suite.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/_Suite.java?view=diff&rev=464504&r1=464503&r2=464504
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/_Suite.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/_Suite.java Mon Oct 16 07:16:43 2006
@@ -49,6 +49,7 @@
 
 		suite.addTest(ConcurrencyTest.suite());
 		suite.addTest(HoldabilityTest.suite());
+        suite.addTest(LobLengthTest.suite()); 
 		suite.addTest(ProcedureTest.suite());
 		suite.addTest(SURQueryMixTest.suite());
 		suite.addTest(SURTest.suite());

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/largedata/copyfiles.ant
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/largedata/copyfiles.ant?view=diff&rev=464504&r1=464503&r2=464504
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/largedata/copyfiles.ant (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/largedata/copyfiles.ant Mon Oct 16 07:16:43 2006
@@ -1,2 +1 @@
-lobLengthTests_app.properties
 LobLimits_app.properties