You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jd...@apache.org on 2012/11/21 21:11:01 UTC

svn commit: r1412266 - /lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDIHJdbcTestCase.java

Author: jdyer
Date: Wed Nov 21 20:11:00 2012
New Revision: 1412266

URL: http://svn.apache.org/viewvc?rev=1412266&view=rev
Log:
SOLR-2045: workaround for Locales not supported by Derby

Modified:
    lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDIHJdbcTestCase.java

Modified: lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDIHJdbcTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDIHJdbcTestCase.java?rev=1412266&r1=1412265&r2=1412266&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDIHJdbcTestCase.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/AbstractDIHJdbcTestCase.java Wed Nov 21 20:11:00 2012
@@ -22,14 +22,17 @@ import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
 import java.sql.Statement;
+import java.util.Locale;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import junit.framework.Assert;
 
+import org.apache.derby.iapi.error.StandardException;
 import org.apache.solr.request.LocalSolrQueryRequest;
 import org.junit.After;
 import org.junit.AfterClass;
+import org.junit.Assume;
 import org.junit.Before;
 import org.junit.BeforeClass;
 
@@ -45,9 +48,11 @@ public abstract class AbstractDIHJdbcTes
     RANDOM, DERBY, HSQLDB
   }
   
+  protected boolean skipThisTest = false;
+  
   private static final Pattern totalRequestsPattern = Pattern
       .compile(".str name..Total Requests made to DataSource..(\\d+)..str.");
-  
+    
   @BeforeClass
   public static void beforeClassDihJdbcTest() throws Exception {
     try {
@@ -78,7 +83,8 @@ public abstract class AbstractDIHJdbcTes
   }
   
   @Before
-  public void beforeDihJdbcTest() throws Exception {    
+  public void beforeDihJdbcTest() throws Exception {  
+    skipThisTest = false;
     dbToUse = setAllowedDatabases();
     if (dbToUse == Database.RANDOM) {
       if (random().nextBoolean()) {
@@ -113,7 +119,9 @@ public abstract class AbstractDIHJdbcTes
         s.executeUpdate("shutdown");
       }
     } catch (SQLException e) {
-      throw e;
+      if(!skipThisTest) {
+        throw e;
+      }
     } finally {
       try {
         s.close();
@@ -145,10 +153,26 @@ public abstract class AbstractDIHJdbcTes
         throw new AssertionError("Invalid database to use: " + dbToUse);
       }
       populateData(conn);
-    } catch (Exception e) {
-      throw e;
+    } catch (SQLException sqe) {
+      Throwable cause = sqe;
+      while(cause.getCause()!=null) {
+        cause = cause.getCause();
+      }
+      String message = cause.getMessage();
+      if(cause instanceof StandardException) {
+        message = ((StandardException) cause).getMessageId();
+      }
+      //Derby INVALID_LOCALE_DESCRIPTION
+      if("XBM0X.D".equals(message)) {
+        log.warn("Skipping test because Database " + dbToUse + " does not support the locale " + Locale.getDefault());
+        skipThisTest = true;
+        Assume.assumeNoException(sqe); 
+        throw sqe;
+      }      
     } finally {
-      
+      try {
+        conn.close();
+      } catch (Exception e1) {}
     }
   }