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 ch...@apache.org on 2017/05/16 16:33:19 UTC

svn commit: r1795337 - in /jackrabbit/oak/trunk/oak-run/src: main/java/org/apache/jackrabbit/oak/index/IndexOptions.java main/java/org/apache/jackrabbit/oak/run/cli/Options.java test/java/org/apache/jackrabbit/oak/index/IndexOptionsTest.java

Author: chetanm
Date: Tue May 16 16:33:19 2017
New Revision: 1795337

URL: http://svn.apache.org/viewvc?rev=1795337&view=rev
Log:
OAK-6081 - Indexing tooling via oak-run

If no explicit action is enabled then by default dump stats and definitions

Added:
    jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/index/IndexOptionsTest.java   (with props)
Modified:
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/IndexOptions.java
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/cli/Options.java

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/IndexOptions.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/IndexOptions.java?rev=1795337&r1=1795336&r2=1795337&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/IndexOptions.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/index/IndexOptions.java Tue May 16 16:33:19 2017
@@ -21,7 +21,9 @@ package org.apache.jackrabbit.oak.index;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.Set;
 
+import com.google.common.collect.ImmutableSet;
 import joptsimple.OptionParser;
 import joptsimple.OptionSet;
 import joptsimple.OptionSpec;
@@ -43,6 +45,7 @@ public class IndexOptions implements Opt
     private final OptionSpec<Void> stats;
     private final OptionSpec<Void> definitions;
     private OptionSet options;
+    private final Set<OptionSpec> actionOpts;
 
 
     public IndexOptions(OptionParser parser){
@@ -52,6 +55,9 @@ public class IndexOptions implements Opt
                 .withRequiredArg().ofType(File.class).defaultsTo(new File("."));
         stats = parser.accepts("index-info", "Collects and dumps information related to the indexes");
         definitions = parser.accepts("index-definitions", "Collects and dumps index definitions");
+
+        //Set of options which define action
+        actionOpts = ImmutableSet.of(stats, definitions);
     }
 
     @Override
@@ -70,10 +76,20 @@ public class IndexOptions implements Opt
     }
 
     public boolean dumpStats(){
-        return options.has(stats);
+        return options.has(stats) || !anyActionSelected();
     }
 
     public boolean dumpDefinitions(){
-        return options.has(definitions);
+        return options.has(definitions) || !anyActionSelected();
+    }
+
+    private boolean anyActionSelected(){
+        for (OptionSpec spec : actionOpts){
+            if (options.has(spec)){
+                return true;
+            }
+        }
+        return false;
+
     }
 }

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/cli/Options.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/cli/Options.java?rev=1795337&r1=1795336&r2=1795337&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/cli/Options.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/cli/Options.java Tue May 16 16:33:19 2017
@@ -27,6 +27,7 @@ import com.google.common.collect.ClassTo
 import com.google.common.collect.Iterables;
 import com.google.common.collect.MutableClassToInstanceMap;
 import com.google.common.collect.Sets;
+import joptsimple.BuiltinHelpFormatter;
 import joptsimple.OptionParser;
 import joptsimple.OptionSet;
 
@@ -66,6 +67,7 @@ public class Options {
             OptionsBean bean = o.newInstance(parser);
             optionBeans.put(bean.getClass(), bean);
         }
+        parser.formatHelpWith(new BuiltinHelpFormatter(120, 2));
         optionSet = parser.parse(args);
         configure(optionSet);
         checkForHelp(parser);
@@ -124,7 +126,7 @@ public class Options {
         }
     }
 
-    Options withDisableSystemExit() {
+    public Options withDisableSystemExit() {
         this.disableSystemExit = true;
         return this;
     }

Added: jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/index/IndexOptionsTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/index/IndexOptionsTest.java?rev=1795337&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/index/IndexOptionsTest.java (added)
+++ jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/index/IndexOptionsTest.java Tue May 16 16:33:19 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.index;
+
+import joptsimple.OptionParser;
+import org.apache.jackrabbit.oak.run.cli.Options;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+public class IndexOptionsTest {
+
+    private Options options;
+    private OptionParser parser = new OptionParser();
+
+    @Before
+    public void setUp(){
+        options = new Options().withDisableSystemExit();
+        options.registerOptionsFactory(IndexOptions.FACTORY);
+    }
+
+    @Test
+    public void defaultActions() throws Exception{
+        options.parseAndConfigure(parser, new String[] {});
+        IndexOptions idxOpts = options.getOptionBean(IndexOptions.class);
+
+        assertTrue(idxOpts.dumpDefinitions());
+        assertTrue(idxOpts.dumpStats());
+    }
+
+    @Test
+    public void defaultActionDisabled() throws Exception{
+        options.parseAndConfigure(parser, new String[] {"--index-info"});
+
+        IndexOptions idxOpts = options.getOptionBean(IndexOptions.class);
+
+        assertFalse(idxOpts.dumpDefinitions());
+        assertTrue(idxOpts.dumpStats());
+    }
+
+}
\ No newline at end of file

Propchange: jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/index/IndexOptionsTest.java
------------------------------------------------------------------------------
    svn:eol-style = native