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 da...@apache.org on 2017/03/31 14:20:33 UTC

svn commit: r1789691 [3/3] - in /jackrabbit/oak/trunk: ./ oak-benchmarks/ oak-benchmarks/src/ oak-benchmarks/src/main/ oak-benchmarks/src/main/java/ oak-benchmarks/src/main/java/org/ oak-benchmarks/src/main/java/org/apache/ oak-benchmarks/src/main/java...

Copied: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterOrderByKeysetPageSearcher.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterOrderByKeysetPageSearcher.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterOrderByKeysetPageSearcher.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterOrderByKeysetPageSearcher.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterOrderByKeysetPageSearcher.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
    (empty)

Copied: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterOrderByOffsetPageSearcher.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterOrderByOffsetPageSearcher.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterOrderByOffsetPageSearcher.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterOrderByOffsetPageSearcher.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterOrderByOffsetPageSearcher.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
    (empty)

Copied: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterOrderBySearcher.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterOrderBySearcher.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterOrderBySearcher.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterOrderBySearcher.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterOrderBySearcher.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
    (empty)

Copied: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterSplitOrderByKeysetPageSearcher.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterSplitOrderByKeysetPageSearcher.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterSplitOrderByKeysetPageSearcher.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterSplitOrderByKeysetPageSearcher.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterSplitOrderByKeysetPageSearcher.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
    (empty)

Copied: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterSplitOrderByOffsetPageSearcher.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterSplitOrderByOffsetPageSearcher.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterSplitOrderByOffsetPageSearcher.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterSplitOrderByOffsetPageSearcher.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterSplitOrderByOffsetPageSearcher.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
    (empty)

Copied: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterSplitOrderBySearcher.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterSplitOrderBySearcher.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterSplitOrderBySearcher.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterSplitOrderBySearcher.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/MultiFilterSplitOrderBySearcher.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
    (empty)

Copied: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/NodeTypeSearcher.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/NodeTypeSearcher.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/NodeTypeSearcher.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/NodeTypeSearcher.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/NodeTypeSearcher.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
    (empty)

Copied: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/OrderByDate.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/OrderByDate.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/OrderByDate.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/OrderByDate.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/OrderByDate.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
    (empty)

Copied: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/OrderByKeysetPageSearcher.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/OrderByKeysetPageSearcher.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/OrderByKeysetPageSearcher.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/OrderByKeysetPageSearcher.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/OrderByKeysetPageSearcher.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
    (empty)

Copied: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/OrderByOffsetPageSearcher.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/OrderByOffsetPageSearcher.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/OrderByOffsetPageSearcher.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/OrderByOffsetPageSearcher.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/OrderByOffsetPageSearcher.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
    (empty)

Copied: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/OrderBySearcher.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/OrderBySearcher.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/OrderBySearcher.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/OrderBySearcher.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/OrderBySearcher.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
    (empty)

Copied: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/PaginationEnabledSearcher.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/PaginationEnabledSearcher.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/PaginationEnabledSearcher.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/PaginationEnabledSearcher.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/PaginationEnabledSearcher.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
    (empty)

Copied: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/ScalabilityBenchmark.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/ScalabilityBenchmark.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/ScalabilityBenchmark.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/ScalabilityBenchmark.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/ScalabilityBenchmark.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
    (empty)

Copied: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/SearchScalabilityBenchmark.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/SearchScalabilityBenchmark.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/SearchScalabilityBenchmark.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/SearchScalabilityBenchmark.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/SearchScalabilityBenchmark.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
    (empty)

Copied: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/SplitOrderByKeysetPageSearcher.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/SplitOrderByKeysetPageSearcher.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/SplitOrderByKeysetPageSearcher.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/SplitOrderByKeysetPageSearcher.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/SplitOrderByKeysetPageSearcher.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
    (empty)

Copied: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/SplitOrderByOffsetPageSearcher.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/SplitOrderByOffsetPageSearcher.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/SplitOrderByOffsetPageSearcher.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/SplitOrderByOffsetPageSearcher.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/SplitOrderByOffsetPageSearcher.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
    (empty)

Copied: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/SplitOrderBySearcher.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/SplitOrderBySearcher.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/SplitOrderBySearcher.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/SplitOrderBySearcher.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/SplitOrderBySearcher.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
    (empty)

Copied: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityAbstractSuite.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityAbstractSuite.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityAbstractSuite.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityAbstractSuite.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityAbstractSuite.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityAbstractSuite.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityAbstractSuite.java Fri Mar 31 14:20:30 2017
@@ -44,7 +44,7 @@ import com.google.common.base.Stopwatch;
 import org.apache.commons.math.stat.descriptive.DescriptiveStatistics;
 import org.apache.commons.math.stat.descriptive.SynchronizedDescriptiveStatistics;
 import org.apache.jackrabbit.oak.benchmark.CSVResultGenerator;
-import org.apache.jackrabbit.oak.benchmark.util.Profiler;
+import org.apache.jackrabbit.oak.commons.Profiler;
 import org.apache.jackrabbit.oak.fixture.RepositoryFixture;
 import org.apache.jackrabbit.oak.scalability.ScalabilitySuite;
 import org.apache.jackrabbit.oak.scalability.benchmarks.ScalabilityBenchmark;

