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 2013/06/13 14:52:24 UTC

svn commit: r1492652 - in /db/derby/code/branches/10.10: ./ java/testing/org/apache/derbyTesting/functionTests/master/ java/testing/org/apache/derbyTesting/functionTests/suites/ java/testing/org/apache/derbyTesting/functionTests/tests/i18n/ java/testin...

Author: kmarsden
Date: Thu Jun 13 12:52:23 2013
New Revision: 1492652

URL: http://svn.apache.org/r1492652
Log:
DERBY-4035 i18n tests fail with Lexical error on z/os
merge from trunk ...
DERBY-6244
convert i18n/caseI_tr_TR.sql to JUnit
1489924

DERBY-6246 convert i18n/urlLocale.sql  to JUnit
1490716 
1491364 

DERBY-6255 convert i18n/messageLocale.sql to JUnit
1491542 
1491590
1492088

convert ieptestsnegative_ES and I18NImportExport
1492393


Added:
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/CaseI_tr_TRTest.java
      - copied unchanged from r1489924, db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/CaseI_tr_TRTest.java
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/I18NImportExport.java
      - copied unchanged from r1492393, db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/I18NImportExport.java
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/ImportExportProcedureESTest.java
      - copied unchanged from r1492393, db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/ImportExportProcedureESTest.java
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/UrlLocaleTest.java
      - copied, changed from r1490716, db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/UrlLocaleTest.java
Removed:
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/master/caseI_tr_TR.out
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/master/iepnegativetests_ES.out
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/master/messageLocale.out
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/master/urlLocale.out
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/suites/i18nTest.runall
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/I18NImportExport_app.properties
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/caseI_tr_TR.sql
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/caseI_tr_TR_app.properties
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/iepnegativetests_ES.sql
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/iepnegativetests_ES_app.properties
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/iepnegativetests_ES_sed.properties
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/messageLocale.sql
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/messageLocale_app.properties
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/urlLocale.sql
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/urlLocale_app.properties
Modified:
    db/derby/code/branches/10.10/   (props changed)
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/suites/derbyall.properties
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/_Suite.java
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/DriverTest.java
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/tools/ImportExportProcedureTest.java
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/junit/Decorator.java
    db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/junit/SupportFilesSetup.java

Propchange: db/derby/code/branches/10.10/
------------------------------------------------------------------------------
  Merged /db/derby/code/trunk:r1489924,1490716,1491005,1491364,1491542,1491590,1492088,1492393

Modified: db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/suites/derbyall.properties
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/suites/derbyall.properties?rev=1492652&r1=1492651&r2=1492652&view=diff
==============================================================================
--- db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/suites/derbyall.properties (original)
+++ db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/suites/derbyall.properties Thu Jun 13 12:52:23 2013
@@ -13,6 +13,6 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-suites=derbylang storeall xa derbytools jdbc20 derbynetclientmats encryptionAll simpledemo unit i18nTest
+suites=derbylang storeall xa derbytools jdbc20 derbynetclientmats encryptionAll simpledemo unit 
 derby.debug.true=enableBtreeConsistencyCheck
 derby.stream.error.logSeverityLevel=0

Copied: db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/UrlLocaleTest.java (from r1490716, db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/UrlLocaleTest.java)
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/UrlLocaleTest.java?p2=db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/UrlLocaleTest.java&p1=db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/UrlLocaleTest.java&r1=1490716&r2=1492652&rev=1492652&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/UrlLocaleTest.java (original)
+++ db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/UrlLocaleTest.java Thu Jun 13 12:52:23 2013
@@ -24,13 +24,16 @@ import java.net.MalformedURLException;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
+import java.sql.SQLWarning;
 import java.sql.Statement;
+import java.util.Locale;
 
 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.LocaleTestSetup;
 import org.apache.derbyTesting.junit.SupportFilesSetup;
 import org.apache.derbyTesting.junit.TestConfiguration;
 
@@ -68,8 +71,7 @@ public class UrlLocaleTest extends BaseJ
         s.executeUpdate("call checkRDefaultLoc()");
         
             // create a swiss database
-        String url = TestConfiguration.getCurrent().
-                getJDBCUrl(SupportFilesSetup.getReadWrite("swissdb").getPath());
+        String url = getReadWriteJDBCURL("swissdb");
         url += ";create=true;territory=fr_CH";
         Connection locConn = DriverManager.getConnection(url);
         createLocaleProcedures(locConn);
@@ -80,8 +82,7 @@ public class UrlLocaleTest extends BaseJ
         
         //-- create a Hindi in India database (hi_IN)
         
