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 ju...@apache.org on 2013/03/06 09:29:35 UTC
svn commit: r1453200 - in /jackrabbit/oak/trunk:
oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakSegmentMKRepositoryStub.java
oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/tck/TCKBase.java
oak-parent/pom.xml
Author: jukka
Date: Wed Mar 6 08:29:35 2013
New Revision: 1453200
URL: http://svn.apache.org/r1453200
Log:
OAK-624: Run Oak-Jcr tests using the SegmentMK
Run the TCK against the SegmentMK when MongoDB is available
Added:
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakSegmentMKRepositoryStub.java
Modified:
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/tck/TCKBase.java
jackrabbit/oak/trunk/oak-parent/pom.xml
Added: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakSegmentMKRepositoryStub.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakSegmentMKRepositoryStub.java?rev=1453200&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakSegmentMKRepositoryStub.java (added)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakSegmentMKRepositoryStub.java Wed Mar 6 08:29:35 2013
@@ -0,0 +1,137 @@
+/*
+ * 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.jackrabbit.oak.jcr;
+
+import java.security.Principal;
+import java.util.Properties;
+import java.util.concurrent.Executors;
+
+import javax.jcr.Credentials;
+import javax.jcr.GuestCredentials;
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.UnsupportedRepositoryOperationException;
+
+import org.apache.jackrabbit.oak.Oak;
+import org.apache.jackrabbit.oak.plugins.segment.MongoStore;
+import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore;
+import org.apache.jackrabbit.test.NotExecutableException;
+import org.apache.jackrabbit.test.RepositoryStub;
+
+import com.mongodb.Mongo;
+
+/**
+ * A repository stub implementation for Oak on MongoMK
+ */
+public class OakSegmentMKRepositoryStub extends RepositoryStub {
+
+ protected static final String HOST =
+ System.getProperty("mongo.host", "127.0.0.1");
+
+ protected static final int PORT =
+ Integer.getInteger("mongo.port", 27017);
+
+ protected static final String DB =
+ System.getProperty("segment.db", "SegmentMK");
+
+ private final Mongo connection;
+
+ private final Repository repository;
+
+ /**
+ * Constructor as required by the JCR TCK.
+ *
+ * @param settings repository settings
+ * @throws javax.jcr.RepositoryException If an error occurs.
+ */
+ public OakSegmentMKRepositoryStub(Properties settings) throws RepositoryException {
+ super(settings);
+
+ Session session = null;
+ try {
+ this.connection = new Mongo(HOST, PORT);
+ Jcr jcr = new Jcr(new Oak(new SegmentNodeStore(
+ new MongoStore(connection.getDB(DB), 100 * 1024 * 1024))));
+ jcr.with(Executors.newScheduledThreadPool(1));
+ this.repository = jcr.createRepository();
+
+ session = getRepository().login(superuser);
+ TestContentLoader loader = new TestContentLoader();
+ loader.loadTestContent(session);
+ } catch (Exception e) {
+ throw new RepositoryException(e);
+ } finally {
+ if (session != null) {
+ session.logout();
+ }
+ }
+ Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
+ @Override
+ public void run() {
+ connection.close();
+ }
+ }));
+ }
+
+ public static boolean isAvailable() {
+ try {
+ Mongo mongo = new Mongo(HOST, PORT);
+ try {
+ mongo.getDatabaseNames();
+ return true;
+ } finally {
+ mongo.close();
+ }
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+ /**
+ * Returns the configured repository instance.
+ *
+ * @return the configured repository instance.
+ */
+ @Override
+ public synchronized Repository getRepository() {
+ return repository;
+ }
+
+ @Override
+ public Credentials getReadOnlyCredentials() {
+ return new GuestCredentials();
+ }
+
+ @Override
+ public Principal getKnownPrincipal(Session session) throws RepositoryException {
+ throw new UnsupportedRepositoryOperationException();
+ }
+
+ private static final Principal UNKNOWN_PRINCIPAL = new Principal() {
+ @Override
+ public String getName() {
+ return "an_unknown_user";
+ }
+ };
+
+ @Override
+ public Principal getUnknownPrincipal(Session session) throws RepositoryException,
+ NotExecutableException {
+ return UNKNOWN_PRINCIPAL;
+ }
+}
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=1453200&r1=1453199&r2=1453200&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 Wed Mar 6 08:29:35 2013
@@ -19,8 +19,8 @@ package org.apache.jackrabbit.oak.jcr.tc
import java.lang.reflect.Field;
import java.util.Properties;
-import org.apache.jackrabbit.oak.jcr.OakMongoMKRepositoryStub;
import org.apache.jackrabbit.oak.jcr.OakRepositoryStub;
+import org.apache.jackrabbit.oak.jcr.OakSegmentMKRepositoryStub;
import org.apache.jackrabbit.test.AbstractJCRTest;
import org.apache.jackrabbit.test.RepositoryHelper;
import org.apache.jackrabbit.test.RepositoryHelperPool;
@@ -38,12 +38,16 @@ public abstract class TCKBase extends Te
super(name);
addTest(new Setup(OakRepositoryStub.class.getName()));
addTests();
- // OAK-588: CI builds take too long with MongoMK
- // -> disabled for now
- if (false && OakMongoMKRepositoryStub.isMongoDBAvailable()) {
- addTest(new Setup(OakMongoMKRepositoryStub.class.getName()));
+ if (OakSegmentMKRepositoryStub.isAvailable()) {
+ addTest(new Setup(OakSegmentMKRepositoryStub.class.getName()));
addTests();
}
+ // OAK-588: CI builds take too long with MongoMK
+ // -> disabled for now
+// if (OakMongoMKRepositoryStub.isMongoDBAvailable()) {
+// addTest(new Setup(OakMongoMKRepositoryStub.class.getName()));
+// addTests();
+// }
}
abstract protected void addTests();
Modified: jackrabbit/oak/trunk/oak-parent/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-parent/pom.xml?rev=1453200&r1=1453199&r2=1453200&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-parent/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-parent/pom.xml Wed Mar 6 08:29:35 2013
@@ -45,6 +45,7 @@
<mongo.port>27017</mongo.port>
<mongo.db>MongoMKDB</mongo.db>
<mongo.db2>MongoMKDB2</mongo.db2>
+ <segment.db>SegmentMK</segment.db>
<solr.version>4.0.0</solr.version>
</properties>
@@ -143,6 +144,7 @@
<mongo.port>${mongo.port}</mongo.port>
<mongo.db>${mongo.db}</mongo.db>
<mongo.db2>${mongo.db2}</mongo.db2>
+ <segment.db>${segment.db}</segment.db>
</systemPropertyVariables>
<redirectTestOutputToFile>true</redirectTestOutputToFile>
</configuration>