OK,

with this commit the TCK tests can now run against the Relation DB (RDB) Document Store. Right now the only DB tested is H2.

To enable this, pass the JDBC URL of the DB into "rdb.jdbc-url", for instance

 mvn test -Drdb.jdbc-url=jdbc:h2:mem:oaknodes

Right now I'm getting one test failure in the query tests which I haven't looked at yet in detail.

Best regards, Julian


On 2014-01-23 17:11, resc...@apache.org wrote:
Author: reschke
Date: Thu Jan 23 16:11:13 2014
New Revision: 1560720

URL: http://svn.apache.org/r1560720
Log:
OAK-1266 - optionally allow TCK based tests to execute the RDB persistence

Modified:
     
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakDocumentRDBRepositoryStub.java
     
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/tck/TCKBase.java

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakDocumentRDBRepositoryStub.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakDocumentRDBRepositoryStub.java?rev=1560720&r1=1560719&r2=1560720&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakDocumentRDBRepositoryStub.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakDocumentRDBRepositoryStub.java
 Thu Jan 23 16:11:13 2014
@@ -17,6 +17,9 @@
  package org.apache.jackrabbit.oak.jcr;

  import java.security.Principal;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
  import java.util.Properties;

  import javax.jcr.Credentials;
@@ -36,7 +39,7 @@ import org.apache.jackrabbit.test.Reposi
   */
  public class OakDocumentRDBRepositoryStub extends RepositoryStub {

-    protected static final String URL = System.getProperty("rdb.jdbc-url", 
"jdbc:h2:mem:oaknodes");
+    protected static final String URL = System.getProperty("rdb.jdbc-url", 
""); // such as: jdbc:h2:mem:oaknodes

      protected static final String USERNAME = System.getProperty("rdb.jcbc-user", 
"sa");

@@ -86,6 +89,18 @@ public class OakDocumentRDBRepositoryStu
          return jcr.createRepository();
      }

+    public static boolean isAvailable() {
+        try {
+            Connection c = DriverManager.getConnection(URL, USERNAME, PASSWD);
+            c.close();
+            return true;
+        }
+        catch (SQLException ex) {
+            // expected
+            return false;
+        }
+    }
+
      /**
       * Returns the configured repository instance.
       *

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/tck/TCKBase.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/tck/TCKBase.java?rev=1560720&r1=1560719&r2=1560720&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/tck/TCKBase.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/tck/TCKBase.java
 Thu Jan 23 16:11:13 2014
@@ -23,6 +23,7 @@ import java.util.List;
  import java.util.Map;
  import java.util.Properties;

+import org.apache.jackrabbit.oak.jcr.OakDocumentRDBRepositoryStub;
  import org.apache.jackrabbit.oak.jcr.OakMongoMKRepositoryStub;
  import org.apache.jackrabbit.oak.jcr.OakSegmentMKRepositoryStub;
  import org.apache.jackrabbit.oak.jcr.OakTarMKRepositoryStub;
@@ -54,7 +55,9 @@ public abstract class TCKBase extends Te
          if (OakMongoMKRepositoryStub.isMongoDBAvailable()) {
              Setup.wrap(this, OakMongoMKRepositoryStub.class.getName());
          }
-        // Setup.wrap(this, OakDocumentRDBRepositoryStub.class.getName());
+        if (OakDocumentRDBRepositoryStub.isAvailable()) {
+            Setup.wrap(this, OakDocumentRDBRepositoryStub.class.getName());
+        }
      }

      abstract protected void addTests();




Reply via email to