-        url = TestConfiguration.getCurrent().getJDBCUrl(
-                SupportFilesSetup.getReadWrite("hindi").getPath());
+        url = getReadWriteJDBCURL("hindi");
         url += ";create=true;territory=hi_IN";
         locConn = DriverManager.getConnection(url);
         createLocaleProcedures(locConn);
@@ -91,8 +92,7 @@ public class UrlLocaleTest extends BaseJ
         locConn.close();
        //- now try one with a variant
        // -- create a English in Israel database for JavaOS en_IL_JavaOS
-        url = TestConfiguration.getCurrent().
-                getJDBCUrl(SupportFilesSetup.getReadWrite("Israel").getPath());
+        url = getReadWriteJDBCURL("Israel");
         url += ";create=true;territory=en_IL_JavaOS";
         locConn = DriverManager.getConnection(url);
         createLocaleProcedures(locConn);
@@ -103,8 +103,7 @@ public class UrlLocaleTest extends BaseJ
         
         // now try with just a language - we support this
         // as some vms do.
-        url = TestConfiguration.getCurrent().
-                getJDBCUrl(SupportFilesSetup.getReadWrite("bacon").getPath());
+        url = getReadWriteJDBCURL("bacon");
         url += ";create=true;territory=da";
         locConn = DriverManager.getConnection(url);
         createLocaleProcedures(locConn);
@@ -122,29 +121,154 @@ public class UrlLocaleTest extends BaseJ
      */
     public void testUrlLocaleNegative() throws SQLException {
         //Connection without territory specified in territory attribute        
-        String url = TestConfiguration.getCurrent().getJDBCUrl("../extinout/fail1");
+        String url = getReadWriteJDBCURL("fail1");
         url += ";create=true;territory=";
-        testInvalidTerritoryFormat(url);
+        checkInvalidTerritoryFormat(url);
         //- database will not have been created so this connection will fail
-        url = TestConfiguration.getCurrent().getJDBCUrl("../extinout/fail1");
+        url = getReadWriteJDBCURL("fail1");
         try {
-            Connection locConn = DriverManager.getConnection(url);
+            DriverManager.getConnection(url);
             fail("Database connect " + url + " should fail because db does not exist");
         }    catch (SQLException se ) {   
             assertSQLState("XJ004", se);
           }
         //Invalid territory specification
-        testInvalidTerritoryFormat("en_");
-        testInvalidTerritoryFormat("en_d");
-        testInvalidTerritoryFormat("en-US");
+        checkInvalidTerritoryFormat("en_");
+        checkInvalidTerritoryFormat("en_d");
+        checkInvalidTerritoryFormat("en-US");
         
     }
 
