Add logging levels (minimal, normal or verbose) to stress tool
patch by Benedict Elliott Smith; reviewed by Pavel Yaskevich for CASSANDRA-6849


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/89338a16
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/89338a16
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/89338a16

Branch: refs/heads/trunk
Commit: 89338a160b2d912edba92a607f5e51b5e4c69d6a
Parents: df43d4e
Author: Pavel Yaskevich <xe...@apache.org>
Authored: Thu Mar 13 17:58:52 2014 -0700
Committer: Pavel Yaskevich <xe...@apache.org>
Committed: Thu Mar 13 18:01:29 2014 -0700

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../org/apache/cassandra/stress/Operation.java  | 24 +++++++++++++++-----
 .../cassandra/stress/settings/SettingsLog.java  |  9 +++++++-
 3 files changed, 27 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/89338a16/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 05f1048..3fdf179 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -18,6 +18,7 @@
  * Fix stress to do proper counter reads (CASSANDRA-6835)
  * Fix help message for stress counter_write (CASSANDRA-6824)
  * Fix stress smart Thrift client to pick servers correctly (CASSANDRA-6848)
+ * Add logging levels (minimal, normal or verbose) to stress tool 
(CASSANDRA-6849)
 Merged from 2.0:
  * Fix leaking validator FH in StreamWriter (CASSANDRA-6832)
  * fix nodetool getsstables for blob PK (CASSANDRA-6803)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/89338a16/tools/stress/src/org/apache/cassandra/stress/Operation.java
----------------------------------------------------------------------
diff --git a/tools/stress/src/org/apache/cassandra/stress/Operation.java 
b/tools/stress/src/org/apache/cassandra/stress/Operation.java
index 33cca17..87afb3d 100644
--- a/tools/stress/src/org/apache/cassandra/stress/Operation.java
+++ b/tools/stress/src/org/apache/cassandra/stress/Operation.java
@@ -29,10 +29,7 @@ import java.util.concurrent.ThreadLocalRandom;
 import org.apache.cassandra.stress.generatedata.Distribution;
 import org.apache.cassandra.stress.generatedata.KeyGen;
 import org.apache.cassandra.stress.generatedata.RowGen;
-import org.apache.cassandra.stress.settings.Command;
-import org.apache.cassandra.stress.settings.CqlVersion;
-import org.apache.cassandra.stress.settings.SettingsCommandMixed;
-import org.apache.cassandra.stress.settings.StressSettings;
+import org.apache.cassandra.stress.settings.*;
 import org.apache.cassandra.stress.util.JavaDriverClient;
 import org.apache.cassandra.stress.util.ThriftClient;
 import org.apache.cassandra.stress.util.Timer;
@@ -252,7 +249,22 @@ public abstract class Operation
             }
             catch (Exception e)
             {
-                System.err.println(e);
+                switch (state.settings.log.level)
+                {
+                    case MINIMAL:
+                        break;
+
+                    case NORMAL:
+                        System.err.println(e);
+                        break;
+
+                    case VERBOSE:
+                        e.printStackTrace(System.err);
+                        break;
+
+                    default:
+                        throw new AssertionError();
+                }
                 exceptionMessage = getExceptionMessage(e);
             }
         }
@@ -284,7 +296,7 @@ public abstract class Operation
     {
         if (!state.settings.command.ignoreErrors)
             throw new IOException(message);
-        else
+        else if (state.settings.log.level.compareTo(SettingsLog.Level.MINIMAL) 
> 0)
             System.err.println(message);
     }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/89338a16/tools/stress/src/org/apache/cassandra/stress/settings/SettingsLog.java
----------------------------------------------------------------------
diff --git 
a/tools/stress/src/org/apache/cassandra/stress/settings/SettingsLog.java 
b/tools/stress/src/org/apache/cassandra/stress/settings/SettingsLog.java
index a19e5dc..5657fb2 100644
--- a/tools/stress/src/org/apache/cassandra/stress/settings/SettingsLog.java
+++ b/tools/stress/src/org/apache/cassandra/stress/settings/SettingsLog.java
@@ -31,10 +31,15 @@ import java.util.Map;
 
 public class SettingsLog implements Serializable
 {
+    public static enum Level
+    {
+        MINIMAL, NORMAL, VERBOSE
+    }
 
     public final boolean noSummary;
     public final File file;
     public final int intervalMillis;
+    public final Level level;
 
     public SettingsLog(Options options)
     {
@@ -54,6 +59,7 @@ public class SettingsLog implements Serializable
             intervalMillis = 1000 * Integer.parseInt(interval);
         if (intervalMillis <= 0)
             throw new IllegalArgumentException("Log interval must be greater 
than zero");
+        level = Level.valueOf(options.level.value().toUpperCase());
     }
 
     public PrintStream getOutput() throws FileNotFoundException
@@ -68,11 +74,12 @@ public class SettingsLog implements Serializable
         final OptionSimple noSummmary = new OptionSimple("no-summary", "", 
null, "Disable printing of aggregate statistics at the end of a test", false);
         final OptionSimple outputFile = new OptionSimple("file=", ".*", null, 
"Log to a file", false);
         final OptionSimple interval = new OptionSimple("interval=", 
"[0-9]+(ms|s|)", "1s", "Log progress every <value> seconds or milliseconds", 
false);
+        final OptionSimple level = new OptionSimple("level=", 
"(minimal|normal|verbose)", "normal", "Logging level (minimal, normal or 
verbose)", false);
 
         @Override
         public List<? extends Option> options()
         {
-            return Arrays.asList(noSummmary, outputFile, interval);
+            return Arrays.asList(level, noSummmary, outputFile, interval);
         }
     }
 

Reply via email to