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 fr...@apache.org on 2016/05/19 12:49:57 UTC

svn commit: r1744563 - in /jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak: benchmark/BenchmarkRunner.java fixture/OakFixture.java fixture/OakRepositoryFixture.java fixture/SegmentTarFixture.java

Author: frm
Date: Thu May 19 12:49:57 2016
New Revision: 1744563

URL: http://svn.apache.org/viewvc?rev=1744563&view=rev
Log:
OAK-4328 - Add a fixture to choose between segment store implementations in the "benchmark" command

Added:
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/SegmentTarFixture.java   (with props)
Modified:
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/OakRepositoryFixture.java

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java?rev=1744563&r1=1744562&r2=1744563&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java Thu May 19 12:49:57 2016
@@ -166,6 +166,8 @@ public class BenchmarkRunner {
                         base.value(options), 256, cacheSize, mmap.value(options)),
                 OakRepositoryFixture.getTarWithBlobStore(
                         base.value(options), 256, cacheSize, mmap.value(options)),
+                OakRepositoryFixture.getSegmentTar(base.value(options), 256, cacheSize, mmap.value(options)),
+                OakRepositoryFixture.getSegmentTarWithBlobStore(base.value(options), 256, cacheSize, mmap.value(options)),
                 OakRepositoryFixture.getRDB(rdbjdbcuri.value(options), rdbjdbcuser.value(options),
                         rdbjdbcpasswd.value(options), rdbjdbctableprefix.value(options), 
                         dropDBAfterTest.value(options), cacheSize * MB) };

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java?rev=1744563&r1=1744562&r2=1744563&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/OakFixture.java Thu May 19 12:49:57 2016
@@ -52,6 +52,10 @@ public abstract class OakFixture {
     public static final String OAK_TAR = "Oak-Tar";
     public static final String OAK_TAR_FDS = "Oak-Tar-FDS";
 
+    public static final String OAK_SEGMENT_TAR = "Oak-Segment-Tar";
+
+    public static final String OAK_SEGMENT_TAR_FDS = "Oak-Segment-Tar-FDS";
+
 
     private final String name;
     protected final String unique;
@@ -324,6 +328,10 @@ public abstract class OakFixture {
         return new SegmentFixture(name, base, maxFileSizeMB, cacheSizeMB, memoryMapping, useBlobStore);
     }
 
+    public static OakFixture getSegmentTar(final String name, final File base, final int maxFileSizeMB, final int cacheSizeMB, final boolean memoryMapping, final boolean useBlobStore) {
+        return new SegmentTarFixture(name, base, maxFileSizeMB, cacheSizeMB, memoryMapping, useBlobStore);
+    }
+
     public static class SegmentFixture extends OakFixture {
         private FileStore[] stores;
         private BlobStoreFixture[] blobStoreFixtures = new BlobStoreFixture[0];
@@ -401,9 +409,9 @@ public abstract class OakFixture {
             return stores;
         }
     }
-    
-    private static Oak newOak(NodeStore nodeStore) {
-    	return new Oak(nodeStore).with(ManagementFactory.getPlatformMBeanServer());
+
+    static Oak newOak(NodeStore nodeStore) {
+        return new Oak(nodeStore).with(ManagementFactory.getPlatformMBeanServer());
     }    
 
 }

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/OakRepositoryFixture.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/OakRepositoryFixture.java?rev=1744563&r1=1744562&r2=1744563&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/OakRepositoryFixture.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/OakRepositoryFixture.java Thu May 19 12:49:57 2016
@@ -17,6 +17,7 @@
 package org.apache.jackrabbit.oak.fixture;
 
 import java.io.File;
+
 import javax.jcr.Repository;
 
 import org.apache.jackrabbit.api.JackrabbitRepository;
@@ -96,6 +97,13 @@ public class OakRepositoryFixture implem
         return new OakRepositoryFixture(OakFixture.getTar(OakFixture.OAK_TAR_FDS,base, maxFileSizeMB, cacheSizeMB, memoryMapping, true));
     }
 
