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/02/19 15:15:50 UTC

svn commit: r1447728 - in /jackrabbit/oak/trunk/oak-run: pom.xml src/main/java/org/apache/jackrabbit/oak/benchmark/Benchmark.java src/main/java/org/apache/jackrabbit/oak/fixture/OakRepositoryFixture.java

Author: jukka
Date: Tue Feb 19 14:15:50 2013
New Revision: 1447728

URL: http://svn.apache.org/r1447728
Log:
OAK-641: Improved benchmark tooling

Add more Oak fixtures

Modified:
    jackrabbit/oak/trunk/oak-run/pom.xml
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/Benchmark.java
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/OakRepositoryFixture.java

Modified: jackrabbit/oak/trunk/oak-run/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/pom.xml?rev=1447728&r1=1447727&r2=1447728&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-run/pom.xml Tue Feb 19 14:15:50 2013
@@ -120,11 +120,21 @@
       <version>${project.version}</version>
     </dependency>
     <dependency>
+      <groupId>org.apache.jackrabbit</groupId>
+      <artifactId>oak-mongomk</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
       <groupId>com.h2database</groupId>
       <artifactId>h2</artifactId>
       <version>1.3.158</version>
     </dependency>
     <dependency>
+      <groupId>org.mongodb</groupId>
+      <artifactId>mongo-java-driver</artifactId>
+      <version>2.7.1</version>
+    </dependency>
+    <dependency>
       <groupId>org.apache.jackrabbit</groupId>
       <artifactId>jackrabbit-jcr-server</artifactId>
       <version>${jackrabbit.version}</version>

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/Benchmark.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/Benchmark.java?rev=1447728&r1=1447727&r2=1447728&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/Benchmark.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/Benchmark.java Tue Feb 19 14:15:50 2013
@@ -36,7 +36,11 @@ public class Benchmark {
     private static final Map<String, RepositoryFixture> FIXTURES =
             ImmutableMap.<String, RepositoryFixture>builder()
             .put("Jackrabbit", new JackrabbitRepositoryFixture())
-            .put("Oak-Memory", new OakRepositoryFixture())
+            .put("Oak-Memory", OakRepositoryFixture.getMemory())
+            .put("Oak-Default", OakRepositoryFixture.getDefault())
+            .put("Oak-Mongo", OakRepositoryFixture.getMongo())
+            .put("Oak-NewMongo", OakRepositoryFixture.getNewMongo())
+            .put("Oak-Segment", OakRepositoryFixture.getSegment())
             .build();
 
     private static final Map<String, AbstractTest> TESTS =

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=1447728&r1=1447727&r2=1447728&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 Tue Feb 19 14:15:50 2013
@@ -16,25 +16,142 @@
  */
 package org.apache.jackrabbit.oak.fixture;
 
+import java.io.File;
+
 import javax.jcr.Repository;
 
+import org.apache.commons.io.FileUtils;
+import org.apache.jackrabbit.mk.api.MicroKernel;
+import org.apache.jackrabbit.mk.core.MicroKernelImpl;
+import org.apache.jackrabbit.mongomk.impl.MongoConnection;
+import org.apache.jackrabbit.mongomk.impl.MongoMicroKernel;
+import org.apache.jackrabbit.mongomk.impl.MongoNodeStore;
+import org.apache.jackrabbit.mongomk.impl.blob.MongoBlobStore;
+import org.apache.jackrabbit.mongomk.prototype.MongoMK;
 import org.apache.jackrabbit.oak.Oak;
 import org.apache.jackrabbit.oak.jcr.Jcr;
+import org.apache.jackrabbit.oak.plugins.segment.MongoStore;
+import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore;
+import org.apache.jackrabbit.oak.plugins.segment.SegmentStore;
+
+import com.mongodb.Mongo;
+
+public abstract class OakRepositoryFixture implements RepositoryFixture {
+
+    public static RepositoryFixture getMemory() {
+        return new OakRepositoryFixture() {
+            @Override
+            public void setUpCluster(Repository[] cluster) throws Exception {
+                MicroKernel kernel = new MicroKernelImpl();
+                for (int i = 0; i < cluster.length; i++) {
+                    Oak oak = new Oak(kernel);
+                    cluster[i] = new Jcr(oak).createRepository();
+                }
+            }
+        };
+    }
+
+    public static RepositoryFixture getDefault() {
+        return new OakRepositoryFixture() {
+            private File file = new File("oak-benchmark-microkernel");
+            private MicroKernelImpl[] kernels;
+            @Override
+            public void setUpCluster(Repository[] cluster) throws Exception {
+                kernels = new MicroKernelImpl[cluster.length];
+                for (int i = 0; i < cluster.length; i++) {
+                    kernels[i] = new MicroKernelImpl(file.getName());
+                    cluster[i] = new Jcr(kernels[i]).createRepository();
+                }
+            }
+            @Override
+            public void tearDownCluster(Repository[] cluster) {
+                for (MicroKernelImpl kernel : kernels) {
+                    kernel.dispose();
+                }
+                FileUtils.deleteQuietly(file);
+            }
+        };
+    }
 
-public class OakRepositoryFixture implements RepositoryFixture {
+    public static RepositoryFixture getMongo() {
+        return new OakRepositoryFixture() {
+            private MongoConnection mongo;
+            private MongoMicroKernel[] kernels;
+            @Override
+            public void setUpCluster(Repository[] cluster) throws Exception {
+                mongo = new MongoConnection(
+                        "127.0.0.1", 27017, "oak-benchmark-mongo");
+                kernels = new MongoMicroKernel[cluster.length];
+                for (int i = 0; i < cluster.length; i++) {
+                    kernels[i] = new MongoMicroKernel(
+                            mongo,
+                            new MongoNodeStore(mongo.getDB()),
+                            new MongoBlobStore(mongo.getDB()));
+                    cluster[i] = new Jcr(kernels[i]).createRepository();
+                }
+            }
+            @Override
+            public void tearDownCluster(Repository[] cluster) {
+                for (MongoMicroKernel kernel : kernels) {
+                    kernel.dispose();
+                }
+                mongo.getDB().dropDatabase();
+                mongo.close();
+            }
+        };
+    }
+
+    public static RepositoryFixture getNewMongo() {
+        return new OakRepositoryFixture() {
+            private MongoConnection mongo;
+            private MongoMK[] kernels;
+            @Override
+            public void setUpCluster(Repository[] cluster) throws Exception {
+                mongo = new MongoConnection(
+                        "127.0.0.1", 27017, "oak-benchmark-newmongo");
+                kernels = new MongoMK[cluster.length];
+                for (int i = 0; i < cluster.length; i++) {
+                    kernels[i] = new MongoMK(mongo.getDB(), i);
+                    cluster[i] = new Jcr(kernels[i]).createRepository();
+                }
+            }
+            @Override
+            public void tearDownCluster(Repository[] cluster) {
+                for (MongoMK kernel : kernels) {
+                    kernel.dispose();
+                }
+                mongo.getDB().dropDatabase();
+                mongo.close();
+            }
+        };
+    }
+
+    public static RepositoryFixture getSegment() {
+        return new OakRepositoryFixture() {
+            private Mongo mongo;
+            @Override
+            public void setUpCluster(Repository[] cluster) throws Exception {
+                mongo = new Mongo();
+                for (int i = 0; i < cluster.length; i++) {
+                    SegmentStore store = new MongoStore(
+                            mongo.getDB("oak-benchmark-segment"));
+                    Oak oak = new Oak(new SegmentNodeStore(store));
+                    cluster[i] = new Jcr(oak).createRepository();
+                }
+            }
+            @Override
+            public void tearDownCluster(Repository[] cluster) {
+                mongo.getDB("oak-benchmark-segment").dropDatabase();
+                mongo.close();
+            }
+        };
+    }
 
     @Override
     public boolean isAvailable() {
         return true;
     }
 
-    @Override
-    public void setUpCluster(Repository[] cluster) throws Exception {
-        Oak oak = new Oak();
-        for (int i = 0; i < cluster.length; i++) {
-            cluster[i] = new Jcr(oak).createRepository();
-        }
-    }
 
     @Override
     public void syncRepositoryCluster(Repository... nodes) {