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/07/04 10:36:22 UTC

svn commit: r1499676 - in /jackrabbit/oak/trunk/oak-run: README.md src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractTest.java src/main/java/org/apache/jackrabbit/oak/benchmark/SmallFileWriteTest.java

Author: jukka
Date: Thu Jul  4 08:36:22 2013
New Revision: 1499676

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

Allow customization of the warmup period and benchmark runtime through system properties.
Avoid the MongoMK split document edge case in SmallFileWriteTest

Modified:
    jackrabbit/oak/trunk/oak-run/README.md
    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/SmallFileWriteTest.java

Modified: jackrabbit/oak/trunk/oak-run/README.md
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/README.md?rev=1499676&r1=1499675&r2=1499676&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/README.md (original)
+++ jackrabbit/oak/trunk/oak-run/README.md Thu Jul  4 08:36:22 2013
@@ -33,6 +33,11 @@ java.hprof.txt` to produce a somewhat ea
 bottom-up summaries of how the execution time is distributed across
 the benchmarked codebase.
 
+Some system properties are also used to control the benchmarks. For example:
+
+    -Dwarmup=5         - number of warmup iterations
+    -Druntime=60       - how long a single benchmark should run (in seconds)
+
 The test case names like `ReadPropertyTest`, `SmallFileReadTest` and
 `SmallFileWriteTest` indicate the specific test case being run. You can
 specify one or more test cases in the benchmark command line, and

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=1499676&r1=1499675&r2=1499676&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 Thu Jul  4 08:36:22 2013
@@ -34,6 +34,11 @@ import org.apache.jackrabbit.oak.fixture
  */
 abstract class AbstractTest extends Benchmark {
 
+    private static final int WARMUP = Integer.getInteger("warmup", 5);
+
+    private static final long RUNTIME =
+            TimeUnit.SECONDS.toMillis(Long.getLong("runtime", 60));
+
     private Repository repository;
 
     private Credentials credentials;
@@ -111,15 +116,13 @@ abstract class AbstractTest extends Benc
         setUp(repository, CREDENTIALS);
         try {
             // Run a few iterations to warm up the system
-            for (int i = 0; i < 5; i++) {
+            for (int i = 0; i < WARMUP; i++) {
                 execute();
             }
 
             // Run test iterations, and capture the execution times
             int iterations = 0;
-            long runtimeEnd =
-                    System.currentTimeMillis()
-                    + TimeUnit.MILLISECONDS.convert(1, TimeUnit.MINUTES);
+            long runtimeEnd = System.currentTimeMillis() + RUNTIME;
             while (iterations++ < 10
                     || System.currentTimeMillis() < runtimeEnd) {
                 statistics.addValue(execute());

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/SmallFileWriteTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/SmallFileWriteTest.java?rev=1499676&r1=1499675&r2=1499676&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/SmallFileWriteTest.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/SmallFileWriteTest.java Thu Jul  4 08:36:22 2013
@@ -32,6 +32,11 @@ public class SmallFileWriteTest extends 
 
     private Node root;
 
+    /**
+     * Iteration counter used to avoid the slit document edge case in MongoMK.
+     */
+    private int iteration = 0;
+
     @Override
     public void beforeSuite() throws RepositoryException {
         session = loginWriter();
@@ -39,11 +44,12 @@ public class SmallFileWriteTest extends 
 
     @Override
     public void beforeTest() throws RepositoryException {
-        root = session.getRootNode().addNode("SmallFileWriteTest", "nt:folder");
+        root = session.getRootNode().addNode(
+                "SmallFileWriteTest" + iteration++, "nt:folder");
         session.save();
     }
 
-    @Override
+    @Override @SuppressWarnings("deprecation")
     public void runTest() throws Exception {
         for (int i = 0; i < FILE_COUNT; i++) {
             Node file = root.addNode("file" + i, "nt:file");