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/25 10:46:52 UTC

svn commit: r1449629 - in /jackrabbit/oak/trunk/oak-run: ./ src/main/java/org/apache/jackrabbit/oak/benchmark/ src/main/java/org/apache/jackrabbit/oak/fixture/ src/main/java/org/apache/jackrabbit/oak/run/

Author: jukka
Date: Mon Feb 25 09:46:51 2013
New Revision: 1449629

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

Further benchmark refactoring:
- extract the Benchmark interface
- allow command line options to fixtures

Added:
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java
Modified:
    jackrabbit/oak/trunk/oak-run/pom.xml
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractTest.java
    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/JackrabbitRepositoryFixture.java
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/OakRepositoryFixture.java
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/RepositoryFixture.java
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java

Modified: jackrabbit/oak/trunk/oak-run/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/pom.xml?rev=1449629&r1=1449628&r2=1449629&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-run/pom.xml Mon Feb 25 09:46:51 2013
@@ -150,6 +150,11 @@
       <version>${jetty.version}</version>
     </dependency>
     <dependency>
+      <groupId>net.sf.jopt-simple</groupId>
+      <artifactId>jopt-simple</artifactId>
+      <version>4.4</version>
+    </dependency>
+    <dependency>
       <groupId>ch.qos.logback</groupId>
       <artifactId>logback-classic</artifactId>
       <version>1.0.1</version>

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractTest.java?rev=1449629&r1=1449628&r2=1449629&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractTest.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractTest.java Mon Feb 25 09:46:51 2013
@@ -18,7 +18,6 @@ package org.apache.jackrabbit.oak.benchm
 
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
 import javax.jcr.Credentials;
@@ -33,7 +32,7 @@ import org.apache.jackrabbit.oak.fixture
 /**
  * Abstract base class for individual performance benchmarks.
  */
