You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by re...@apache.org on 2014/01/23 17:11:13 UTC

svn commit: r1560720 - in /jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr: OakDocumentRDBRepositoryStub.java tck/TCKBase.java

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();



Re: svn commit: r1560720 - in /jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr: OakDocumentRDBRepositoryStub.java tck/TCKBase.java

Posted by Jukka Zitting <ju...@gmail.com>.
Hi,

On Fri, Jan 24, 2014 at 9:48 AM, Julian Reschke <ju...@gmx.de> wrote:
> a) tune the test,

Since it's a jackrabbit-core tests instead of one in the TCK, the
assumptions it makes are a bit more strict than what the spec would
require. But it would be fair for us to relax the test to allow the
getSize() to return also -1 instead of the expected number of results.

> b) tune the timeout,

A more accurate approach would probably be to raise the minimum number
of items to prefetch to something like 100, and make that limit
override the timeout (i.e. the timeout would kick in only after the
minimum prefetch count is reached). That would make the test fully
deterministic, but wouldn't work too well in practice for example for
a query that returns zero or just a few results but has to traverse
the entire repository to figure that out.

> c) mark the test is failing for now due to slow backend?

That would also be OK. Doing so would reflect the fact that the
behavior of getSize() in Oak is more relaxed than in Jackrabbit
Classic.

I'd go for c, as that's the easiest and least troublesome thing to do.

BR,

Jukka Zitting

Re: svn commit: r1560720 - in /jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr: OakDocumentRDBRepositoryStub.java tck/TCKBase.java

Posted by Julian Reschke <ju...@gmx.de>.
On 2014-01-23 17:58, Julian Reschke wrote:
> 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.
> ...

And that test is QueryResultTest#testGetSize, which assumes that the 
predefined timeout (100 ms I think) is sufficiently long to count a 
result set of 55 nodes, which currently fails for my backend (causing 
getSize() to return -1).

Do we want to:

a) tune the test,

b) tune the timeout,

c) mark the test is failing for now due to slow backend?

Best regards, Julian

Re: svn commit: r1560720 - in /jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr: OakDocumentRDBRepositoryStub.java tck/TCKBase.java

Posted by Julian Reschke <ju...@gmx.de>.
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, reschke@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();
>
>
>