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); } }