From c73b54db513a1b699e8a34c49715d2959f202c8c Mon Sep 17 00:00:00 2001
From: Florian Fittkau <ffi@informatik.uni-kiel.de>
Date: Thu, 12 Dec 2013 00:04:47 +0100
Subject: [PATCH] runtime statistics created at first real usage

---
 .../filter/reconstruction/TraceReconstructionBuffer.java   | 4 +++-
 .../summarization/TracePatternSummarizationBuffer.java     | 4 ++--
 .../live_trace_processing/main/FilterConfiguration.java    | 2 +-
 .../live_trace_processing/reader/TCPReaderOneClient.java   | 7 +++----
 .../reconstruction/TraceReconstructionBufferTest.java      | 4 +---
 5 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java b/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java
index a82d32b..f2e5f93 100644
--- a/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java
+++ b/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java
@@ -10,6 +10,7 @@ import explorviz.live_trace_processing.record.event.AbstractAfterEventRecord;
 import explorviz.live_trace_processing.record.event.AbstractAfterFailedEventRecord;
 import explorviz.live_trace_processing.record.event.AbstractBeforeEventRecord;
 import explorviz.live_trace_processing.record.event.AbstractEventRecord;
+import explorviz.live_trace_processing.record.trace.RuntimeStatisticInformation;
 import explorviz.live_trace_processing.record.trace.Trace;
 
 class TraceReconstructionBuffer {
@@ -85,7 +86,8 @@ class TraceReconstructionBuffer {
 				final AbstractBeforeEventRecord beforeEvent = stack.pop();
 
 				final long time = event.getLoggingTimestamp() - beforeEvent.getLoggingTimestamp();
-				beforeEvent.getRuntime().set(time);
+				beforeEvent.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1, time,
+						time * time));
 			}
 		}
 		return new Trace(events, valid);
diff --git a/src/explorviz/live_trace_processing/filter/reduction/summarization/TracePatternSummarizationBuffer.java b/src/explorviz/live_trace_processing/filter/reduction/summarization/TracePatternSummarizationBuffer.java
index d6d7635..6a665c1 100644
--- a/src/explorviz/live_trace_processing/filter/reduction/summarization/TracePatternSummarizationBuffer.java
+++ b/src/explorviz/live_trace_processing/filter/reduction/summarization/TracePatternSummarizationBuffer.java
@@ -35,8 +35,8 @@ class TracePatternSummarizationBuffer {
 					final AbstractBeforeEventRecord abstractBeforeEventRecord = (AbstractBeforeEventRecord) event;
 					final AbstractBeforeEventRecord abstractBeforeEventRecord2 = (AbstractBeforeEventRecord) records
 							.get(i);
-					abstractBeforeEventRecord.getRuntime().merge(
-							abstractBeforeEventRecord2.getRuntime());
+					abstractBeforeEventRecord.getRuntimeStatisticInformation().merge(
+							abstractBeforeEventRecord2.getRuntimeStatisticInformation());
 				}
 			}
 		}
diff --git a/src/explorviz/live_trace_processing/main/FilterConfiguration.java b/src/explorviz/live_trace_processing/main/FilterConfiguration.java
index 4975c41..8590ac5 100644
--- a/src/explorviz/live_trace_processing/main/FilterConfiguration.java
+++ b/src/explorviz/live_trace_processing/main/FilterConfiguration.java
@@ -15,7 +15,7 @@ public class FilterConfiguration {
 	public static void configureAndStartFilters(final Configuration configuration,
 			final ITraceSink sink) {
 		final ITraceReduction traceReduction = new TracePatternSummarizationFilter(
-				TimeUnit.SECONDS.toNanos(1), sink);
+				TimeUnit.MILLISECONDS.toNanos(990), sink);
 
 		final ITraceReconstruction traceReconstruction = new TraceReconstructionFilter(
 				TimeUnit.SECONDS.toNanos(4), traceReduction);
diff --git a/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java b/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java
index 022dfeb..734ad7d 100644
--- a/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java
+++ b/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java
@@ -28,7 +28,6 @@ import explorviz.live_trace_processing.record.misc.StringRegistryRecord;
 import explorviz.live_trace_processing.record.misc.SystemMonitoringRecord;
 import explorviz.live_trace_processing.record.misc.TimedPeriodRecord;
 import explorviz.live_trace_processing.record.trace.HostApplicationMetaDataRecord;
-import explorviz.live_trace_processing.record.trace.RuntimeStatisticInformation;
 import explorviz.live_trace_processing.record.trace.Trace;
 
 public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalReceiver {
@@ -284,7 +283,7 @@ public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalRec
 			final String operation = stringRegistry.getStringFromId(operationId);
 
 			putInRingBuffer(new BeforeOperationEventRecord(timestamp, traceId, orderIndex,
-					objectId, operation, hostApplicationMetadata, new RuntimeStatisticInformation()));
+					objectId, operation, hostApplicationMetadata));
 		} catch (final IdNotAvailableException e) {
 			putInWaitingMessages(buffer, BeforeOperationEventRecord.COMPRESSED_BYTE_LENGTH + 1);
 		}
@@ -335,7 +334,7 @@ public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalRec
 			final String operation = stringRegistry.getStringFromId(operationId);
 
 			putInRingBuffer(new BeforeConstructorEventRecord(timestamp, traceId, orderIndex,
-					objectId, operation, hostApplicationMetadata, new RuntimeStatisticInformation()));
+					objectId, operation, hostApplicationMetadata));
 		} catch (final IdNotAvailableException e) {
 			putInWaitingMessages(buffer,
 					BeforeConstructorEventRecord.COMPRESSED_BYTE_LENGTH_WITH_CLAZZ_ID);
@@ -378,7 +377,7 @@ public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalRec
 			final String operation = stringRegistry.getStringFromId(operationId);
 
 			putInRingBuffer(new BeforeStaticOperationEventRecord(timestamp, traceId, orderIndex,
-					operation, hostApplicationMetadata, new RuntimeStatisticInformation()));
+					operation, hostApplicationMetadata));
 		} catch (final IdNotAvailableException e) {
 			putInWaitingMessages(buffer,
 					BeforeStaticOperationEventRecord.COMPRESSED_BYTE_LENGTH_WITH_CLAZZ_ID);
diff --git a/test/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBufferTest.java b/test/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBufferTest.java
index 9f5ec67..66d2029 100644
--- a/test/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBufferTest.java
+++ b/test/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBufferTest.java
@@ -6,7 +6,6 @@ import org.junit.Test;
 
 import explorviz.live_trace_processing.record.event.normal.BeforeOperationEventRecord;
 import explorviz.live_trace_processing.record.trace.HostApplicationMetaDataRecord;
-import explorviz.live_trace_processing.record.trace.RuntimeStatisticInformation;
 
 public class TraceReconstructionBufferTest {
 
@@ -14,8 +13,7 @@ public class TraceReconstructionBufferTest {
 	public void testInsertEvent() throws Exception {
 		final TraceReconstructionBuffer traceReconstructionBuffer = new TraceReconstructionBuffer();
 		traceReconstructionBuffer.insertEvent(new BeforeOperationEventRecord(1000, 1, 0, 0, "test",
-				new HostApplicationMetaDataRecord("testHost", "testApp"),
-				new RuntimeStatisticInformation()));
+				new HostApplicationMetaDataRecord("testHost", "testApp")));
 		assertTrue(true); // TODO
 	}
 
-- 
GitLab