-    private void testInvalidTerritoryFormat(String territory) {
+    /**
+     * Test valid message resolution for an unknown Locale.
+     * converted from i18n/messageLocale.sql
+     *
+     * This test case must run in a decorator that sets the locale to one
+     * that is not recognized by Derby.
+     */
+    public void messageLocale_unknown() throws SQLException {
+        String url = getReadWriteJDBCURL("rrTTdb");
+        url += ";create=true";
+        Connection locConn = DriverManager.getConnection(url);
+        Statement s = locConn.createStatement();
+        createLocaleProcedures(locConn);
+        // check this current database was created with the default locale rr_TT
+        s.executeUpdate("call checkDefaultLoc()");
+        // check database Locale
+        s.executeUpdate("call checkDatabaseLoc('rr_TT')");
+        // Expect an error in English because rr_TT has no translated messages.
+        // Language is determined by choosing a random word (that we hope 
+        // won't change) in the current 
+        try {
+            s.executeUpdate("create table t1 oops (i int)");
+        } catch (SQLException se) {
+            assertSQLState("42X01", se);
+            assertTrue("Expected English Message with \"Encountered\" " ,
+                      (se.getMessage().indexOf("Encountered") != -1));
+            
+        }
+        // Setup for warning
+        s.executeUpdate("create table t2 (i int)");
+        s.executeUpdate("create index i2_a on t2(i)");
+
+        // Expect WARNING to also be English. Index is a duplicate
+        s.executeUpdate("create index i2_b on t2(i)");
+        SQLWarning sqlw = s.getWarnings();
+        assertSQLState("01504", sqlw);
+        assertTrue("Expected English warning", 
+                sqlw.getMessage().indexOf("duplicate") != -1);
+        
+        s.close();
+        locConn.close();
+    }
+      
+    /**
+     * Test valid message resolution for German Locale.
+     * converted from i18n/messageLocale.sql
+     *
+     * This test case must run in a decorator that sets the default locale
+     * to Locale.GERMANY.
+     */
+    public void messageLocale_Germany() throws SQLException {
+        //create a database with a locale that has a small
+        // number of messages. Missing ones will default to
+        // the locale of the default locale: German;
+        String url = getReadWriteJDBCURL("qqPPdb");
+        url += ";create=true;territory=qq_PP_testOnly";
+        Connection locConn = DriverManager.getConnection(url);
+        Statement s = locConn.createStatement();
+        s.executeUpdate("create table t2 (i int)");
+        s.executeUpdate("create index i2_a on t2(i)");
+        // Error that is in qq_PP messages
         try {
-            String url = TestConfiguration.getCurrent().getJDBCUrl("../extinout/fail3");
+            s.executeUpdate("create table t1 oops (i int)");
+        } catch (SQLException se) {
+            assertSQLState("42X01", se);
+            assertTrue("Expected qq_PP Message with \"Encountered\" " ,
+                      (se.getMessage().indexOf("Encountered") != -1));
+            
+        }
+        
+        // Expect WARNING to be in German (default) because there is no 
+        //qq_PP message. Index is a duplicate
+        s.executeUpdate("create index i2_b on t2(i)");
+        SQLWarning sqlw = s.getWarnings();
+        assertSQLState("01504", sqlw);
+        assertTrue("Expected German warning with Duplikat", 
+                sqlw.getMessage().indexOf(" Duplikat") != -1);
+        
+        // Error from default German Locale as it does not exist in qq_PP
+        // from default locale (German);
+        try {
+            s.executeUpdate("drop table t3");
+        } catch (SQLException se) {
+            assertSQLState("42Y55", se);
+            assertTrue("Expected German Message with vorhanden"  ,
+                      (se.getMessage().indexOf("vorhanden") != -1));
+            
+        }
+        
+        //Now all English messages
+        url =  getReadWriteJDBCURL("enUSdb");
+        url += ";create=true;territory=en_US";
+        locConn = DriverManager.getConnection(url);
+        s = locConn.createStatement();
+        s.executeUpdate("create table t2 (i int)");
+        s.executeUpdate("create index i2_a on t2(i)");
+
+        try {
+            s.executeUpdate("create table t1 oops (i int)");
+        } catch (SQLException se) {
+            assertSQLState("42X01", se);
+            assertTrue("Expected English message with \"Encountered\" " ,
+                      (se.getMessage().indexOf("Encountered") != -1));
+            
+        }
+        
+        // Expect WARNING to be in English because it is English db
+        // Even though German default Locale still
+        s.executeUpdate("create index i2_b on t2(i)");
+         sqlw = s.getWarnings();
+        assertSQLState("01504", sqlw);
+        assertTrue("Expected English warning with duplicate", 
+                sqlw.getMessage().indexOf("duplicate") != -1);
+ 
+        try {
+            s.executeUpdate("drop table t3");
+        } catch (SQLException se) {
+            assertSQLState("42Y55", se);
+            assertTrue("Expected English Message with performed"  ,
+                      (se.getMessage().indexOf("performed") != -1));
+            
+        }
+        
+    }
+  
+    private void checkInvalidTerritoryFormat(String territory) {
+        try {
+            String url = getReadWriteJDBCURL("fail3");
             url += ";create=true;territory=" + territory;
-            Connection locConn = DriverManager.getConnection(url);
+            DriverManager.getConnection(url);
             fail("connection without territory: " + url + "should have failed");
         } catch (SQLException se ) {
           assertSQLState("XJ041", se);
@@ -152,6 +276,16 @@ public class UrlLocaleTest extends BaseJ
         }
     }
     
+    /**
+     * Get JDBC URL for database to be accessed in the read-write directory
+     * @param dbname short database name to be created 
+     * @return the JDBC URL for the database
+     */
+    private static String getReadWriteJDBCURL(String dbname)
+   {
+        return TestConfiguration.getCurrent().
+        getJDBCUrl(SupportFilesSetup.getReadWriteFileName(dbname));
+    }
     
     /**
      * Create procedures to test current territory value
@@ -167,12 +301,22 @@ public class UrlLocaleTest extends BaseJ
                     "style java language java external name " +
                     "'org.apache.derbyTesting.functionTests.tests.i18n." +
                     "DefaultLocale.checkRDefaultLocale'");
-
+        s.executeUpdate("create procedure checkDefaultLoc() parameter " +
+                "style java language java external name " +
+                "'org.apache.derbyTesting.functionTests.tests.i18n." +
+                "DefaultLocale.checkDefaultLocale'");
     }
     
     public static Test suite() {
         TestSuite suite = new TestSuite();
         suite.addTestSuite(UrlLocaleTest.class);
+        suite.addTest(new LocaleTestSetup(
+                new UrlLocaleTest("messageLocale_unknown"),
+                new Locale("rr", "TT")));
+        suite.addTest(new LocaleTestSetup(
+                new UrlLocaleTest("messageLocale_Germany"),
+                Locale.GERMANY));
+
         Test tsuite =  new CleanDatabaseTestSetup(suite) {
             /**
              * Creates the table used in the test cases.

Modified: db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/_Suite.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/_Suite.java?rev=1492652&r1=1492651&r2=1492652&view=diff
==============================================================================
--- db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/_Suite.java (original)
+++ db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/_Suite.java Thu Jun 13 12:52:23 2013
@@ -57,7 +57,10 @@ public class _Suite extends BaseTestCase
         suite.addTest(LocalizedAttributeScriptTest.suite());
         suite.addTest(LocalizedDisplayScriptTest.suite());
         suite.addTest(JapanCodeConversionTest.suite());
-
+        suite.addTest(CaseI_tr_TRTest.suite());
+        suite.addTest(UrlLocaleTest.suite());
+        suite.addTest(I18NImportExport.suite());
+        suite.addTest(ImportExportProcedureESTest.suite());
         return suite;
 	}
 }

Modified: db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/DriverTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/DriverTest.java?rev=1492652&r1=1492651&r2=1492652&view=diff
==============================================================================
--- db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/DriverTest.java (original)
+++ db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/DriverTest.java Thu Jun 13 12:52:23 2013
@@ -70,6 +70,7 @@ public class DriverTest extends BaseJDBC
         "testcreatedb1", 
         "testcreatedb2",
         "testcreatedb3",
+        "trailblank",
         "'wombat'"
     };
     
@@ -530,6 +531,22 @@ public class DriverTest extends BaseJDBC
         
         assertConnect(false, url, null);
         shutdownDB(shuturl, null);
+        
+        // Test trailing spaces - Beetle 4653. Moved from urlLocale.sql
+        url = TestConfiguration.getCurrent().getJDBCUrl("trailblank");
+        url += ";create=true";
+        assertConnect(false,url,null);
+        
+        // regular connection with trailing spaces
+        url = TestConfiguration.getCurrent().
+                getJDBCUrl("trailblank     ");
+        assertConnect(true, url, null);
+        
+        // shutdown with trailing spaces
+        url = TestConfiguration.getCurrent().
+                getJDBCUrl("trailblank     ");
+        url += ";shutdown=true";
+        shutdownDB(url,null);
     }
     
     /**

Modified: db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/tools/ImportExportProcedureTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/tools/ImportExportProcedureTest.java?rev=1492652&r1=1492651&r2=1492652&view=diff
==============================================================================
--- db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/tools/ImportExportProcedureTest.java (original)
+++ db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/functionTests/tests/tools/ImportExportProcedureTest.java Thu Jun 13 12:52:23 2013
@@ -42,7 +42,7 @@ import junit.framework.TestSuite;
  * Converted from ieptests.sql
  *
  */
-public final class ImportExportProcedureTest extends BaseJDBCTestCase {
+public class ImportExportProcedureTest extends BaseJDBCTestCase {
 
     /**
      * Public constructor required for running test as standalone JUnit.

Modified: db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/junit/Decorator.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/junit/Decorator.java?rev=1492652&r1=1492651&r2=1492652&view=diff
==============================================================================
--- db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/junit/Decorator.java (original)
+++ db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/junit/Decorator.java Thu Jun 13 12:52:23 2013
@@ -213,7 +213,7 @@ public class Decorator {
      * @param test Test to decorate
      * @return Decorated test
      */
-    private static Test attributesDatabase(
+    public static Test attributesDatabase(
             final Properties attributes, Test test)
     {
         test = new ChangeConfigurationSetup(test) {

Modified: db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/junit/SupportFilesSetup.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/junit/SupportFilesSetup.java?rev=1492652&r1=1492651&r2=1492652&view=diff
==============================================================================
--- db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/junit/SupportFilesSetup.java (original)
+++ db/derby/code/branches/10.10/java/testing/org/apache/derbyTesting/junit/SupportFilesSetup.java Thu Jun 13 12:52:23 2013
@@ -29,6 +29,8 @@ import java.net.URL;
 import java.security.AccessController;
 import java.security.PrivilegedActionException;
 
+import org.apache.derbyTesting.functionTests.util.PrivilegedFileOpsForTests;
+
 import junit.extensions.TestSetup;
 import junit.framework.Assert;
 import junit.framework.Test;
@@ -251,6 +253,17 @@ public class SupportFilesSetup extends T
         } 
     }
     /**
+     * Get the full name of the file.
+     * @param name short name of file
+     * @return absolute path of file in EXTINOUT
+     */
+    public static String getReadWriteFileName(final String name)
+    {
+        return 
+                PrivilegedFileOpsForTests.getAbsolutePath(getReadWrite(name));
+    }
+    
+    /**
      * Obtain a File for the local copy of a read-write resource.
      * @param name Base name for the resouce.
      */