Copied: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityBlobSearchSuite.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityBlobSearchSuite.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityBlobSearchSuite.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityBlobSearchSuite.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityBlobSearchSuite.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
    (empty)

Copied: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeRelationshipSuite.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeRelationshipSuite.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeRelationshipSuite.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeRelationshipSuite.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeRelationshipSuite.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
    (empty)

Copied: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeSuite.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeSuite.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeSuite.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeSuite.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeSuite.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
    (empty)

Copied: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/util/NodeTypeUtils.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/util/NodeTypeUtils.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/util/NodeTypeUtils.java?p2=jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scalability/util/NodeTypeUtils.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/util/NodeTypeUtils.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
    (empty)

Added: jackrabbit/oak/trunk/oak-benchmarks/src/main/resources/logback.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/resources/logback.xml?rev=1789691&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks/src/main/resources/logback.xml (added)
+++ jackrabbit/oak/trunk/oak-benchmarks/src/main/resources/logback.xml Fri Mar 31 14:20:30 2017
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   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.
+  -->
+<configuration>
+
+  <appender name="STDERR" class="ch.qos.logback.core.ConsoleAppender">
+    <target>System.err</target>
+    <encoder>
+      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
+    </encoder>
+  </appender>
+
+  <!-- Disable warnings caused by JCR-3671 -->
+  <logger name="org.apache.jackrabbit.core.config.ConfigurationErrorHandler" level="ERROR"/>
+
+  <!-- Display info messages from the benchmark suite -->
+  <logger name="org.apache.jackrabbit.oak.benchmark" level="INFO"/>
+
+  <!-- Display info messages from the LastRevRecoveryAgent-->
+  <logger name="org.apache.jackrabbit.oak.plugins.document.LastRevRecoveryAgent" level="INFO"/>
+
+  <!-- Display info messages from the scalability suite -->
+  <logger name="org.apache.jackrabbit.oak.scalability" level="INFO"/>
+
+  <logger name="org.apache.jackrabbit.oak.plugins.tika" level="INFO"/>
+
+  <!-- Metrics Reporting-->
+  <logger name="org.apache.jackrabbit.oak.metrics" level="INFO"/>
+
+  <!-- Display information messages from oak-run check (oak-segment) -->
+  <logger name="org.apache.jackrabbit.oak.plugins.segment.file.tooling.ConsistencyChecker" level="DEBUG"/>
+
+  <!-- Display information messages from oak-run check (oak-segment-tar) -->
+  <logger name="org.apache.jackrabbit.oak.segment.file.tooling.ConsistencyChecker" level="DEBUG"/>
+
+  <root level="warn">
+    <appender-ref ref="STDERR" />
+  </root>
+
+</configuration>

Added: jackrabbit/oak/trunk/oak-commons-run/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-commons-run/pom.xml?rev=1789691&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-commons-run/pom.xml (added)
+++ jackrabbit/oak/trunk/oak-commons-run/pom.xml Fri Mar 31 14:20:30 2017
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ 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.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd ">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.jackrabbit</groupId>
+        <artifactId>oak-parent</artifactId>
+        <version>1.8-SNAPSHOT</version>
+        <relativePath>../oak-parent/pom.xml</relativePath>
+    </parent>
+
+    <artifactId>oak-commons-run</artifactId>
+    <name>Oak Commons for Runnable modules</name>
+    <packaging>bundle</packaging>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>oak-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.code.findbugs</groupId>
+            <artifactId>jsr305</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.mongodb</groupId>
+            <artifactId>mongo-java-driver</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+        </dependency>
+    </dependencies>
+</project>

Copied: jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/commons/run/Command.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Command.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/commons/run/Command.java?p2=jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/commons/run/Command.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Command.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Command.java (original)
+++ jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/commons/run/Command.java Fri Mar 31 14:20:30 2017
@@ -15,9 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.jackrabbit.oak.run;
+package org.apache.jackrabbit.oak.commons.run;
 