-public abstract class AbstractTest {
+public abstract class AbstractTest implements Benchmark {
 
     private Repository repository;
 
@@ -72,31 +71,33 @@ public abstract class AbstractTest {
         beforeSuite();
     }
 
-    public void run(Map<String, RepositoryFixture> fixtures) throws Exception {
+    @Override
+    public void run(Iterable<RepositoryFixture> fixtures) {
         System.out.format(
                 "# %-34.34s     min     10%%     50%%     90%%     max       N%n",
                 toString());
-        for (Map.Entry<String, RepositoryFixture> fixture : fixtures.entrySet()) {
-            Repository[] cluster = new Repository[1];
-            fixture.getValue().setUpCluster(cluster);
+        for (RepositoryFixture fixture : fixtures) {
             try {
-                // Run the test
-                DescriptiveStatistics statistics = runTest(cluster[0]);
-                if (statistics.getN() > 0) {
-                    System.out.format(
-                            "%-36.36s  %6.0f  %6.0f  %6.0f  %6.0f  %6.0f  %6d%n",
-                            fixture.getKey(),
-                            statistics.getMin(),
-                            statistics.getPercentile(10.0),
-                            statistics.getPercentile(50.0),
-                            statistics.getPercentile(90.0),
-                            statistics.getMax(),
-                            statistics.getN());
+                Repository[] cluster = fixture.setUpCluster(1);
+                try {
+                    // Run the test
+                    DescriptiveStatistics statistics = runTest(cluster[0]);
+                    if (statistics.getN() > 0) {
+                        System.out.format(
+                                "%-36.36s  %6.0f  %6.0f  %6.0f  %6.0f  %6.0f  %6d%n",
+                                fixture.toString(),
+                                statistics.getMin(),
+                                statistics.getPercentile(10.0),
+                                statistics.getPercentile(50.0),
+                                statistics.getPercentile(90.0),
+                                statistics.getMax(),
+                                statistics.getN());
+                    }
+                } finally {
+                    fixture.tearDownCluster();
                 }
             } catch (Exception e) {
                 e.printStackTrace();
-            } finally {
-                fixture.getValue().tearDownCluster(cluster);
             }
         }
     }

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=1449629&r1=1449628&r2=1449629&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 Mon Feb 25 09:46:51 2013
@@ -16,70 +16,16 @@
  */
 package org.apache.jackrabbit.oak.benchmark;
 
-import java.util.List;
-import java.util.Map;
-
-import org.apache.jackrabbit.oak.fixture.JackrabbitRepositoryFixture;
-import org.apache.jackrabbit.oak.fixture.OakRepositoryFixture;
 import org.apache.jackrabbit.oak.fixture.RepositoryFixture;
 
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-public class Benchmark {
-
-    private static final Map<String, RepositoryFixture> FIXTURES =
-            ImmutableMap.<String, RepositoryFixture>builder()
-            .put("Jackrabbit", new JackrabbitRepositoryFixture())
-            .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 =
-            ImmutableMap.<String, AbstractTest>builder()
-            .put("Login",           new LoginTest())
-            .put("LoginLogout",     new LoginLogoutTest())
-            .put("GetProperty",     new ReadPropertyTest())
-            .put("SetProperty",     new SetPropertyTest())
-            .put("SmallRead",       new SmallFileReadTest())
-            .put("SmallWrite",      new SmallFileWriteTest())
-            .put("ConcurrentRead",  new ConcurrentReadTest())
-            .put("ConcurrentWrite", new ConcurrentReadWriteTest())
-            .put("SimpleSearch",    new SimpleSearchTest())
-            .put("SQL2",            new SQL2SearchTest())
-            .put("Descendant",      new DescendantSearchTest())
-            .put("SQL2Descendant",  new SQL2DescendantSearchTest())
-            .put("CreateFlatNode",  new CreateManyChildNodesTest())
-            .put("UpdateFlatNode", new UpdateManyChildNodesTest())
-            .put("TransientSpace", new TransientManyChildNodesTest())
-            .build();
-
-    public static void main(String[] args) throws Exception {
-        Map<String, RepositoryFixture> fixtures = Maps.newLinkedHashMap();
-        List<AbstractTest> tests = Lists.newArrayList();
-        for (String name : args) {
-            if (FIXTURES.containsKey(name)) {
-                fixtures.put(name, FIXTURES.get(name));
-            } else if (TESTS.containsKey(name)) {
-                tests.add(TESTS.get(name));
-            } else {
-                throw new RuntimeException("Unknown argument: " + name);
-            }
-        }
-        if (fixtures.isEmpty()) {
-            fixtures.putAll(FIXTURES);
-        }
-        if (tests.isEmpty()) {
-            tests.addAll(TESTS.values());
-        }
+public interface Benchmark {
 
-        for (AbstractTest test : tests) {
-            test.run(fixtures);
-        }
-    }
+    /**
+     * Runs this benchmark against all the given repository fixtures.
+     * The benchmark report is written to standard output.
+     *
+     * @param fixtures repository fixtures
+     */
+    void run(Iterable<RepositoryFixture> fixtures);
 
-}
+}
\ No newline at end of file

Added: 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=1449629&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java (added)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/BenchmarkRunner.java Mon Feb 25 09:46:51 2013
@@ -0,0 +1,100 @@
+/*
+ * 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.benchmark;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+
+import joptsimple.OptionParser;
+import joptsimple.OptionSet;
+import joptsimple.OptionSpec;
+
+import org.apache.jackrabbit.oak.fixture.JackrabbitRepositoryFixture;
+import org.apache.jackrabbit.oak.fixture.OakRepositoryFixture;
+import org.apache.jackrabbit.oak.fixture.RepositoryFixture;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+
+public class BenchmarkRunner {
+
+    private static final Benchmark[] BENCHMARKS = new Benchmark[] {
+            new LoginTest(),
+            new LoginLogoutTest(),
+            new ReadPropertyTest(),
+            new SetPropertyTest(),
+            new SmallFileReadTest(),
+            new SmallFileWriteTest(),
+            new ConcurrentReadTest(),
+            new ConcurrentReadWriteTest(),
+            new SimpleSearchTest(),
+            new SQL2SearchTest(),
+            new DescendantSearchTest(),
+            new SQL2DescendantSearchTest(),
+            new CreateManyChildNodesTest(),
+            new UpdateManyChildNodesTest(),
+            new TransientManyChildNodesTest() };
+
+    public static void main(String[] args) throws Exception {
+        OptionParser parser = new OptionParser();
+        OptionSpec<String> host = parser.accepts("host", "MongoDB host")
+                .withRequiredArg().defaultsTo("localhost");
+        OptionSpec<Integer> port = parser.accepts("port", "MongoDB port")
+                .withRequiredArg().ofType(Integer.class).defaultsTo(27017);
+
+        OptionSet options = parser.parse(args);
+        RepositoryFixture[] allFixtures = new RepositoryFixture[] {
+                new JackrabbitRepositoryFixture(),
+                OakRepositoryFixture.getMemory(),
+                OakRepositoryFixture.getDefault(),
+                OakRepositoryFixture.getMongo(host.value(options), port.value(options)),
+                OakRepositoryFixture.getSegment(host.value(options), port.value(options))
+        };
+
+        Set<String> argset = Sets.newHashSet(options.nonOptionArguments());
+        List<RepositoryFixture> fixtures = Lists.newArrayList();
+        for (RepositoryFixture fixture : allFixtures) {
+            if (argset.remove(fixture.toString())) {
+                fixtures.add(fixture);
+            }
+        }
+        if (fixtures.isEmpty()) {
+            fixtures = Arrays.asList(allFixtures);
+        }
+
+        List<Benchmark> benchmarks = Lists.newArrayList();
+        for (Benchmark benchmark : BENCHMARKS) {
+            if (argset.remove(benchmark.toString())) {
+                benchmarks.add(benchmark);
+            }
+        }
+        if (benchmarks.isEmpty()) {
+            benchmarks = Arrays.asList(BENCHMARKS);
+        }
+
+        if (argset.isEmpty()) {
+            for (Benchmark benchmark : benchmarks) {
+                benchmark.run(fixtures);
+            }
+        } else {
+            System.err.println("Unknown arguments: " + argset);
+        }
+
+    }
+
+}

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/JackrabbitRepositoryFixture.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/JackrabbitRepositoryFixture.java?rev=1449629&r1=1449628&r2=1449629&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/JackrabbitRepositoryFixture.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/JackrabbitRepositoryFixture.java Mon Feb 25 09:46:51 2013
@@ -26,18 +26,23 @@ import org.apache.jackrabbit.core.config
 
 public class JackrabbitRepositoryFixture implements RepositoryFixture {
 
+    private RepositoryImpl[] cluster;
+
     @Override
-    public boolean isAvailable() {
-        return true;
+    public boolean isAvailable(int n) {
+        return n == 1;
     }
 
     @Override
-    public void setUpCluster(Repository[] cluster) throws Exception {
-        if (cluster.length == 1) {
+    public Repository[] setUpCluster(int n) throws Exception {
+        if (n == 1) {
+            Repository[] cluster = new Repository[n];
             File directory = new File("jackrabbit-repository");
             RepositoryConfig config = RepositoryConfig.install(directory);
-            cluster[0] = RepositoryImpl.create(config);
-        } else if (cluster.length > 1) {
+            this.cluster[0] = RepositoryImpl.create(config);
+            cluster[0] = this.cluster[0];
+            return cluster;
+        } else {
             throw new UnsupportedOperationException("TODO");
         }
     }
@@ -48,9 +53,8 @@ public class JackrabbitRepositoryFixture
     }
 
     @Override
-    public void tearDownCluster(Repository[] cluster) {
-        for (Repository node : cluster) {
-            RepositoryImpl repository = ((RepositoryImpl) node);
+    public void tearDownCluster() {
+        for (RepositoryImpl repository : cluster) {
             File directory = new File(repository.getConfig().getHomeDir());
             repository.shutdown();
             FileUtils.deleteQuietly(directory);

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=1449629&r1=1449628&r2=1449629&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 Mon Feb 25 09:46:51 2013
@@ -24,9 +24,6 @@ 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;
@@ -39,126 +36,108 @@ import com.mongodb.Mongo;
 public abstract class OakRepositoryFixture implements RepositoryFixture {
 
     public static RepositoryFixture getMemory() {
-        return new OakRepositoryFixture() {
+        return new OakRepositoryFixture("Oak-Memory") {
             @Override
-            public void setUpCluster(Repository[] cluster) throws Exception {
+            public Repository[] setUpCluster(int n) throws Exception {
+                Repository[] cluster = new Repository[n];
                 MicroKernel kernel = new MicroKernelImpl();
                 for (int i = 0; i < cluster.length; i++) {
                     Oak oak = new Oak(kernel);
                     cluster[i] = new Jcr(oak).createRepository();
                 }
+                return cluster;
             }
         };
     }
 
     public static RepositoryFixture getDefault() {
-        return new OakRepositoryFixture() {
-            private File file = new File("oak-benchmark-microkernel");
+        return new OakRepositoryFixture("Oak-Default") {
             private MicroKernelImpl[] kernels;
             @Override
-            public void setUpCluster(Repository[] cluster) throws Exception {
+            public Repository[] setUpCluster(int n) throws Exception {
+                Repository[] cluster = new Repository[n];
                 kernels = new MicroKernelImpl[cluster.length];
                 for (int i = 0; i < cluster.length; i++) {
-                    kernels[i] = new MicroKernelImpl(file.getName());
+                    kernels[i] = new MicroKernelImpl(unique);
                     cluster[i] = new Jcr(kernels[i]).createRepository();
                 }
+                return cluster;
             }
             @Override
-            public void tearDownCluster(Repository[] cluster) {
+            public void tearDownCluster() {
                 for (MicroKernelImpl kernel : kernels) {
                     kernel.dispose();
                 }
-                FileUtils.deleteQuietly(file);
+                FileUtils.deleteQuietly(new File(unique));
             }
         };
     }
 
-    public static RepositoryFixture getMongo() {
-        return new OakRepositoryFixture() {
-            private MongoMicroKernel[] kernels;
-            @Override
-            public void setUpCluster(Repository[] cluster) throws Exception {
-                kernels = new MongoMicroKernel[cluster.length];
-                for (int i = 0; i < cluster.length; i++) {
-                    MongoConnection mongo = new MongoConnection(
-                            "127.0.0.1", 27017, "oak-benchmark-mongo");
-                    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();
-                }
-                try {
-                    MongoConnection mongo = new MongoConnection(
-                            "127.0.0.1", 27017, "oak-benchmark-mongo");
-                    mongo.getDB().dropDatabase();
-                    mongo.close();
-                } catch (Exception e) {
-                    throw new IllegalStateException(e);
-                }
-            }
-        };
-    }
-
-    public static RepositoryFixture getNewMongo() {
-        return new OakRepositoryFixture() {
+    public static RepositoryFixture getMongo(final String host, final int port) {
+        return new OakRepositoryFixture("Oak-Mongo") {
             private MongoMK[] kernels;
             @Override
-            public void setUpCluster(Repository[] cluster) throws Exception {
+            public Repository[] setUpCluster(int n) throws Exception {
+                Repository[] cluster = new Repository[n];
                 kernels = new MongoMK[cluster.length];
                 for (int i = 0; i < cluster.length; i++) {
-                    MongoConnection mongo = new MongoConnection(
-                            "127.0.0.1", 27017, "oak-benchmark-newmongo");
+                    MongoConnection mongo =
+                            new MongoConnection(host, port, unique);
                     kernels[i] = new MongoMK(mongo.getDB(), i);
                     cluster[i] = new Jcr(kernels[i]).createRepository();
                 }
+                return cluster;
             }
             @Override
-            public void tearDownCluster(Repository[] cluster) {
+            public void tearDownCluster() {
                 for (MongoMK kernel : kernels) {
                     kernel.dispose();
                 }
                 try {
-                    MongoConnection mongo = new MongoConnection(
-                            "127.0.0.1", 27017, "oak-benchmark-mongo");
+                    MongoConnection mongo =
+                            new MongoConnection(host, port, unique);
                     mongo.getDB().dropDatabase();
                     mongo.close();
                 } catch (Exception e) {
-                    throw new IllegalStateException(e);
+                    e.printStackTrace();
                 }
             }
         };
     }
 
-    public static RepositoryFixture getSegment() {
-        return new OakRepositoryFixture() {
+    public static RepositoryFixture getSegment(final String host, final int port) {
+        return new OakRepositoryFixture("Oak-Segment") {
             private Mongo mongo;
             @Override
-            public void setUpCluster(Repository[] cluster) throws Exception {
-                mongo = new Mongo();
+            public Repository[] setUpCluster(int n) throws Exception {
+                Repository[] cluster = new Repository[n];
+                mongo = new Mongo(host, port);
                 for (int i = 0; i < cluster.length; i++) {
-                    SegmentStore store = new MongoStore(
-                            mongo.getDB("oak-benchmark-segment"));
+                    SegmentStore store = new MongoStore(mongo.getDB(unique));
                     Oak oak = new Oak(new SegmentNodeStore(store));
                     cluster[i] = new Jcr(oak).createRepository();
                 }
+                return cluster;
             }
             @Override
-            public void tearDownCluster(Repository[] cluster) {
-                mongo.getDB("oak-benchmark-segment").dropDatabase();
+            public void tearDownCluster() {
+                mongo.getDB(unique).dropDatabase();
                 mongo.close();
             }
         };
     }
 
+    private final String name;
+
+    protected final String unique;
+
+    protected OakRepositoryFixture(String name) {
+        this.name = name;
+        this.unique = String.format("%s-%d", name, System.currentTimeMillis());
+    }
+
     @Override
-    public boolean isAvailable() {
+    public boolean isAvailable(int n) {
         return true;
     }
 
@@ -169,7 +148,11 @@ public abstract class OakRepositoryFixtu
     }
 
     @Override
-    public void tearDownCluster(Repository[] cluster) {
+    public void tearDownCluster() {
+    }
+
+    public String toString() {
+        return name;
     }
 
 }

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/RepositoryFixture.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/RepositoryFixture.java?rev=1449629&r1=1449628&r2=1449629&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/RepositoryFixture.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/RepositoryFixture.java Mon Feb 25 09:46:51 2013
@@ -25,25 +25,24 @@ public interface RepositoryFixture {
      * a database-based fixture would only be available when the underlying
      * database service is running.
      *
+     * @param n size of the requested cluster
      * @return {@code true} iff the fixture is available
      */
-    boolean isAvailable();
+    boolean isAvailable(int n);
 
     /**
-     * Creates a new repository cluster with as many nodes as the given
-     * array has elements. References to the cluster nodes are stored in
-     * the given array. The initial state of the cluster consists of just
-     * the default repository content included by the implementation. The
-     * caller of this method should have exclusive access to the created
-     * cluster. The caller is also responsible for calling
-     * {@link #tearDownCluster(Repository[])} when the test cluster is
-     * no longer needed.
+     * Creates a new repository cluster with the given number of nodes.
+     * The initial state of the cluster consists of just the default
+     * repository content included by the implementation. The caller of
+     * this method should have exclusive access to the created cluster.
+     * The caller is also responsible for calling {@link #tearDownCluster()}
+     * when the test cluster is no longer needed.
      *
-     * @param cluster array to which references to all nodes of the
-     *                created cluster should be stored
+     * @param n size of the requested cluster
+     * @return nodes of the created cluster
      * @throws Exception if the cluster could not be set up
      */
-    void setUpCluster(Repository[] cluster) throws Exception;
+    Repository[] setUpCluster(int n) throws Exception;
 
     /**
      * Ensures that all content changes seen by one of the given cluster
@@ -59,11 +58,9 @@ public interface RepositoryFixture {
 
     /**
      * Releases resources associated with the given repository cluster.
-     * The caller of {@link #setUpCluster(Repository[])} shall call this
+     * The caller of {@link #setUpCluster(int)} shall call this
      * method once the cluster is no longer needed.
-     *
-     * @param cluster array containing references to all nodes of the cluster
      */
-    void tearDownCluster(Repository[] cluster);
+    void tearDownCluster();
 
 }

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java?rev=1449629&r1=1449628&r2=1449629&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java Mon Feb 25 09:46:51 2013
@@ -26,7 +26,7 @@ import org.apache.jackrabbit.mk.api.Micr
 import org.apache.jackrabbit.mk.core.MicroKernelImpl;
 import org.apache.jackrabbit.oak.Oak;
 import org.apache.jackrabbit.oak.api.ContentRepository;
-import org.apache.jackrabbit.oak.benchmark.Benchmark;
+import org.apache.jackrabbit.oak.benchmark.BenchmarkRunner;
 import org.apache.jackrabbit.oak.http.OakServlet;
 import org.apache.jackrabbit.oak.jcr.RepositoryImpl;
 import org.apache.jackrabbit.oak.plugins.commit.ConflictValidatorProvider;
@@ -74,7 +74,7 @@ public class Main {
         if ("mk".equals(command)) {
             MicroKernelServer.main(args);
         } else if ("benchmark".equals(command)){
-            Benchmark.main(args);
+            BenchmarkRunner.main(args);
         } else if ("server".equals(command)){
             HttpServer httpServer = new HttpServer(URI, args);
             httpServer.start();