You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by be...@apache.org on 2015/03/10 18:14:09 UTC

[2/3] cassandra git commit: include missing files

include missing files


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

Branch: refs/heads/trunk
Commit: 97d65d6d3689ef3fd47d760004377486ad00d631
Parents: 6bbfb55
Author: Benedict Elliott Smith <be...@apache.org>
Authored: Tue Mar 10 17:13:46 2015 +0000
Committer: Benedict Elliott Smith <be...@apache.org>
Committed: Tue Mar 10 17:13:46 2015 +0000

----------------------------------------------------------------------
 .../cassandra/stress/util/TimingIntervals.java  | 139 +++++++++++++++++++
 1 file changed, 139 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/97d65d6d/tools/stress/src/org/apache/cassandra/stress/util/TimingIntervals.java
----------------------------------------------------------------------
diff --git a/tools/stress/src/org/apache/cassandra/stress/util/TimingIntervals.java b/tools/stress/src/org/apache/cassandra/stress/util/TimingIntervals.java
new file mode 100644
index 0000000..ab89d07
--- /dev/null
+++ b/tools/stress/src/org/apache/cassandra/stress/util/TimingIntervals.java
@@ -0,0 +1,139 @@
+package org.apache.cassandra.stress.util;
+
+import java.util.Arrays;
+import java.util.Map;
+import java.util.TreeMap;
+
+public class TimingIntervals
+{
+    final Map<String, TimingInterval> intervals;
+    TimingIntervals(Iterable<String> opTypes)
+    {
+        long now = System.nanoTime();
+        intervals = new TreeMap<>();
+        for (String opType : opTypes)
+            intervals.put(opType, new TimingInterval(now));
+    }
+
+    TimingIntervals(Map<String, TimingInterval> intervals)
+    {
+        this.intervals = intervals;
+    }
+
+    public TimingIntervals merge(TimingIntervals with, int maxSamples, long start)
+    {
+        assert intervals.size() == with.intervals.size();
+        TreeMap<String, TimingInterval> ret = new TreeMap<>();
+
+        for (String opType : intervals.keySet())
+        {
+            assert with.intervals.containsKey(opType);
+            ret.put(opType, TimingInterval.merge(Arrays.asList(intervals.get(opType), with.intervals.get(opType)), maxSamples, start));
+        }
+
+        return new TimingIntervals(ret);
+    }
+
+    public TimingInterval get(String opType)
+    {
+        return intervals.get(opType);
+    }
+
+    public TimingInterval combine(int maxSamples)
+    {
+        long start = Long.MAX_VALUE;
+        for (TimingInterval ti : intervals.values())
+            start = Math.min(start, ti.startNanos());
+
+        return TimingInterval.merge(intervals.values(), maxSamples, start);
+    }
+
+    public String str(TimingInterval.TimingParameter value)
+    {
+        return str(value, Float.NaN);
+    }
+
+    public String str(TimingInterval.TimingParameter value, float rank)
+    {
+        StringBuilder sb = new StringBuilder("[");
+
+        for (Map.Entry<String, TimingInterval> entry : intervals.entrySet())
+        {
+            sb.append(entry.getKey());
+            sb.append(":");
+            sb.append(entry.getValue().getStringValue(value, rank));
+            sb.append(", ");
+        }
+
+        sb.setLength(sb.length()-2);
+        sb.append("]");
+
+        return sb.toString();
+    }
+
+    public String opRates()
+    {
+        return str(TimingInterval.TimingParameter.OPRATE);
+    }
+    public String partitionRates()
+    {
+        return str(TimingInterval.TimingParameter.PARTITIONRATE);
+    }
+    public String rowRates()
+    {
+        return str(TimingInterval.TimingParameter.ROWRATE);
+    }
+    public String meanLatencies()
+    {
+        return str(TimingInterval.TimingParameter.MEANLATENCY);
+    }
+    public String maxLatencies()
+    {
+        return str(TimingInterval.TimingParameter.MAXLATENCY);
+    }
+    public String medianLatencies()
+    {
+        return str(TimingInterval.TimingParameter.MEDIANLATENCY);
+    }
+    public String rankLatencies(float rank)
+    {
+        return str(TimingInterval.TimingParameter.MEDIANLATENCY, rank);
+    }
+    public String errorCounts()
+    {
+        return str(TimingInterval.TimingParameter.ERRORCOUNT);
+    }
+    public String partitionCounts()
+    {
+        return str(TimingInterval.TimingParameter.PARTITIONCOUNT);
+    }
+
+    public long opRate()
+    {
+        long v = 0;
+        for (TimingInterval interval : intervals.values())
+            v += interval.opRate();
+        return v;
+    }
+
+    public long startNanos()
+    {
+        long start = Long.MAX_VALUE;
+        for (TimingInterval interval : intervals.values())
+            start = Math.min(start, interval.startNanos());
+        return start;
+    }
+
+    public long endNanos()
+    {
+        long end = Long.MIN_VALUE;
+        for (TimingInterval interval : intervals.values())
+            end = Math.max(end, interval.startNanos());
+        return end;
+    }
+
+    public Map<String, TimingInterval> intervals()
+    {
+        return intervals;
+    }
+}