+    public static RepositoryFixture getSegmentTar(File base, int maxFileSizeMB, int cacheSizeMB, boolean memoryMapping) {
+        return new OakRepositoryFixture(OakFixture.getSegmentTar(OakFixture.OAK_SEGMENT_TAR, base, maxFileSizeMB, cacheSizeMB, memoryMapping, false));
+    }
+
+    public static RepositoryFixture getSegmentTarWithBlobStore(File base, int maxFileSizeMB, int cacheSizeMB, boolean memoryMapping) {
+        return new OakRepositoryFixture(OakFixture.getSegmentTar(OakFixture.OAK_SEGMENT_TAR_FDS, base, maxFileSizeMB, cacheSizeMB, memoryMapping, true));
+    }
 
     private final OakFixture oakFixture;
     private Repository[] cluster;

Added: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/SegmentTarFixture.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/SegmentTarFixture.java?rev=1744563&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/SegmentTarFixture.java (added)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/SegmentTarFixture.java Thu May 19 12:49:57 2016
@@ -0,0 +1,113 @@
+/*
+ * 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.fixture;
+
+import java.io.File;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.jackrabbit.oak.Oak;
+import org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState;
+import org.apache.jackrabbit.oak.segment.SegmentNodeStore;
+import org.apache.jackrabbit.oak.segment.SegmentStore;
+import org.apache.jackrabbit.oak.segment.file.FileStore;
+import org.apache.jackrabbit.oak.spi.blob.BlobStore;
+
+class SegmentTarFixture extends OakFixture {
+
+    private FileStore[] stores;
+
+    private BlobStoreFixture[] blobStoreFixtures = new BlobStoreFixture[0];
+
+    private final File base;
+
+    private final int maxFileSizeMB;
+
+    private final int cacheSizeMB;
+
+    private final boolean memoryMapping;
+
+    private final boolean useBlobStore;
+
+    public SegmentTarFixture(String name, File base, int maxFileSizeMB, int cacheSizeMB, boolean memoryMapping, boolean useBlobStore) {
+        super(name);
+        this.base = base;
+        this.maxFileSizeMB = maxFileSizeMB;
+        this.cacheSizeMB = cacheSizeMB;
+        this.memoryMapping = memoryMapping;
+        this.useBlobStore = useBlobStore;
+    }
+
+    @Override
+    public Oak getOak(int clusterId) throws Exception {
+        FileStore fs = FileStore.builder(base)
+                .withMaxFileSize(maxFileSizeMB)
+                .withCacheSize(cacheSizeMB)
+                .withMemoryMapping(memoryMapping)
+                .build();
+        return newOak(SegmentNodeStore.builder(fs).build());
+    }
+
+    @Override
+    public Oak[] setUpCluster(int n) throws Exception {
+        Oak[] cluster = new Oak[n];
+        stores = new FileStore[cluster.length];
+        if (useBlobStore) {
+            blobStoreFixtures = new BlobStoreFixture[cluster.length];
+        }
+
+        for (int i = 0; i < cluster.length; i++) {
+            BlobStore blobStore = null;
+            if (useBlobStore) {
+                blobStoreFixtures[i] = BlobStoreFixture.create(base, true);
+                blobStore = blobStoreFixtures[i].setUp();
+            }
+
+            FileStore.Builder builder = FileStore.builder(new File(base, unique));
+            if (blobStore != null) {
+                builder.withBlobStore(blobStore);
+            }
+            stores[i] = builder.withRoot(EmptyNodeState.EMPTY_NODE)
+                    .withMaxFileSize(maxFileSizeMB)
+                    .withCacheSize(cacheSizeMB)
+                    .withMemoryMapping(memoryMapping)
+                    .build();
+            cluster[i] = newOak(SegmentNodeStore.builder(stores[i]).build());
+        }
+        return cluster;
+    }
+
+    @Override
+    public void tearDownCluster() {
+        for (SegmentStore store : stores) {
+            store.close();
+        }
+        for (BlobStoreFixture blobStore : blobStoreFixtures) {
+            blobStore.tearDown();
+        }
+        FileUtils.deleteQuietly(new File(base, unique));
+    }
+
+    public BlobStoreFixture[] getBlobStoreFixtures() {
+        return blobStoreFixtures;
+    }
+
+    public FileStore[] getStores() {
+        return stores;
+    }
+
+}

Propchange: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/SegmentTarFixture.java
------------------------------------------------------------------------------
    svn:eol-style = native