-interface Command {
+public interface Command {
 
     void execute(String... args) throws Exception;
 

Copied: jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/commons/run/Modes.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/FacetSearcher.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/commons/run/Modes.java?p2=jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/commons/run/Modes.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/FacetSearcher.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/benchmarks/FacetSearcher.java (original)
+++ jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/commons/run/Modes.java Fri Mar 31 14:20:30 2017
@@ -16,29 +16,32 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.jackrabbit.oak.scalability.benchmarks;
 
-import javax.annotation.Nonnull;
-import javax.jcr.RepositoryException;
-import javax.jcr.query.Query;
-import javax.jcr.query.QueryManager;
+package org.apache.jackrabbit.oak.commons.run;
 
-import org.apache.jackrabbit.oak.scalability.suites.ScalabilityAbstractSuite;
+import com.google.common.base.Preconditions;
 
-/**
- * Scalability test for facet query implementation
- */
-public class FacetSearcher extends SearchScalabilityBenchmark {
+import java.util.Map;
 
-    @Override
-    protected Query getQuery(@Nonnull QueryManager qm, ScalabilityAbstractSuite.ExecutionContext context) throws RepositoryException {
+import static com.google.common.base.Preconditions.checkNotNull;
 
-        final String statement = "select [jcr:path], [facet(jcr:primaryType)] from [nt:base] where native('lucene','*:*')";
-
-        LOG.debug("statement: {}", statement);
+/**
+ * represent an individual Mode for running a COMMAND. It's a substitution for the old Mode enum we
+ * used in order to allow reuse of logic.
+ */
+public final class Modes {
+    private final Map<String, Command> MODES;
 
-        return qm.createQuery(statement, Query.JCR_SQL2);
+    public Modes(Map<String, Command> modes) {
+        this.MODES = checkNotNull(modes, "Provided map of Modes cannot be null");
     }
 
+    public Command getCommand(String name) {
+        // as the Map already return null in case of not found we don't have to do anything here.
+        return MODES.get(name);
+    }
 
-}
\ No newline at end of file
+    public Iterable<String> getModes() {
+        return MODES.keySet();
+    }
+}

Added: jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/commons/run/Utils.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/commons/run/Utils.java?rev=1789691&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/commons/run/Utils.java (added)
+++ jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/commons/run/Utils.java Fri Mar 31 14:20:30 2017
@@ -0,0 +1,59 @@
+/*
+ * 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.commons.run;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.Properties;
+
+public class Utils {
+    public static String getProductInfo(InputStream pom){
+        String version = getProductVersion(pom);
+
+        if (version == null) {
+            return "Apache Jackrabbit Oak";
+        }
+
+        return "Apache Jackrabbit Oak " + version;
+    }
+
+    public static String getProductVersion(InputStream pom) {
+        if (pom == null) {
+            return null;
+        }
+
+        Properties properties = new Properties();
+
+        try {
+            properties.load(pom);
+        } catch (IOException e) {
+            return null;
+        }
+
+        return properties.getProperty("version");
+    }
+
+    public static void printProductInfo(String[] args, InputStream pom) {
+        if(!Arrays.asList(args).contains("--quiet")) {
+            System.out.println(Utils.getProductInfo(pom));
+        }
+    }
+}

Copied: jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreHelper.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreHelper.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreHelper.java?p2=jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreHelper.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreHelper.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreHelper.java (original)
+++ jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreHelper.java Fri Mar 31 14:20:30 2017
@@ -125,7 +125,7 @@ public class DocumentNodeStoreHelper {
                 blobSize += size(blobs);
                 if (foundValid) {
                     garbageSize += size(blobs);
-                } else if (isCommitted(ns.getCommitValue(entry.getKey(), doc))) {
+                } else if (Utils.isCommitted(ns.getCommitValue(entry.getKey(), doc))) {
                     foundValid = true;
                 } else {
                     garbageSize += size(blobs);
@@ -150,7 +150,7 @@ public class DocumentNodeStoreHelper {
                 @Nullable
                 @Override
                 public NodeDocument apply(DBObject input) {
-                    return convertFromDBObject(mds, Collection.NODES, input);
+                    return MongoDocumentStoreHelper.convertFromDBObject(mds, Collection.NODES, input);
                 }
             });
         } else {

Copied: jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocumentHelper.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocumentHelper.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocumentHelper.java?p2=jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocumentHelper.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocumentHelper.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
    (empty)

Copied: jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreHelper.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreHelper.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreHelper.java?p2=jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreHelper.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreHelper.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreHelper.java (original)
+++ jackrabbit/oak/trunk/oak-commons-run/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreHelper.java Fri Mar 31 14:20:30 2017
@@ -20,6 +20,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.SortedMap;
 
+import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
 import com.mongodb.BasicDBObject;
 import com.mongodb.DBCollection;
@@ -27,10 +28,7 @@ import com.mongodb.DBObject;
 import com.mongodb.QueryBuilder;
 import com.mongodb.WriteResult;
 
-import org.apache.jackrabbit.oak.plugins.document.Collection;
-import org.apache.jackrabbit.oak.plugins.document.Document;
-import org.apache.jackrabbit.oak.plugins.document.NodeDocument;
-import org.apache.jackrabbit.oak.plugins.document.Revision;
+import org.apache.jackrabbit.oak.plugins.document.*;
 import org.apache.jackrabbit.oak.plugins.document.util.Utils;
 
 import static com.google.common.collect.Maps.newTreeMap;
@@ -57,11 +55,12 @@ public class MongoDocumentStoreHelper {
         Set<Revision> changes = Sets.newHashSet();
         for (String key : doc.keySet()) {
             if (Utils.isPropertyName(key) || NodeDocument.isDeletedEntry(key)) {
-                changes.addAll(getLocalMap(doc, key).keySet());
+                changes.addAll(NodeDocumentHelper.getLocalMap(doc, key).keySet());
             }
         }
 
-        SortedMap<Revision, String> commitRoot = newTreeMap(getLocalCommitRoot(doc));
+        SortedMap<Revision, String> commitRoot = Maps
+            .newTreeMap(NodeDocumentHelper.getLocalCommitRoot(doc));
         if (!commitRoot.keySet().retainAll(changes)) {
             System.out.println("Nothing to repair on " + path);
             return;
@@ -80,12 +79,12 @@ public class MongoDocumentStoreHelper {
         }
         
         DBObject update = new BasicDBObject();
-        update.put("$set", new BasicDBObject(commitRoot(), cr));
+        update.put("$set", new BasicDBObject(NodeDocumentHelper.commitRoot(), cr));
         update.put("$inc", new BasicDBObject(Document.MOD_COUNT, 1L));
                 
         WriteResult result = col.update(query, update);
         if (result.getN() == 1) {
-            int num = getLocalCommitRoot(doc).size() - commitRoot.size();
+            int num = NodeDocumentHelper.getLocalCommitRoot(doc).size() - commitRoot.size();
             System.out.println("Removed " + num + " _commitRoot entries on " + path);
         } else {
             System.out.println("Unable to repair " + path + " (concurrent update).");

Copied: jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/Profiler.java (from r1789684, jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/util/Profiler.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/Profiler.java?p2=jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/Profiler.java&p1=jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/util/Profiler.java&r1=1789684&r2=1789691&rev=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/util/Profiler.java (original)
+++ jackrabbit/oak/trunk/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/Profiler.java Fri Mar 31 14:20:30 2017
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.oak.benchmark.util;
+package org.apache.jackrabbit.oak.commons;
 
 import java.io.ByteArrayOutputStream;
 import java.io.FileInputStream;

Modified: jackrabbit/oak/trunk/oak-run/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/pom.xml?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-run/pom.xml Fri Mar 31 14:20:30 2017
@@ -159,7 +159,7 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.jackrabbit</groupId>
-      <artifactId>oak-segment-tar</artifactId>
+      <artifactId>oak-commons-run</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
@@ -169,132 +169,77 @@
     </dependency>
     <dependency>
       <groupId>org.apache.jackrabbit</groupId>
-      <artifactId>oak-http</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-        <groupId>org.apache.jackrabbit</groupId>
-        <artifactId>oak-remote</artifactId>
-        <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.jackrabbit</groupId>
-      <artifactId>oak-authorization-cug</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.jackrabbit</groupId>
       <artifactId>oak-lucene</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
       <groupId>org.apache.jackrabbit</groupId>
-      <artifactId>oak-solr-core</artifactId>
+      <artifactId>oak-blob-cloud</artifactId>
       <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.solr</groupId>
-      <artifactId>solr-solrj</artifactId>
-      <version>${lucene.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.solr</groupId>
-      <artifactId>solr-core</artifactId>
-      <version>${lucene.version}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>org.apache.lucene</groupId>
-          <artifactId>lucene-core</artifactId>
-        </exclusion>
-      </exclusions>
+      <optional>true</optional>
     </dependency>
     <dependency>
       <groupId>org.apache.jackrabbit</groupId>
-      <artifactId>oak-auth-external</artifactId>
+      <artifactId>oak-segment-tar</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.tomcat</groupId>
-      <artifactId>tomcat-jdbc</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>com.h2database</groupId>
-      <artifactId>h2</artifactId>
-      <version>${h2.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.mongodb</groupId>
-      <artifactId>mongo-java-driver</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.jackrabbit</groupId>
-      <artifactId>jackrabbit-jcr-server</artifactId>
-      <version>${jackrabbit.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.jackrabbit</groupId>
-      <artifactId>jackrabbit-core</artifactId>
+      <artifactId>jackrabbit-aws-ext</artifactId>
       <version>${jackrabbit.version}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>org.apache.lucene</groupId>
-          <artifactId>lucene-core</artifactId>
-        </exclusion>
-      </exclusions>
+      <optional>true</optional>
     </dependency>
     <dependency>
       <groupId>org.apache.jackrabbit</groupId>
-      <artifactId>jackrabbit-data</artifactId>
-      <version>${jackrabbit.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-math</artifactId>
-      <version>2.0</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-compress</artifactId>
-      <version>1.8</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-io</groupId>
-      <artifactId>commons-io</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-servlet</artifactId>
-      <version>${jetty.version}</version>
+      <artifactId>oak-blob-cloud-azure</artifactId>
+      <version>${project.version}</version>
+      <optional>true</optional>
     </dependency>
+
     <dependency>
       <groupId>net.sf.jopt-simple</groupId>
       <artifactId>jopt-simple</artifactId>
       <version>4.6</version>
     </dependency>
     <dependency>
-      <groupId>ch.qos.logback</groupId>
-      <artifactId>logback-classic</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.codehaus.groovy</groupId>
       <artifactId>groovy-all</artifactId>
       <version>${groovy.version}</version>
       <classifier>indy</classifier>
     </dependency>
     <dependency>
+      <groupId>org.mongodb</groupId>
+      <artifactId>mongo-java-driver</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.mapdb</groupId>
+      <artifactId>mapdb</artifactId>
+      <version>1.0.6</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.apache.felix.configadmin</artifactId>
+      <version>1.8.8</version>
+    </dependency>
+    <dependency>
       <groupId>jline</groupId>
       <artifactId>jline</artifactId>
       <version>2.14.2</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.felix</groupId>
-      <artifactId>org.apache.felix.scr.annotations</artifactId>
-      <scope>provided</scope>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-csv</artifactId>
+      <version>1.1</version>
     </dependency>
     <dependency>
-      <groupId>org.mapdb</groupId>
-      <artifactId>mapdb</artifactId>
-      <version>1.0.6</version>
+      <groupId>com.h2database</groupId>
+      <artifactId>h2</artifactId>
+      <version>${h2.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.sling</groupId>
+      <artifactId>org.apache.sling.testing.osgi-mock</artifactId>
       <scope>compile</scope>
     </dependency>
     <dependency>
@@ -308,7 +253,6 @@
         </exclusion>
       </exclusions>
     </dependency>
-
     <dependency>
       <groupId>org.apache.tika</groupId>
       <artifactId>tika-parsers</artifactId>
@@ -319,55 +263,6 @@
       <artifactId>tika-core</artifactId>
       <version>1.5</version>
     </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-csv</artifactId>
-      <version>1.1</version>
-    </dependency>
-
-    <dependency>
-      <groupId>io.dropwizard.metrics</groupId>
-      <artifactId>metrics-core</artifactId>
-      <version>3.1.0</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.jackrabbit</groupId>
-      <artifactId>jackrabbit-aws-ext</artifactId>
-      <version>${jackrabbit.version}</version>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.jackrabbit</groupId>
-      <artifactId>oak-blob-cloud</artifactId>
-      <version>${project.version}</version>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.jackrabbit</groupId>
-      <artifactId>oak-blob-cloud-azure</artifactId>
-      <version>${project.version}</version>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.sling</groupId>
-      <artifactId>org.apache.sling.testing.osgi-mock</artifactId>
-      <scope>compile</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.felix</groupId>
-      <artifactId>org.apache.felix.configadmin</artifactId>
-      <version>1.8.8</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-math3</artifactId>
-    </dependency>
 
     <!-- Findbugs annotations -->
     <dependency>
@@ -428,18 +323,6 @@
         </dependency>
         <dependency>
           <groupId>org.apache.jackrabbit</groupId>
-          <artifactId>oak-solr-osgi</artifactId> <!-- this is declared here to avoid having it in the jr2 profile too -->
-          <version>${project.version}</version>
-        </dependency>
-        <dependency>
-          <groupId>org.apache.jackrabbit</groupId>
-          <artifactId>oak-commons</artifactId>
-          <version>${project.version}</version>
-          <type>test-jar</type>
-          <scope>test</scope>
-        </dependency>
-        <dependency>
-          <groupId>org.apache.jackrabbit</groupId>
           <artifactId>oak-core</artifactId>
           <version>${project.version}</version>
           <type>test-jar</type>

Modified: jackrabbit/oak/trunk/oak-run/src/main/assembly/oak-run.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/assembly/oak-run.xml?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/assembly/oak-run.xml (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/assembly/oak-run.xml Fri Mar 31 14:20:30 2017
@@ -30,9 +30,7 @@
     <dependencySet>
       <outputDirectory>/</outputDirectory>
       <excludes>
-        <exclude>org.apache.jackrabbit:jackrabbit-core</exclude>
         <exclude>org.apache.lucene</exclude>
-        <exclude>org.apache.derby</exclude>
         <exclude>org.apache.tika:tika-core:*</exclude>
         <exclude>org.apache.tika:tika-parsers:*</exclude>
         <exclude>org.apache.jackrabbit:jackrabbit-aws-ext:*</exclude>

Added: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/AvailableModes.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/AvailableModes.java?rev=1789691&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/AvailableModes.java (added)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/AvailableModes.java Fri Mar 31 14:20:30 2017
@@ -0,0 +1,55 @@
+/*
+ * 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.run;
+
+import com.google.common.collect.ImmutableMap;
+import org.apache.jackrabbit.oak.commons.run.Command;
+import org.apache.jackrabbit.oak.commons.run.Modes;
+
+public final class AvailableModes {
+    // list of available Modes for the tool
+    public static final Modes MODES = new Modes(
+        ImmutableMap.<String, Command>builder()
+            .put("backup", new BackupCommand())
+            .put("checkpoints", new CheckpointsCommand())
+            .put("check", new CheckCommand())
+            .put("datastorecacheupgrade", new DataStoreCacheUpgradeCommand())
+            .put("compact", new CompactCommand())
+            .put("console", new ConsoleCommand())
+            .put("datastorecheck", new DataStoreCheckCommand())
+            .put("debug", new DebugCommand())
+            .put("explore", new ExploreCommand())
+            .put("garbage", new GarbageCommand())
+            .put("graph", new GraphCommand())
+            .put("help", new HelpCommand())
+            .put("history", new HistoryCommand())
+            .put(IndexCommand.INDEX, new IndexCommand())
+            .put(PersistentCacheCommand.PERSISTENTCACHE, new PersistentCacheCommand())
+            .put("recovery", new RecoveryCommand())
+            .put("repair", new RepairCommand())
+            .put("resetclusterid", new ResetClusterIdCommand())
+            .put("restore", new RestoreCommand())
+            .put("tarmkdiff", new FileStoreDiffCommand())
+            .put(ThreadDumpCommand.THREADDUMP, new ThreadDumpCommand())
+            .put("tika", new TikaCommand())
+            .put("upgrade", new UpgradeCommand())
+            .put("unlockupgrade", new UnlockUpgradeCommand())
+            .build());
+}

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/BackupCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/BackupCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/BackupCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/BackupCommand.java Fri Mar 31 14:20:30 2017
@@ -21,6 +21,7 @@ import java.io.File;
 
 import joptsimple.OptionParser;
 import joptsimple.OptionSet;
+import org.apache.jackrabbit.oak.commons.run.Command;
 
 class BackupCommand implements Command {
 

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CheckCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CheckCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CheckCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CheckCommand.java Fri Mar 31 14:20:30 2017
@@ -29,6 +29,7 @@ import joptsimple.ArgumentAcceptingOptio
 import joptsimple.OptionParser;
 import joptsimple.OptionSet;
 import joptsimple.OptionSpec;
+import org.apache.jackrabbit.oak.commons.run.Command;
 
 class CheckCommand implements Command {
 

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CheckpointsCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CheckpointsCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CheckpointsCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CheckpointsCommand.java Fri Mar 31 14:20:30 2017
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.jackrabbit.oak.checkpoint.Checkpoints;
+import org.apache.jackrabbit.oak.commons.run.Command;
 import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
 

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CompactCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CompactCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CompactCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/CompactCommand.java Fri Mar 31 14:20:30 2017
@@ -32,6 +32,7 @@ import org.apache.commons.io.FileUtils;
 import org.apache.jackrabbit.oak.commons.IOUtils;
 
 import com.google.common.base.Stopwatch;
+import org.apache.jackrabbit.oak.commons.run.Command;
 
 class CompactCommand implements Command {
 

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ConsoleCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ConsoleCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ConsoleCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ConsoleCommand.java Fri Mar 31 14:20:30 2017
@@ -17,6 +17,7 @@
 
 package org.apache.jackrabbit.oak.run;
 
+import org.apache.jackrabbit.oak.commons.run.Command;
 import org.apache.jackrabbit.oak.console.Console;
 
 class ConsoleCommand implements Command {

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCacheUpgradeCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCacheUpgradeCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCacheUpgradeCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCacheUpgradeCommand.java Fri Mar 31 14:20:30 2017
@@ -22,6 +22,7 @@ import java.io.File;
 import joptsimple.OptionParser;
 import joptsimple.OptionSet;
 import joptsimple.OptionSpec;
+import org.apache.jackrabbit.oak.commons.run.Command;
 import org.apache.jackrabbit.oak.plugins.blob.DataStoreCacheUpgradeUtils;
 
 import static java.util.Arrays.asList;

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCheckCommand.java Fri Mar 31 14:20:30 2017
@@ -40,6 +40,7 @@ import javax.annotation.Nullable;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.FilenameUtils;
 import org.apache.jackrabbit.oak.commons.FileIOUtils.FileLineDifferenceIterator;
+import org.apache.jackrabbit.oak.commons.run.Command;
 import org.apache.jackrabbit.oak.plugins.blob.BlobReferenceRetriever;
 import org.apache.jackrabbit.oak.plugins.blob.ReferenceCollector;
 import org.apache.jackrabbit.oak.plugins.document.DocumentBlobReferenceRetriever;

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DebugCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DebugCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DebugCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DebugCommand.java Fri Mar 31 14:20:30 2017
@@ -20,6 +20,7 @@ package org.apache.jackrabbit.oak.run;
 import joptsimple.OptionParser;
 import joptsimple.OptionSet;
 import joptsimple.OptionSpec;
+import org.apache.jackrabbit.oak.commons.run.Command;
 
 class DebugCommand implements Command {
 

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ExploreCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ExploreCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ExploreCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ExploreCommand.java Fri Mar 31 14:20:30 2017
@@ -17,6 +17,7 @@
 
 package org.apache.jackrabbit.oak.run;
 
+import org.apache.jackrabbit.oak.commons.run.Command;
 import org.apache.jackrabbit.oak.explorer.Explorer;
 
 class ExploreCommand implements Command {

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/FileStoreDiffCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/FileStoreDiffCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/FileStoreDiffCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/FileStoreDiffCommand.java Fri Mar 31 14:20:30 2017
@@ -24,6 +24,7 @@ import java.io.File;
 import joptsimple.OptionParser;
 import joptsimple.OptionSet;
 import joptsimple.OptionSpec;
+import org.apache.jackrabbit.oak.commons.run.Command;
 
 class FileStoreDiffCommand implements Command {
 

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/GarbageCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/GarbageCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/GarbageCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/GarbageCommand.java Fri Mar 31 14:20:30 2017
@@ -18,6 +18,7 @@
 package org.apache.jackrabbit.oak.run;
 
 import com.google.common.io.Closer;
+import org.apache.jackrabbit.oak.commons.run.Command;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreHelper;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/GraphCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/GraphCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/GraphCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/GraphCommand.java Fri Mar 31 14:20:30 2017
@@ -25,6 +25,7 @@ import java.util.Date;
 import joptsimple.OptionParser;
 import joptsimple.OptionSet;
 import joptsimple.OptionSpec;
+import org.apache.jackrabbit.oak.commons.run.Command;
 
 class GraphCommand implements Command {
 

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/HelpCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/HelpCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/HelpCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/HelpCommand.java Fri Mar 31 14:20:30 2017
@@ -18,13 +18,16 @@
 package org.apache.jackrabbit.oak.run;
 
 import com.google.common.base.Joiner;
+import org.apache.jackrabbit.oak.commons.run.Command;
+
+import static org.apache.jackrabbit.oak.run.AvailableModes.MODES;
 
 class HelpCommand implements Command {
 
     @Override
     public void execute(String... args) throws Exception {
         System.err.print("Available run modes: ");
-        System.err.println(Joiner.on(", ").join(Mode.values()));
+        System.err.println(Joiner.on(", ").join(MODES.getModes()));
         System.exit(1);
     }
 

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/HistoryCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/HistoryCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/HistoryCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/HistoryCommand.java Fri Mar 31 14:20:30 2017
@@ -24,6 +24,7 @@ import java.io.File;
 import joptsimple.OptionParser;
 import joptsimple.OptionSet;
 import joptsimple.OptionSpec;
+import org.apache.jackrabbit.oak.commons.run.Command;
 
 class HistoryCommand implements Command {
 

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/IndexCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/IndexCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/IndexCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/IndexCommand.java Fri Mar 31 14:20:30 2017
@@ -54,11 +54,13 @@ import org.apache.jackrabbit.oak.commons
 import org.apache.jackrabbit.oak.commons.json.JsopBuilder;
 import org.apache.jackrabbit.oak.commons.json.JsopReader;
 import org.apache.jackrabbit.oak.commons.json.JsopTokenizer;
+import org.apache.jackrabbit.oak.commons.run.Command;
 import org.apache.jackrabbit.oak.console.NodeStoreFixture;
 import org.apache.jackrabbit.oak.console.NodeStoreOpener;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 
 public class IndexCommand implements Command {
+    public static final String INDEX = "index";
 
     PrintStream output = System.out;
     Session session;
@@ -78,7 +80,7 @@ public class IndexCommand implements Com
         OptionSet options = parser.parse(args);
         if (options.has(helpSpec)
                 || options.nonOptionArguments().isEmpty()) {
-            System.out.println("Mode: " + Mode.INDEX);
+            System.out.println("Mode: " + INDEX);
             System.out.println();
             parser.printHelpOn(System.out);
             return;

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=1789691&r1=1789690&r2=1789691&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 Fri Mar 31 14:20:30 2017
@@ -16,87 +16,36 @@
  */
 package org.apache.jackrabbit.oak.run;
 
-import static java.util.Arrays.copyOfRange;
-import static org.apache.jackrabbit.oak.commons.IOUtils.closeQuietly;
+import org.apache.jackrabbit.oak.commons.run.Command;
+import org.apache.jackrabbit.oak.commons.run.Utils;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Arrays;
 import java.util.Locale;
-import java.util.Properties;
 
-public final class Main {
+import static java.util.Arrays.copyOfRange;
+import static org.apache.jackrabbit.oak.run.AvailableModes.MODES;
 
+public final class Main {
     private Main() {
         // Prevent instantiation.
     }
 
     public static void main(String[] args) throws Exception {
-        printProductInfo(args);
+        Utils.printProductInfo(
+            args,
+            Main.class.getResourceAsStream("/META-INF/maven/org.apache.jackrabbit/oak-run/pom.properties"));
 
-        Mode mode = Mode.SERVER;
+        Command command = MODES.getCommand("help");
 
         if (args.length > 0) {
-            mode = getMode(args[0]);
+            command = MODES.getCommand(args[0].toLowerCase(Locale.ENGLISH));
 
-            if (mode == null) {
-                mode = Mode.HELP;
+            if (command == null) {
+                command = MODES.getCommand("help");
             }
 
             args = copyOfRange(args, 1, args.length);
         }
 
-        mode.execute(args);
-    }
-
-    public static String getProductInfo(){
-        String version = getProductVersion();
-
-        if (version == null) {
-            return "Apache Jackrabbit Oak";
-        }
-
-        return "Apache Jackrabbit Oak " + version;
-    }
-
-    private static String getProductVersion() {
-        InputStream stream = Main.class.getResourceAsStream("/META-INF/maven/org.apache.jackrabbit/oak-run/pom.properties");
-
-        try {
-            if (stream == null) {
-                return null;
-            } else {
-                return getProductVersion(stream);
-            }
-        } finally {
-            closeQuietly(stream);
-        }
-    }
-
-    private static String getProductVersion(InputStream stream) {
-        Properties properties = new Properties();
-
-        try {
-            properties.load(stream);
-        } catch (IOException e) {
-            return null;
-        }
-
-        return properties.getProperty("version");
+        command.execute(args);
     }
-
-    private static void printProductInfo(String[] args) {
-        if(!Arrays.asList(args).contains("--quiet")) {
-            System.out.println(getProductInfo());
-        }
-    }
-
-    private static Mode getMode(String name) {
-        try {
-            return Mode.valueOf(name.toUpperCase(Locale.ENGLISH));
-        } catch (IllegalArgumentException e) {
-            return null;
-        }
-    }
-
 }

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/PersistentCacheCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/PersistentCacheCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/PersistentCacheCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/PersistentCacheCommand.java Fri Mar 31 14:20:30 2017
@@ -26,6 +26,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
+import org.apache.jackrabbit.oak.commons.run.Command;
 import org.h2.mvstore.MVMap;
 import org.h2.mvstore.MVStore;
 import org.h2.mvstore.type.StringDataType;
@@ -35,6 +36,7 @@ import joptsimple.OptionSet;
 import joptsimple.OptionSpec;
 
 public class PersistentCacheCommand implements Command {
+    public final static String PERSISTENTCACHE = "persistentcache";
 
     @SuppressWarnings("unchecked")
     @Override
@@ -63,7 +65,7 @@ public class PersistentCacheCommand impl
                 "persistent cache file (required)").ofType(File.class);
         if (options.has(helpSpec)
                 || options.nonOptionArguments().isEmpty()) {
-            System.out.println("Mode: " + Mode.PERSISTENTCACHE);
+            System.out.println("Mode: " + PERSISTENTCACHE);
             System.out.println("Map names and statistic are listed if just the file name is specified.");
             System.out.println("To list all keys, just specify '/' and the file name.");
             System.out.println("To dump multiples files in one go, add multiple file names.");

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RecoveryCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RecoveryCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RecoveryCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RecoveryCommand.java Fri Mar 31 14:20:30 2017
@@ -20,6 +20,7 @@ package org.apache.jackrabbit.oak.run;
 import java.util.Arrays;
 
 import com.google.common.io.Closer;
+import org.apache.jackrabbit.oak.commons.run.Command;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
 import org.apache.jackrabbit.oak.plugins.document.LastRevRecoveryAgent;
 import org.apache.jackrabbit.oak.plugins.document.NodeDocument;

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RepairCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RepairCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RepairCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RepairCommand.java Fri Mar 31 14:20:30 2017
@@ -18,6 +18,7 @@
 package org.apache.jackrabbit.oak.run;
 
 import com.google.common.io.Closer;
+import org.apache.jackrabbit.oak.commons.run.Command;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
 import org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentStore;
 import org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentStoreHelper;

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ResetClusterIdCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ResetClusterIdCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ResetClusterIdCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ResetClusterIdCommand.java Fri Mar 31 14:20:30 2017
@@ -18,6 +18,7 @@ package org.apache.jackrabbit.oak.run;
 
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.Type;
+import org.apache.jackrabbit.oak.commons.run.Command;
 import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
 import org.apache.jackrabbit.oak.plugins.identifier.ClusterRepositoryInfo;

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RestoreCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RestoreCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RestoreCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/RestoreCommand.java Fri Mar 31 14:20:30 2017
@@ -21,6 +21,7 @@ import java.io.File;
 
 import joptsimple.OptionParser;
 import joptsimple.OptionSet;
+import org.apache.jackrabbit.oak.commons.run.Command;
 
 class RestoreCommand implements Command {
 

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ThreadDumpCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ThreadDumpCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ThreadDumpCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ThreadDumpCommand.java Fri Mar 31 14:20:30 2017
@@ -41,11 +41,13 @@ import joptsimple.OptionParser;
 import joptsimple.OptionSet;
 import joptsimple.OptionSpec;
 
-import org.apache.jackrabbit.oak.benchmark.util.Profiler;
+import org.apache.jackrabbit.oak.commons.Profiler;
+import org.apache.jackrabbit.oak.commons.run.Command;
 import org.apache.jackrabbit.oak.threadDump.ThreadDumpCleaner;
 import org.apache.jackrabbit.oak.threadDump.ThreadDumpConverter;
 
 public class ThreadDumpCommand implements Command {
+    public final static String THREADDUMP = "threaddump";
 
     @SuppressWarnings("unchecked")
     @Override
@@ -70,7 +72,7 @@ public class ThreadDumpCommand implement
                 "file or directory containing thread dumps").ofType(File.class);
         if (options.has(helpSpec)
                 || options.nonOptionArguments().isEmpty()) {
-            System.out.println("Mode: " + Mode.THREADDUMP);
+            System.out.println("Mode: " + THREADDUMP);
             System.out.println();
             parser.printHelpOn(System.out);
             return;

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/TikaCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/TikaCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/TikaCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/TikaCommand.java Fri Mar 31 14:20:30 2017
@@ -17,6 +17,7 @@
 
 package org.apache.jackrabbit.oak.run;
 
+import org.apache.jackrabbit.oak.commons.run.Command;
 import org.apache.jackrabbit.oak.plugins.tika.TextExtractorMain;
 
 class TikaCommand implements Command {

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/UnlockUpgradeCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/UnlockUpgradeCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/UnlockUpgradeCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/UnlockUpgradeCommand.java Fri Mar 31 14:20:30 2017
@@ -24,6 +24,7 @@ import javax.sql.DataSource;
 
 import com.mongodb.MongoClientURI;
 
+import org.apache.jackrabbit.oak.commons.run.Command;
 import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
 import org.apache.jackrabbit.oak.plugins.document.DocumentStore;
 import org.apache.jackrabbit.oak.plugins.document.DocumentStoreException;

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/UpgradeCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/UpgradeCommand.java?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/UpgradeCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/UpgradeCommand.java Fri Mar 31 14:20:30 2017
@@ -17,6 +17,8 @@
 
 package org.apache.jackrabbit.oak.run;
 
+import org.apache.jackrabbit.oak.commons.run.Command;
+
 class UpgradeCommand implements Command {
 
     @Override

Modified: jackrabbit/oak/trunk/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/pom.xml?rev=1789691&r1=1789690&r2=1789691&view=diff
==============================================================================
--- jackrabbit/oak/trunk/pom.xml (original)
+++ jackrabbit/oak/trunk/pom.xml Fri Mar 31 14:20:30 2017
@@ -50,6 +50,7 @@
     <module>oak-solr-osgi</module>
     <module>oak-auth-external</module>
     <module>oak-auth-ldap</module>
+    <module>oak-commons-run</module>
     <module>oak-run</module>
     <module>oak-it-osgi</module>
     <module>oak-pojosr</module>
@@ -59,6 +60,7 @@
     <module>oak-examples</module>
     <module>oak-it</module>
     <module>oak-segment-tar</module>
+    <module>oak-benchmarks</module>
   </modules>
 
   <scm>