From 5515d74bdfc4f16e5b18e9a69ee5581dd386f4e6 Mon Sep 17 00:00:00 2001
From: phillu <phil@fledermausland.eu>
Date: Sat, 8 Mar 2014 03:31:40 +0100
Subject: [PATCH] added records per second counter

---
 .../filter/counting/IRecordCounting.java      |  7 +++++
 .../filter/counting/RecordCountingFilter.java | 29 +++++++++++++++++++
 .../TraceReconstructionFilter.java            |  3 +-
 .../TracePatternSummarizationFilter.java      |  2 +-
 .../main/FilterConfiguration.java             |  6 +++-
 5 files changed, 44 insertions(+), 3 deletions(-)
 create mode 100644 src/explorviz/live_trace_processing/filter/counting/IRecordCounting.java
 create mode 100644 src/explorviz/live_trace_processing/filter/counting/RecordCountingFilter.java

diff --git a/src/explorviz/live_trace_processing/filter/counting/IRecordCounting.java b/src/explorviz/live_trace_processing/filter/counting/IRecordCounting.java
new file mode 100644
index 0000000..6b081ec
--- /dev/null
+++ b/src/explorviz/live_trace_processing/filter/counting/IRecordCounting.java
@@ -0,0 +1,7 @@
+package explorviz.live_trace_processing.filter.counting;
+
+import explorviz.live_trace_processing.filter.IPipeReceiver;
+
+public interface IRecordCounting extends IPipeReceiver {
+
+}
diff --git a/src/explorviz/live_trace_processing/filter/counting/RecordCountingFilter.java b/src/explorviz/live_trace_processing/filter/counting/RecordCountingFilter.java
new file mode 100644
index 0000000..48a5dd3
--- /dev/null
+++ b/src/explorviz/live_trace_processing/filter/counting/RecordCountingFilter.java
@@ -0,0 +1,29 @@
+package explorviz.live_trace_processing.filter.counting;
+
+import explorviz.live_trace_processing.filter.AbstractFilter;
+import explorviz.live_trace_processing.filter.IPipeReceiver;
+import explorviz.live_trace_processing.record.IRecord;
+import explorviz.live_trace_processing.record.event.AbstractEventRecord;
+import explorviz.live_trace_processing.record.trace.Trace;
+
+public class RecordCountingFilter extends AbstractFilter implements IRecordCounting {
+
+	public RecordCountingFilter(final IPipeReceiver receiver) {
+		super(receiver, 16, 64, "Records/sec");
+		counter.setEnabled(false);
+	}
+
+	@Override
+	public void processRecord(final IRecord record) {
+		if (record instanceof Trace) {
+			final Trace trace = (Trace) record;
+			if (trace.isValid()) {
+				counter.inputObjectsCount(trace.getTraceEvents().size());
+			}
+		} else if (record instanceof AbstractEventRecord) {
+			counter.inputObjectsCount(1);
+		} else {
+			deliver(record);
+		}
+	}
+}
diff --git a/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionFilter.java b/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionFilter.java
index 9dce7c9..39c6425 100644
--- a/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionFilter.java
+++ b/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionFilter.java
@@ -39,8 +39,9 @@ public final class TraceReconstructionFilter extends AbstractFilter implements I
 			traceBuffer.insertEvent(abstractOperationEvent);
 
 			if (traceBuffer.isFinished()) {
-				deliver(traceBuffer.toTrace(true));
+				final Trace trace = traceBuffer.toTrace(true);
 
+				deliver(trace);
 				traceId2trace.remove(traceId);
 			}
 		} else if (record instanceof Trace) {
diff --git a/src/explorviz/live_trace_processing/filter/reduction/summarization/TracePatternSummarizationFilter.java b/src/explorviz/live_trace_processing/filter/reduction/summarization/TracePatternSummarizationFilter.java
index 90b0fbe..5a820a3 100644
--- a/src/explorviz/live_trace_processing/filter/reduction/summarization/TracePatternSummarizationFilter.java
+++ b/src/explorviz/live_trace_processing/filter/reduction/summarization/TracePatternSummarizationFilter.java
@@ -27,7 +27,7 @@ public class TracePatternSummarizationFilter extends AbstractFilter implements I
 	public TracePatternSummarizationFilter(final long maxCollectionDuration,
 			final IPipeReceiver sinkReceiver) {
 		super(sinkReceiver, Constants.TRACE_SUMMARIZATION_DISRUPTOR_SIZE,
-				Constants.TRACE_SUMMARIZATION_OUTPUT_BUFFER_SIZE, "Reduced traces / sec");
+				Constants.TRACE_SUMMARIZATION_OUTPUT_BUFFER_SIZE, "Reduced traces/sec");
 
 		this.maxCollectionDuration = maxCollectionDuration;
 	}
diff --git a/src/explorviz/live_trace_processing/main/FilterConfiguration.java b/src/explorviz/live_trace_processing/main/FilterConfiguration.java
index 8590ac5..cbce1f6 100644
--- a/src/explorviz/live_trace_processing/main/FilterConfiguration.java
+++ b/src/explorviz/live_trace_processing/main/FilterConfiguration.java
@@ -5,6 +5,8 @@ import java.util.concurrent.TimeUnit;
 import explorviz.live_trace_processing.configuration.Configuration;
 import explorviz.live_trace_processing.configuration.ConfigurationFactory;
 import explorviz.live_trace_processing.filter.ITraceSink;
+import explorviz.live_trace_processing.filter.counting.IRecordCounting;
+import explorviz.live_trace_processing.filter.counting.RecordCountingFilter;
 import explorviz.live_trace_processing.filter.reconstruction.ITraceReconstruction;
 import explorviz.live_trace_processing.filter.reconstruction.TraceReconstructionFilter;
 import explorviz.live_trace_processing.filter.reduction.ITraceReduction;
@@ -14,8 +16,10 @@ import explorviz.live_trace_processing.reader.TCPReader;
 public class FilterConfiguration {
 	public static void configureAndStartFilters(final Configuration configuration,
 			final ITraceSink sink) {
+		final IRecordCounting recordCounting = new RecordCountingFilter(sink);
+
 		final ITraceReduction traceReduction = new TracePatternSummarizationFilter(
-				TimeUnit.MILLISECONDS.toNanos(990), sink);
+				TimeUnit.MILLISECONDS.toNanos(990), recordCounting);
 
 		final ITraceReconstruction traceReconstruction = new TraceReconstructionFilter(
 				TimeUnit.SECONDS.toNanos(4), traceReduction);
-- 
GitLab