Author: mreutegg
Date: Tue Apr 16 12:03:39 2019
New Revision: 1857646
URL: http://svn.apache.org/viewvc?rev=1857646&view=rev
Log:
OAK-8185: Improve CompositeNodeStore fixture
Merged revision 1857640 from trunk
Modified:
jackrabbit/oak/branches/1.10/ (props changed)
jackrabbit/oak/branches/1.10/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/CompositeStoreFixture.java
Propchange: jackrabbit/oak/branches/1.10/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Apr 16 12:03:39 2019
@@ -1,3 +1,3 @@
/jackrabbit/oak/branches/1.0:1665962
-/jackrabbit/oak/trunk:1850874,1850882,1851236,1851253,1851451,1851533-1851535,1851619,1852052,1852084,1852120,1852451,1852492-1852493,1852528,1852582,1852584,1852601,1852920,1853141,1853229,1853393,1853429,1853433,1853441,1853866,1853868,1853870,1853893,1853969,1853997,1854034,1854044,1854055,1854058,1854113,1854373,1854377,1854380,1854385,1854401,1854403,1854455,1854461-1854462,1854466,1854468,1854515,1854533,1854539,1854701,1854773-1854774,1854827,1854848,1854859,1854930,1854990-1854991,1855032,1855221,1855477-1855478,1855776,1857010,1857104,1857159,1857212,1857221,1857238,1857247,1857253,1857294,1857314,1857577,1857635,1857638
+/jackrabbit/oak/trunk:1850874,1850882,1851236,1851253,1851451,1851533-1851535,1851619,1852052,1852084,1852120,1852451,1852492-1852493,1852528,1852582,1852584,1852601,1852920,1853141,1853229,1853393,1853429,1853433,1853441,1853866,1853868,1853870,1853893,1853969,1853997,1854034,1854044,1854055,1854058,1854113,1854373,1854377,1854380,1854385,1854401,1854403,1854455,1854461-1854462,1854466,1854468,1854515,1854533,1854539,1854701,1854773-1854774,1854827,1854848,1854859,1854930,1854990-1854991,1855032,1855221,1855477-1855478,1855776,1857010,1857104,1857159,1857212,1857221,1857238,1857247,1857253,1857294,1857314,1857577,1857635,1857638,1857640
/jackrabbit/trunk:1345480
Modified:
jackrabbit/oak/branches/1.10/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/CompositeStoreFixture.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.10/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/CompositeStoreFixture.java?rev=1857646&r1=1857645&r2=1857646&view=diff
==============================================================================
---
jackrabbit/oak/branches/1.10/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/CompositeStoreFixture.java
(original)
+++
jackrabbit/oak/branches/1.10/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/fixture/CompositeStoreFixture.java
Tue Apr 16 12:03:39 2019
@@ -19,6 +19,13 @@ package org.apache.jackrabbit.oak.fixtur
import org.apache.jackrabbit.oak.Oak;
import org.apache.jackrabbit.oak.composite.CompositeNodeStore;
+import org.apache.jackrabbit.oak.composite.InitialContentMigrator;
+import org.apache.jackrabbit.oak.composite.checks.MountedNodeStoreChecker;
+import
org.apache.jackrabbit.oak.composite.checks.NamespacePrefixNodestoreChecker;
+import org.apache.jackrabbit.oak.composite.checks.NodeStoreChecksService;
+import
org.apache.jackrabbit.oak.composite.checks.NodeTypeDefinitionNodeStoreChecker;
+import
org.apache.jackrabbit.oak.composite.checks.NodeTypeMountedNodeStoreChecker;
+import org.apache.jackrabbit.oak.composite.checks.UniqueIndexNodeStoreChecker;
import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
import org.apache.jackrabbit.oak.plugins.document.util.MongoConnection;
import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
@@ -26,15 +33,19 @@ import org.apache.jackrabbit.oak.segment
import org.apache.jackrabbit.oak.segment.file.FileStore;
import org.apache.jackrabbit.oak.segment.file.FileStoreBuilder;
import org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException;
+import org.apache.jackrabbit.oak.spi.mount.MountInfoProvider;
import org.apache.jackrabbit.oak.spi.mount.Mounts;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
import org.apache.jackrabbit.oak.stats.StatisticsProvider;
import java.io.File;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
import com.mongodb.MongoClientURI;
+import static java.util.Arrays.asList;
import static
org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentNodeStoreBuilder.newMongoDocumentNodeStoreBuilder;
import static
org.apache.jackrabbit.oak.segment.file.FileStoreBuilder.fileStoreBuilder;
@@ -44,6 +55,15 @@ abstract class CompositeStoreFixture ext
private final int pathsPerMount;
+ private static final MountInfoProvider MOUNT_INFO_PROVIDER =
Mounts.newBuilder()
+ .mount("libs", true, asList(
+ "/oak:index/*$" // pathsSupportingFragments
+ ), asList(
+ "/libs", // mountedPaths
+ "/apps",
+
"/jcr:system/rep:permissionStore/oak:mount-libs-crx.default"))
+ .build();
+
private CompositeStoreFixture(String name, int mounts, int pathsPerMount) {
super(name);
this.mounts = mounts;
@@ -127,25 +147,34 @@ abstract class CompositeStoreFixture ext
};
}
+ protected abstract NodeStore getNodeStore() throws IOException,
InvalidFileStoreVersionException;
+
@Override
public Oak getOak(int clusterId) throws Exception {
- NodeStore nodeStore = getNodeStore();
- Mounts.Builder mip = Mounts.newBuilder();
- for (int i = 0; i < mounts; i++) {
- String[] paths = new String[pathsPerMount];
- for (int j = 0; j < pathsPerMount; j++) {
- paths[j] = String.format("/mount-%d-path-%d", i, j);
- }
- mip.readOnlyMount("custom-mount-" + i, paths);
- }
- CompositeNodeStore.Builder builder = new
CompositeNodeStore.Builder(mip.build(), nodeStore);
- for (int i = 0; i < mounts; i++) {
- builder.addMount("custom-mount-" + i, nodeStore);
- }
- return new Oak(builder.build());
+ MemoryNodeStore seed = new MemoryNodeStore();
+ Oak oakSeed = new Oak(seed);
+ populateSeed(oakSeed);
+
+ NodeStore global = getNodeStore();
+ new InitialContentMigrator(global, seed,
MOUNT_INFO_PROVIDER.getMountByName("libs")).migrate();
+
+ List<MountedNodeStoreChecker<?>> checkerList = new ArrayList<>();
+ checkerList.add(new NamespacePrefixNodestoreChecker());
+ checkerList.add(new NodeTypeDefinitionNodeStoreChecker());
+ checkerList.add(new NodeTypeMountedNodeStoreChecker());
+ checkerList.add(new UniqueIndexNodeStoreChecker());
+
+ NodeStore composite = new
CompositeNodeStore.Builder(MOUNT_INFO_PROVIDER, global)
+ .addMount("libs", seed)
+ .with(new NodeStoreChecksService(MOUNT_INFO_PROVIDER,
checkerList))
+ .build();
+ return new Oak(composite);
}
- protected abstract NodeStore getNodeStore() throws IOException,
InvalidFileStoreVersionException;
+ // this method allows to populate the /apps and /libs subtrees, which
becomes
+ // immutable after the composite node store is created
+ private void populateSeed(Oak oakSeed) {
+ }
@Override
public Oak[] setUpCluster(int n, StatisticsProvider statsProvider) throws
Exception {