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 km...@apache.org on 2007/07/26 23:45:39 UTC

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

Author: kmarsden
Date: Thu Jul 26 14:45:38 2007
New Revision: 560005

URL: http://svn.apache.org/viewvc?view=rev&rev=560005
Log:
DERBY-2942 Convert jdbcapi/statementJdbc30.java to JUnit

Contributed by Ramin Moazeni


Added:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/StatementJdbc30Test.java   (with props)
Removed:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/statementJdbc30.out
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/statementJdbc30.java
Modified:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNet.exclude
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNetClient.exclude
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/JDBCHarnessJavaTest.java
    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/jdbcapi/build.xml

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNet.exclude
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNet.exclude?view=diff&rev=560005&r1=560004&r2=560005
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNet.exclude (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNet.exclude Thu Jul 26 14:45:38 2007
@@ -4,7 +4,6 @@
 # excluding jdbcapi/testRelative.java because this is a new test contributed by Shreyas Kaushik and needs to be debugged with JCC  in order to get it running with network server
 # excluding jdbcapi/SetQueryTimeoutTest.java because neither the JCC driver nor the ClientDriver support setQueryTimeout() yet.
 # excluding jdbcapi/rsgetXXXcolumnNames.java as it fails incorrectly, according to JDBC spec. Forwarding test case to JCC team.
-# excluding jdbcapi/statementJdbc30.java - Client behaves differently. Need to look into this
 #           regardless of framework
 # excluding largedata/LobLimits.java to run with the network server because currently lobs are materialized and this test tests for 2G lobs.
 # 			see DERBY-326 and DERBY-550 issues
@@ -15,7 +14,6 @@
 jdbcapi/rsgetXXXcolumnNames.java
 jdbcapi/SetQueryTimeoutTest.java
 jdbcapi/blobSetBinaryStream.java
-jdbcapi/statementJdbc30.java
 #no XA for JCC
 jdbcapi/savepointJdbc30_XA.java
 # excluding jdbcapi/derbyStress.java - jcc runs out of memory with this test

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNetClient.exclude
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNetClient.exclude?view=diff&rev=560005&r1=560004&r2=560005
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNetClient.exclude (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNetClient.exclude Thu Jul 26 14:45:38 2007
@@ -1,13 +1,11 @@
 # excluding TestErrorStreamTarget.java since it's not relevant for clients
 # excluding statementJdbc20.java because this tests fetch_reverse throughout the test
-# excluding jdbcapi/statementJdbc30.java - Client behaves differently. Need to look into this
 #           regardless of framework
 # excluding largedata/LobLimits.java to run with the network server because currently lobs are materialized and this test tests for 2G lobs.
 # 			see DERBY-326 and DERBY-550 issues
 lang/errorStream.java
 #
 jdbcapi/statementJdbc20.java
-jdbcapi/statementJdbc30.java
 largedata/LobLimits.java
 #
 # This test brings the network server up and down by itself

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/JDBCHarnessJavaTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/JDBCHarnessJavaTest.java?view=diff&rev=560005&r1=560004&r2=560005
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/JDBCHarnessJavaTest.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/JDBCHarnessJavaTest.java Thu Jul 26 14:45:38 2007
@@ -62,7 +62,6 @@
             "rsgetXXXcolumnNames",
             
             // from old jdk14.runall
-            // "statementJdbc30", runs in embedded only
             // "savepointJdbc30_JSR169", TODO: convert - different canon for client
             // "savepointJdbc30_XA", TODO: convert - different canon for client
             
@@ -75,7 +74,6 @@
     {
         // excluded from derby client in old harness
         "statementJdbc20",
-        "statementJdbc30",
         
         // Tests that run ok in embedded but have a different client master file.
         "savepointJdbc30_JSR169",

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/StatementJdbc30Test.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/StatementJdbc30Test.java?view=auto&rev=560005
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/StatementJdbc30Test.java (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/StatementJdbc30Test.java Thu Jul 26 14:45:38 2007
@@ -0,0 +1,286 @@
+/*
+
+ Derby - Class org.apache.derbyTesting.functionTests.tests.jdbcapi.StatementJdbc30Test
+
+ 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.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.apache.derby.iapi.reference.JDBC30Translation;
+import org.apache.derbyTesting.junit.BaseJDBCTestCase;
+import org.apache.derbyTesting.junit.CleanDatabaseTestSetup;
+import org.apache.derbyTesting.junit.TestConfiguration;
+
+/**
+ * Test the Statement class in JDBC 30. This test converts the old
+ * jdbcapi/statementJdbc30.java test to JUnit.
+ */
+
+public class StatementJdbc30Test extends BaseJDBCTestCase {
+
+    /**
+     * Create a test with the given name.
+     * 
+     * @param name
+     *            name of the test.
+     */
+
+    public StatementJdbc30Test(String name) {
+        super(name);
+    }
+
+    /**
+     * Create suite containing client and embedded tests and to run all tests in
+     * this class
+     */
+    public static Test suite() {
+        TestSuite suite = new TestSuite("StatementJdbc30Test");
+
+        suite.addTest(baseSuite("StatementJdbc30Test:embedded"));
+        suite
+                .addTest(TestConfiguration
+                        .clientServerDecorator(baseSuite("StatementJdbc30Test:client")));
+
+        return suite;
+    }
+
+    private static Test baseSuite(String name) {
+        TestSuite suite = new TestSuite(name);
+
+        suite.addTestSuite(StatementJdbc30Test.class);
+
+        return new CleanDatabaseTestSetup(suite) {
+            /**
+             * Creates the tables used in the test cases.
+             * 
+             * @exception SQLException
+             *                if a database error occurs
+             */
+            protected void decorateSQL(Statement stmt) throws SQLException {
+
+                /**
+                 * Creates the table used in the test cases.
+                 * 
+                 */
+                stmt.execute("create table tab1 (i int, s smallint, r real)");
+                stmt.executeUpdate("insert into tab1 values(1, 2, 3.1)");
+            }
+        };
+    }
+
+    /**
+     * Tests reading data from database
+     * 
+     * @exception SQLException
+     *                if error occurs
+     */
+    public void testReadingData() throws SQLException {
+
+        Statement stmt = createStatement();
+        ResultSet rs;
+
+        // read the data just for the heck of it
+        rs = stmt.executeQuery("select * from tab1");
+        assertTrue(rs.next());
+
+        rs.close();
+    }
+
+    /**
+     * Tests stmt.getMoreResults(int)
+     * 
+     * @exception SQLException
+     *                if error occurs
+     */
+    public void testGetMoreResults() throws SQLException {
+
+        Statement stmt = createStatement();
+        assertFalse(stmt.getMoreResults(JDBC30Translation.CLOSE_CURRENT_RESULT));
+
+    }
+
+    /**
+     * Tests stmt.executeUpdate(String, int) with NO_GENERATED_KEYS.
+     * 
+     * @exception SQLException
+     *                if error occurs
+     */
+    public void testInsertNoGenKeys() throws SQLException {
+
+        Statement stmt = createStatement();
+        stmt.executeUpdate("insert into tab1 values(2, 3, 4.1)",
+                JDBC30Translation.NO_GENERATED_KEYS);
+        assertNull("Expected NULL ResultSet after stmt.execute()", stmt
+                .getGeneratedKeys());
+
+    }
+
+    /**
+     * Tests stmt.executeUpdate(String, int[]) After doing an insert into a
+     * table that doesn't have a generated column, the test should fail.
+     * 
+     * @throws SQLException
+     */
+    public void testExecuteUpdateNoAutoGenColumnIndex() throws SQLException {
+
+        Statement stmt = createStatement();
+
+        int[] columnIndexes = new int[2];
+        columnIndexes[0] = 1;
+        columnIndexes[1] = 2;
+        try {
+            stmt.executeUpdate("insert into tab1 values(2, 3, 4.1)",
+                    columnIndexes);
+            fail("FAIL -- executeUpdate should have failed...");
+        } catch (SQLException ex) {
+            assertFailedExecuteUpdate(ex);
+        }
+    }
+
+    /**
+     * Tests stmt.executeUpdate(String, String[]) After doing an insert into a
+     * table that doesn't have a generated column, the test should fail.
+     * 
+     * @throws SQLException
+     */
+    public void testExecuteUpdateNoAutoGenColumnName() throws SQLException {
+
+        Statement stmt = createStatement();
+
+        String[] columnNames = new String[2];
+        columnNames[0] = "I";
+        columnNames[1] = "S";
+        try {
+            stmt.executeUpdate("insert into tab1 values(2, 3, 4.1)",
+                    columnNames);
+            fail("FAIL -- executeUpdate should have failed...");
+        } catch (SQLException ex) {
+            assertFailedExecuteUpdate(ex);
+        }
+    }
+
+    /**
+     * Tests stmt.execute(String, int) with NO_GENERATED_KEYS.
+     * 
+     * @exception SQLException
+     *                if error occurs
+     */
+    public void testSelectNoGenKeys() throws SQLException {
+
+        Statement stmt = createStatement();
+        stmt.execute("select * from tab1", JDBC30Translation.NO_GENERATED_KEYS);
+        assertNull("Expected NULL ResultSet after stmt.execute()", stmt
+                .getGeneratedKeys());
+
+    }
+
+    /**
+     * After doing an insert into a table that doesn't have a generated column,
+     * the test should fail.
+     * 
+     * @throws SQLException
+     */
+    public void testExecuteNoAutoGenColumnIndex() throws SQLException {
+
+        Statement stmt = createStatement();
+
+        int[] columnIndexes = new int[2];
+        columnIndexes[0] = 1;
+        columnIndexes[1] = 2;
+        try {
+            stmt.execute("insert into tab1 values(2, 3, 4.1)", columnIndexes);
+            fail("FAIL -- executeUpdate should have failed...");
+        } catch (SQLException ex) {
+            assertFailedExecuteUpdate(ex);
+        }
+    }
+
+    /**
+     * Assert executeUpdate failed. There are different SQLStates for 
+     * client and server.
+     * 
+     * @param ex
+     */
+    private void assertFailedExecuteUpdate(SQLException ex) {
+        /*
+         * DERBY-2943 -- execute() and executeUpdate() return different
+         * SQLState in embedded and network client
+         * 
+         */
+        if (usingDerbyNetClient()) {
+            assertSQLState("0A000", ex);
+        } else {
+            assertSQLState("X0X0E", ex);
+        }
+    }
+
+    /**
+     * After doing an insert into a table that doesn't have a generated column,
+     * the test should fail.
+     * 
+     * @throws SQLException
+     */
+    public void testExecuteNoAutoGenColumnName() throws SQLException {
+
+        Statement stmt = createStatement();
+        
+            String[] columnNames = new String[2];
+            columnNames[0] = "I";
+            columnNames[1] = "S";
+            try {
+                stmt.executeUpdate("insert into tab1 values(2, 3, 4.1)",
+                        columnNames);
+                fail("FAIL -- executeUpdate should have failed...");
+            } catch (SQLException ex) {
+                assertFailedExecuteUpdate(ex);
+            }
+        
+    }
+
+    /**
+     * Testing stmt.getResultSetHoldability()
+     * 
+     * @throws SQLException
+     */
+    public void testGetResultSetHoldability() throws SQLException {
+
+        Statement stmt = createStatement();
+        assertEquals(ResultSet.HOLD_CURSORS_OVER_COMMIT, stmt
+                .getResultSetHoldability());
+
+    }
+
+    /**
+     * Testing stmt.getGeneratedKeys()
+     * 
+     * @throws SQLException
+     */
+    public void testGetGenerateKeys() throws SQLException {
+
+        Statement stmt = createStatement();
+        assertNull(stmt.getGeneratedKeys());
+
+    }
+}

Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/StatementJdbc30Test.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=560005&r1=560004&r2=560005
==============================================================================
--- 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 Thu Jul 26 14:45:38 2007
@@ -76,6 +76,7 @@
 		suite.addTest(AuthenticationTest.suite());
 		suite.addTest(DriverTest.suite());
 		suite.addTest(NullSQLTextTest.suite());
+		suite.addTest(StatementJdbc30Test.suite());
         suite.addTest(ClobTest.suite());
         suite.addTest(BlobUpdatableStreamTest.suite());
         suite.addTest(AIjdbcTest.suite());

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/build.xml
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/build.xml?view=diff&rev=560005&r1=560004&r2=560005
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/build.xml (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/build.xml Thu Jul 26 14:45:38 2007
@@ -111,7 +111,7 @@
       <exclude name="${this.dir}/AutoGenJDBC30Test.java"/>
       <exclude name="${this.dir}/dbMetaDataJdbc30.java"/>
       <exclude name="${this.dir}/ResultSetJDBC30Test.java"/>
-      <exclude name="${this.dir}/statementJdbc30.java"/>
+      <exclude name="${this.dir}/StatementJdbc30Test.java"/>
       <exclude name="${this.dir}/savepointJdbc30_JSR169.java"/>
       <exclude name="${this.dir}/savepointJdbc30_XA.java"/>
       <include name="${this.dir}/ParameterMetaDataJdbc30Test.java"/>
@@ -151,7 +151,7 @@
       <include name="${this.dir}/savepointJdbc30_XA.java"/>
       <include name="${this.dir}/ParameterMetaDataJdbc30Test.java"/>
       <include name="${this.dir}/ResultSetJDBC30Test.java"/>
-      <include name="${this.dir}/statementJdbc30.java"/>
+      <include name="${this.dir}/StatementJdbc30Test.java"/>
       <include name="${this.dir}/LobStreamsTest.java"/>
       <include name="${this.dir}/XATest.java"/>
       <include name="${this.dir}/XATransactionTest.java"/>