Author: mreutegg Date: Thu Jan 11 13:54:28 2018 New Revision: 1820881 URL: http://svn.apache.org/viewvc?rev=1820881&view=rev Log: OAK-7107: Ability to run AbstractJCRTest derived tests with different fixtures
Added: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/BaseRepositoryStub.java - copied, changed from r1820880, jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakRepositoryStub.java jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakRepositoryStub.java (with props) Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakDocumentMemRepositoryStub.java 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/OakMongoNSRepositoryStub.java jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakSegmentTarRepositoryStub.java jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakTarMKRepositoryStub.java jackrabbit/oak/trunk/oak-jcr/src/test/resources/repositoryStubImpl.properties Copied: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/BaseRepositoryStub.java (from r1820880, jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakRepositoryStub.java) URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/BaseRepositoryStub.java?p2=jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/BaseRepositoryStub.java&p1=jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakRepositoryStub.java&r1=1820880&r2=1820881&rev=1820881&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakRepositoryStub.java (original) +++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/BaseRepositoryStub.java Thu Jan 11 13:54:28 2018 @@ -33,7 +33,7 @@ import org.apache.jackrabbit.test.Reposi /** * Base RepositoryStub for the Oak Repository */ -abstract class OakRepositoryStub extends RepositoryStub { +abstract class BaseRepositoryStub extends RepositoryStub { private static final Principal UNKNOWN_PRINCIPAL = new Principal() { @Override @@ -42,7 +42,7 @@ abstract class OakRepositoryStub extends } }; - protected OakRepositoryStub(Properties env) { + protected BaseRepositoryStub(Properties env) { super(env); } Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakDocumentMemRepositoryStub.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakDocumentMemRepositoryStub.java?rev=1820881&r1=1820880&r2=1820881&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakDocumentMemRepositoryStub.java (original) +++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakDocumentMemRepositoryStub.java Thu Jan 11 13:54:28 2018 @@ -27,7 +27,7 @@ import org.apache.jackrabbit.test.Reposi /** * A repository stub using the DocumentNodeStore with an in-memory DocumentStore. */ -public class OakDocumentMemRepositoryStub extends OakRepositoryStub { +public class OakDocumentMemRepositoryStub extends BaseRepositoryStub { private final Repository repository; 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=1820881&r1=1820880&r2=1820881&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 11 13:54:28 2018 @@ -33,7 +33,7 @@ import org.apache.jackrabbit.oak.plugins /** * A repository stub implementation for the RDB document store. */ -public class OakDocumentRDBRepositoryStub extends OakRepositoryStub { +public class OakDocumentRDBRepositoryStub extends BaseRepositoryStub { protected static final String URL = System.getProperty("rdb.jdbc-url", "jdbc:h2:file:./{fname}oaktest;DB_CLOSE_ON_EXIT=FALSE"); Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakMongoNSRepositoryStub.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakMongoNSRepositoryStub.java?rev=1820881&r1=1820880&r2=1820881&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakMongoNSRepositoryStub.java (original) +++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakMongoNSRepositoryStub.java Thu Jan 11 13:54:28 2018 @@ -28,7 +28,7 @@ import org.apache.jackrabbit.oak.plugins /** * A repository stub using the DocumentNodeStore. */ -public class OakMongoNSRepositoryStub extends OakRepositoryStub { +public class OakMongoNSRepositoryStub extends BaseRepositoryStub { static { MongoConnection c = MongoUtils.getConnection(); Added: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakRepositoryStub.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakRepositoryStub.java?rev=1820881&view=auto ============================================================================== --- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakRepositoryStub.java (added) +++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakRepositoryStub.java Thu Jan 11 13:54:28 2018 @@ -0,0 +1,81 @@ +/* + * 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 javax.jcr.Repository; +import javax.jcr.RepositoryException; +import javax.jcr.Session; + +import com.google.common.collect.Iterables; + +import org.apache.jackrabbit.oak.commons.FixturesHelper.Fixture; +import org.apache.jackrabbit.test.NotExecutableException; +import org.apache.jackrabbit.test.RepositoryStub; +import org.apache.jackrabbit.test.RepositoryStubException; + +import static org.apache.jackrabbit.oak.commons.FixturesHelper.getFixtures; + +/** + * A generic Oak repository stub implementation that delegates to a specific + * backend configured using the fixtures mechanism. + */ +public class OakRepositoryStub extends BaseRepositoryStub { + + private final RepositoryStub delegate; + + public OakRepositoryStub(Properties env) throws RepositoryException { + super(env); + this.delegate = newDelegate(env); + } + + @Override + public Repository getRepository() throws RepositoryStubException { + return delegate.getRepository(); + } + + @Override + public Principal getKnownPrincipal(Session session) + throws RepositoryException { + return delegate.getKnownPrincipal(session); + } + + @Override + public Principal getUnknownPrincipal(Session session) + throws RepositoryException, NotExecutableException { + return delegate.getUnknownPrincipal(session); + } + + private static RepositoryStub newDelegate(Properties settings) + throws RepositoryException { + // use first fixture for stub with segment-tar as default + Fixture f = Iterables.getFirst(getFixtures(), Fixture.SEGMENT_TAR); + if (f == Fixture.DOCUMENT_MEM) { + return new OakDocumentMemRepositoryStub(settings); + } else if (f == Fixture.DOCUMENT_RDB) { + return new OakDocumentRDBRepositoryStub(settings); + } else if (f == Fixture.DOCUMENT_NS) { + return new OakMongoNSRepositoryStub(settings); + } else if (f == Fixture.SEGMENT_MK) { + return new OakTarMKRepositoryStub(settings); + } else { + return new OakSegmentTarRepositoryStub(settings); + } + } +} \ No newline at end of file Propchange: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakRepositoryStub.java ------------------------------------------------------------------------------ svn:eol-style = native Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakSegmentTarRepositoryStub.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakSegmentTarRepositoryStub.java?rev=1820881&r1=1820880&r2=1820881&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakSegmentTarRepositoryStub.java (original) +++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakSegmentTarRepositoryStub.java Thu Jan 11 13:54:28 2018 @@ -31,7 +31,7 @@ import org.apache.jackrabbit.oak.segment /** * A repository stub implementation for Oak Segment Tar */ -public class OakSegmentTarRepositoryStub extends OakRepositoryStub { +public class OakSegmentTarRepositoryStub extends BaseRepositoryStub { private final FileStore store; Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakTarMKRepositoryStub.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakTarMKRepositoryStub.java?rev=1820881&r1=1820880&r2=1820881&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakTarMKRepositoryStub.java (original) +++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakTarMKRepositoryStub.java Thu Jan 11 13:54:28 2018 @@ -32,7 +32,7 @@ import org.apache.jackrabbit.oak.segment * @deprecated Use {@link OakSegmentTarRepositoryStub} instead. */ @Deprecated -public class OakTarMKRepositoryStub extends OakRepositoryStub { +public class OakTarMKRepositoryStub extends BaseRepositoryStub { private final FileStore store; Modified: jackrabbit/oak/trunk/oak-jcr/src/test/resources/repositoryStubImpl.properties URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/resources/repositoryStubImpl.properties?rev=1820881&r1=1820880&r2=1820881&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-jcr/src/test/resources/repositoryStubImpl.properties (original) +++ jackrabbit/oak/trunk/oak-jcr/src/test/resources/repositoryStubImpl.properties Thu Jan 11 13:54:28 2018 @@ -14,7 +14,7 @@ # limitations under the License. # Stub implementation class -javax.jcr.tck.repository_stub_impl=org.apache.jackrabbit.oak.jcr.OakSegmentTarRepositoryStub +javax.jcr.tck.repository_stub_impl=org.apache.jackrabbit.oak.jcr.OakRepositoryStub # credential configuration javax.jcr.tck.superuser.name=admin