diff --git a/.classpath b/.classpath index bd227507e3e548c4ef30b2d86972c7cecbf04b1a..22783fffccc645d5ff903c5baf4f297c83b05efb 100644 --- a/.classpath +++ b/.classpath @@ -3,6 +3,7 @@ <classpathentry excluding="kieker/analysis/plugin/reader/mq/" kind="src" path="src"/> <classpathentry kind="src" path="test"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> <classpathentry kind="lib" path="lib/disruptor-3.2.0.jar"> <attributes> <attribute name="javadoc_location" value="jar:platform:/resource/worker/lib/disruptor-3.2.0-javadoc.jar!/"/> diff --git a/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java b/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java index a97ca032e32dfe1f945b0ba04763191177054175..13cd5d6dc901861e25087ad6bf68bb2a8848f914 100644 --- a/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java +++ b/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java @@ -7,7 +7,6 @@ import explorviz.live_trace_processing.record.event.AbstractOperationEventRecord import explorviz.live_trace_processing.record.event.normal.AfterFailedOperationEventRecord; import explorviz.live_trace_processing.record.event.normal.AfterOperationEventRecord; import explorviz.live_trace_processing.record.event.normal.BeforeOperationEventRecord; -import explorviz.live_trace_processing.record.misc.HostApplicationMetaDataRecord; import explorviz.live_trace_processing.record.trace.Trace; class TraceReconstructionBuffer { @@ -16,7 +15,6 @@ class TraceReconstructionBuffer { private static final int INITIAL_EVENT_CAPACITY = 100; - private HostApplicationMetaDataRecord traceMetadata; private final List<AbstractOperationEventRecord> events = new ArrayList<AbstractOperationEventRecord>( INITIAL_EVENT_CAPACITY); @@ -69,14 +67,6 @@ class TraceReconstructionBuffer { return orderIndex; } - public void setTrace(final HostApplicationMetaDataRecord trace) { - if (traceMetadata != null) { - damaged = true; - return; - } - traceMetadata = trace; - } - public final boolean isFinished() { return !isInvalid(); } @@ -87,7 +77,7 @@ class TraceReconstructionBuffer { } public final Trace toTrace() { - return new Trace(traceMetadata, events, events.get(0).getTraceId()); + return new Trace(events, false); } // private static final class AbstractOperationEventComperator implements diff --git a/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionFilter.java b/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionFilter.java index 5cfd6828360872dbc282e79a0984e9748b19ab97..6c39b3052ca46c6395693668d511be2995ee3eee 100644 --- a/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionFilter.java +++ b/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionFilter.java @@ -13,7 +13,6 @@ import explorviz.live_trace_processing.filter.reduction.summarization.TracePatte import explorviz.live_trace_processing.reader.TimeProvider; import explorviz.live_trace_processing.record.IRecord; import explorviz.live_trace_processing.record.event.AbstractOperationEventRecord; -import explorviz.live_trace_processing.record.misc.HostApplicationMetaDataRecord; import explorviz.live_trace_processing.record.misc.TerminateRecord; import explorviz.live_trace_processing.record.misc.TimedPeriodRecord; import explorviz.live_trace_processing.record.trace.Trace; @@ -40,9 +39,8 @@ public final class TraceReconstructionFilter extends AbstractFilter { final AbstractOperationEventRecord abstractOperationEvent = ((AbstractOperationEventRecord) record); final long traceId = abstractOperationEvent.getTraceId(); - final TraceReconstructionBuffer traceBuffer = getBufferForTraceId( - abstractOperationEvent.getTraceId(), - abstractOperationEvent.getHostApplicationMetadata()); + final TraceReconstructionBuffer traceBuffer = getBufferForTraceId(abstractOperationEvent + .getTraceId()); traceBuffer.insertEvent(abstractOperationEvent); if (traceBuffer.isFinished()) { @@ -54,7 +52,7 @@ public final class TraceReconstructionFilter extends AbstractFilter { if (trace.isValid()) { deliver(trace); } else { - getBufferForTraceId(trace.getTraceId(), trace.getHostMetadata()); + getBufferForTraceId(trace.getTraceEvents().get(0).getTraceId()); } } else if (record instanceof TimedPeriodRecord) { checkForTimeouts(TimeProvider.getCurrentTimestamp()); @@ -66,12 +64,10 @@ public final class TraceReconstructionFilter extends AbstractFilter { } } - private TraceReconstructionBuffer getBufferForTraceId(final long traceId, - final HostApplicationMetaDataRecord metadata) { + private TraceReconstructionBuffer getBufferForTraceId(final long traceId) { TraceReconstructionBuffer traceBuffer = traceId2trace.get(traceId); if (traceBuffer == null) { traceBuffer = new TraceReconstructionBuffer(); - traceBuffer.setTrace(metadata); traceId2trace.put(traceId, traceBuffer); } return traceBuffer; 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 477ead12c98a8e4e0f418eaf6507efed160a4429..070575243214762967d3f92121b7e9d883c33d19 100644 --- a/src/explorviz/live_trace_processing/filter/reduction/summarization/TracePatternSummarizationBuffer.java +++ b/src/explorviz/live_trace_processing/filter/reduction/summarization/TracePatternSummarizationBuffer.java @@ -29,14 +29,13 @@ class TracePatternSummarizationBuffer { if (accumulator == null) { accumulator = trace; } else { - final List<AbstractOperationEventRecord> aggregatedRecords = accumulator.getTraceEvents(); + final List<AbstractOperationEventRecord> aggregatedRecords = accumulator + .getTraceEvents(); final List<AbstractOperationEventRecord> records = trace.getTraceEvents(); for (int i = 0; i < aggregatedRecords.size(); i++) { aggregatedRecords.get(i).getRuntime().merge(records.get(i).getRuntime()); } - - accumulator.getRuntime().merge(trace.getRuntime()); } } } \ No newline at end of file diff --git a/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java b/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java index dade9e48464be33ed6db1e20618a78681316740c..9715b4fbfa26a443c28c07cea27194258efbc530 100644 --- a/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java +++ b/src/explorviz/live_trace_processing/reader/TCPReaderOneClient.java @@ -15,13 +15,14 @@ import explorviz.live_trace_processing.Constants; import explorviz.live_trace_processing.filter.RecordArrayEvent; import explorviz.live_trace_processing.filter.counting.CountingThroughputFilter; import explorviz.live_trace_processing.record.IRecord; +import explorviz.live_trace_processing.record.event.HostApplicationMetaDataRecord; import explorviz.live_trace_processing.record.event.normal.AfterFailedOperationEventRecord; import explorviz.live_trace_processing.record.event.normal.AfterOperationEventRecord; import explorviz.live_trace_processing.record.event.normal.BeforeOperationEventRecord; -import explorviz.live_trace_processing.record.misc.HostApplicationMetaDataRecord; 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.RuntimeStatisticInformation; public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalReceiver { private HostApplicationMetaDataRecord hostApplicationMetadata; @@ -195,7 +196,7 @@ public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalRec if (operation != null) { putInRingBuffer(new BeforeOperationEventRecord(timestamp, traceId, orderIndex, - operation, hostApplicationMetadata)); + operation, hostApplicationMetadata, new RuntimeStatisticInformation(timestamp))); } else { final byte[] message = new byte[BeforeOperationEventRecord.BYTE_LENGTH_WITH_CLAZZ_ID]; buffer.position(buffer.position() @@ -217,7 +218,8 @@ public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalRec if ((operation != null) && (cause != null)) { putInRingBuffer(new AfterFailedOperationEventRecord(timestamp, traceId, orderIndex, - operation, cause, hostApplicationMetadata)); + operation, cause, hostApplicationMetadata, new RuntimeStatisticInformation( + timestamp))); } else { final byte[] message = new byte[AfterFailedOperationEventRecord.BYTE_LENGTH_WITH_CLAZZ_ID]; buffer.position(buffer.position() @@ -236,7 +238,7 @@ public class TCPReaderOneClient extends Thread implements IPeriodicTimeSignalRec final String operation = getStringFromRegistry(operationId); if (operation != null) { putInRingBuffer(new AfterOperationEventRecord(timestamp, traceId, orderIndex, - operation, hostApplicationMetadata)); + operation, hostApplicationMetadata, new RuntimeStatisticInformation(timestamp))); } else { final byte[] message = new byte[AfterOperationEventRecord.BYTE_LENGTH_WITH_CLAZZ_ID]; buffer.position(buffer.position() - AfterOperationEventRecord.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 new file mode 100644 index 0000000000000000000000000000000000000000..3fae4a3ca75157e5fef771d9d0573cd1f7c2a8ae --- /dev/null +++ b/test/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBufferTest.java @@ -0,0 +1,22 @@ +package explorviz.live_trace_processing.filter.reconstruction; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +import explorviz.live_trace_processing.record.event.HostApplicationMetaDataRecord; +import explorviz.live_trace_processing.record.event.normal.BeforeOperationEventRecord; +import explorviz.live_trace_processing.record.trace.RuntimeStatisticInformation; + +public class TraceReconstructionBufferTest { + + @Test + public void testInsertEvent() throws Exception { + final TraceReconstructionBuffer traceReconstructionBuffer = new TraceReconstructionBuffer(); + traceReconstructionBuffer.insertEvent(new BeforeOperationEventRecord(1000, 1, 0, "test", + new HostApplicationMetaDataRecord("testHost", "testApp"), + new RuntimeStatisticInformation(1000))); + assertEquals(1000, traceReconstructionBuffer.getMaxLoggingTimestamp()); + } + +}