Skip to content
Snippets Groups Projects
Commit 643a2166 authored by Florian Fittkau's avatar Florian Fittkau
Browse files

WiP

parent e2dd81f6
No related branches found
No related tags found
No related merge requests found
Showing
with 432 additions and 619 deletions
......@@ -9,7 +9,7 @@ explorviz.live_trace_processing.writer_load_balancing_port=9999
explorviz.live_trace_processing.writer_load_balancing_wait_time=20000
explorviz.live_trace_processing.writer_load_balancing_scaling_group=analysis-worker
explorviz.live_trace_processing.sending_buffer_size=2097152
explorviz.live_trace_processing.sending_buffer_size=262144
######################## Monitoring ########################
......
......@@ -6,6 +6,7 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;
import java.util.List;
import explorviz.live_trace_processing.Constants;
import explorviz.live_trace_processing.StringRegistry;
......@@ -14,9 +15,11 @@ import explorviz.live_trace_processing.filter.AbstractSink;
import explorviz.live_trace_processing.filter.SinglePipeConnector;
import explorviz.live_trace_processing.record.IRecord;
import explorviz.live_trace_processing.record.ISerializableRecord;
import explorviz.live_trace_processing.record.event.AbstractEventRecord;
import explorviz.live_trace_processing.record.misc.StringRegistryRecord;
import explorviz.live_trace_processing.record.misc.TerminateRecord;
import explorviz.live_trace_processing.record.misc.TimedPeriodRecord;
import explorviz.live_trace_processing.record.trace.Trace;
import explorviz.live_trace_processing.writer.IRecordSender;
import explorviz.live_trace_processing.writer.IStringRecordSender;
import explorviz.live_trace_processing.writer.IWriter;
......@@ -29,7 +32,8 @@ IRecordSender {
private final StringRegistry stringRegistry = new StringRegistry(this);
private final ByteBuffer buffer = ByteBuffer.allocateDirect(Constants.SENDING_BUFFER_SIZE);
private final ByteBuffer sendingBuffer = ByteBuffer.allocate(Constants.SENDING_BUFFER_SIZE);
private final ByteBuffer stringBuffer = ByteBuffer.allocate(Constants.SENDING_BUFFER_SIZE);
private volatile boolean shouldDisconnect = false;
......@@ -38,7 +42,7 @@ IRecordSender {
public TCPConnector(final SinglePipeConnector<IRecord> tcpConnectorConnector,
final String hostname, final int port, final Configuration configuration) {
this.tcpConnectorConnector = tcpConnectorConnector;
buffer.clear();
sendingBuffer.clear();
try {
setProviderURL(new URL("http://" + hostname + ":" + port));
} catch (final MalformedURLException e) {
......@@ -77,24 +81,31 @@ IRecordSender {
@Override
public void sendOutStringRecord(final StringRegistryRecord record) {
final ByteBuffer stringBuffer = ByteBuffer.allocate(record.getRecordSizeInBytes());
record.putIntoByteBuffer(stringBuffer, stringRegistry, this);
send(stringBuffer);
}
@Override
public void processRecord(final IRecord record) {
if (record instanceof ISerializableRecord) {
if (record instanceof Trace) {
final Trace trace = (Trace) record;
final List<AbstractEventRecord> traceEvents = trace.getTraceEvents();
for (final AbstractEventRecord event : traceEvents) {
if (sendingBuffer.remaining() < event.getRecordSizeInBytes()) {
send(sendingBuffer);
}
event.putIntoByteBuffer(sendingBuffer, stringRegistry, this);
}
send(sendingBuffer);
} else if (record instanceof ISerializableRecord) {
final ISerializableRecord serializableRecord = (ISerializableRecord) record;
if (buffer.remaining() < serializableRecord.getRecordSizeInBytes()) {
send(buffer);
System.out.println("required: " + serializableRecord.getRecordSizeInBytes()
+ " and capacity is " + buffer.capacity());
if (sendingBuffer.remaining() < serializableRecord.getRecordSizeInBytes()) {
send(sendingBuffer);
}
serializableRecord.putIntoByteBuffer(buffer, stringRegistry, this);
serializableRecord.putIntoByteBuffer(sendingBuffer, stringRegistry, this);
} else if (record instanceof TimedPeriodRecord) {
// send(buffer);
// this the end of timedperiodrecords - master has own
// this the end of timedperiodrecords - master has its own
} else if (record instanceof TerminateRecord) {
terminate();
}
......
......@@ -77,7 +77,7 @@ class TraceReconstructionBuffer {
return ((openEvents != 0) || events.isEmpty() || ((maxOrderIndex + 1) != events.size()));
}
public final Trace toTrace(final boolean valid) {
public final Trace toTrace() {
final Stack<AbstractBeforeEventRecord> stack = new Stack<AbstractBeforeEventRecord>();
boolean containsRemoteRecord = false;
......@@ -89,21 +89,30 @@ class TraceReconstructionBuffer {
|| (event instanceof BeforeSentRemoteCallRecord)) {
containsRemoteRecord = true;
}
} else if ((event instanceof AbstractAfterEventRecord)
|| (event instanceof AbstractAfterFailedEventRecord)) {
} else if (event instanceof AbstractAfterEventRecord) {
final AbstractAfterEventRecord abstractAfterEventRecord = (AbstractAfterEventRecord) event;
if (!stack.isEmpty()) {
final AbstractBeforeEventRecord beforeEvent = stack.pop();
if (beforeEvent.getRuntimeStatisticInformation() == null) {
final long time = event.getLoggingTimestamp()
- beforeEvent.getLoggingTimestamp();
final long time = abstractAfterEventRecord.getMethodDuration();
beforeEvent.setRuntimeStatisticInformation(new RuntimeStatisticInformation(
1, time, time * time));
}
}
} else if (event instanceof AbstractAfterFailedEventRecord) {
final AbstractAfterFailedEventRecord abstractAfterFailedEventRecord = (AbstractAfterFailedEventRecord) event;
if (!stack.isEmpty()) {
final AbstractBeforeEventRecord beforeEvent = stack.pop();
if (beforeEvent.getRuntimeStatisticInformation() == null) {
final long time = abstractAfterFailedEventRecord.getMethodDuration();
beforeEvent.setRuntimeStatisticInformation(new RuntimeStatisticInformation(
1, time, time * time));
}
}
}
}
return new Trace(new ArrayList<AbstractEventRecord>(events), valid, containsRemoteRecord,
events.size());
return new Trace(new ArrayList<AbstractEventRecord>(events), containsRemoteRecord);
}
}
package explorviz.live_trace_processing.filter.reconstruction;
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Queue;
......@@ -14,7 +13,6 @@ import explorviz.live_trace_processing.record.IRecord;
import explorviz.live_trace_processing.record.event.AbstractEventRecord;
import explorviz.live_trace_processing.record.misc.TerminateRecord;
import explorviz.live_trace_processing.record.misc.TimedPeriodRecord;
import explorviz.live_trace_processing.record.trace.Trace;
public final class TraceReconstructionFilter extends AbstractFilter implements Runnable {
private final long maxTraceTimeout;
......@@ -46,16 +44,9 @@ public final class TraceReconstructionFilter extends AbstractFilter implements R
traceBuffer.insertEvent(abstractOperationEvent);
if (traceBuffer.isFinished()) {
deliver(traceBuffer.toTrace(true));
deliver(traceBuffer.toTrace());
traceId2trace.remove(traceId);
}
} else if (record instanceof Trace) {
final Trace trace = (Trace) record;
if (trace.isValid()) {
deliver(trace);
} else {
getBufferForTraceId(trace.getTraceEvents().get(0).getTraceId());
}
} else if (record instanceof TimedPeriodRecord) {
checkForTimeouts(TimeProvider.getCurrentTimestamp());
deliver(record);
......@@ -78,9 +69,12 @@ public final class TraceReconstructionFilter extends AbstractFilter implements R
private void checkForTimeouts(final long timestamp) {
final long traceTimeout = timestamp - maxTraceTimeout;
final List<Long> traceIdsToRemove = new ArrayList<Long>();
for (final Entry<Long, TraceReconstructionBuffer> entry : traceId2trace.entrySet()) {
final Iterator<Entry<Long, TraceReconstructionBuffer>> iterator = traceId2trace.entrySet()
.iterator();
while (iterator.hasNext()) {
final Entry<Long, TraceReconstructionBuffer> entry = iterator.next();
final TraceReconstructionBuffer traceBuffer = entry.getValue();
if (traceBuffer.isUpdatedInThisPeriod()) {
traceBuffer.setUpdatedInThisPeriod(false);
......@@ -88,20 +82,16 @@ public final class TraceReconstructionFilter extends AbstractFilter implements R
traceBuffer.updateLastBufferInsert();
if ((timestamp - traceBuffer.getLastBufferInsert()) <= traceTimeout) {
deliver(traceBuffer.toTrace(false));
traceIdsToRemove.add(entry.getKey());
deliver(traceBuffer.toTrace());
iterator.remove();
}
}
}
for (final long traceIdToRemove : traceIdsToRemove) {
traceId2trace.remove(traceIdToRemove);
}
}
private void terminate() {
for (final TraceReconstructionBuffer entry : traceId2trace.values()) {
deliver(entry.toTrace(false));
deliver(entry.toTrace());
}
traceId2trace.clear();
}
......
......@@ -45,7 +45,6 @@ public class TracesSummarizationFilter extends AbstractFilter {
if (record instanceof Trace) {
final Trace trace = (Trace) record;
if (trace.isValid()) {
if (!trace.containsRemoteRecord()) {
insertIntoBuffer(trace);
} else {
......@@ -53,10 +52,6 @@ public class TracesSummarizationFilter extends AbstractFilter {
makeTraceElementsAccumulator(trace);
deliver(trace);
}
} else {
makeTraceElementsAccumulator(trace);
deliver(trace);
}
} else if (record instanceof TimedPeriodRecord) {
processTimeoutQueue(TimeProvider.getCurrentTimestamp());
deliver(record);
......
......@@ -19,13 +19,13 @@ public class FilterConfiguration {
final SinglePipeConnector<IRecord> traceReductionConnector = new SinglePipeConnector<IRecord>(
Constants.TRACE_RECONSTRUCTION_DISRUPTOR_SIZE);
new TracesSummarizationFilter(traceReductionConnector, TimeUnit.SECONDS.toNanos(4), sink)
new TracesSummarizationFilter(traceReductionConnector, TimeUnit.SECONDS.toNanos(3), sink)
.start();
final PipesMerger<IRecord> traceReconstructionMerger = new PipesMerger<IRecord>(
Constants.TCP_READER_DISRUPTOR_SIZE);
new TraceReconstructionFilter(traceReconstructionMerger, TimeUnit.SECONDS.toNanos(4),
new TraceReconstructionFilter(traceReconstructionMerger, TimeUnit.SECONDS.toNanos(3),
traceReductionConnector.registerProducer()).start();
new TCPReader(configuration.getIntProperty(ConfigurationFactory.READER_LISTENING_PORT,
......
......@@ -3,9 +3,6 @@ package explorviz.live_trace_processing.reader;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.channels.ServerSocketChannel;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Queue;
import java.util.concurrent.TimeUnit;
......@@ -25,9 +22,6 @@ public final class TCPReader implements IPeriodicTimeSignalReceiver {
private ServerSocketChannel serversocket;
private final List<TCPReaderOneClient> threads = Collections
.synchronizedList(new ArrayList<TCPReaderOneClient>());
private final PipesMerger<IRecord> merger;
public TCPReader(final int listeningPort, final PipesMerger<IRecord> traceReconstructionMerger) {
......@@ -55,10 +49,7 @@ public final class TCPReader implements IPeriodicTimeSignalReceiver {
try {
open();
while (active) {
final TCPReaderOneClient thread = new TCPReaderOneClient(serversocket.accept(),
merger);
thread.start();
threads.add(thread);
new TCPReaderOneClient(serversocket.accept(), merger).start();
}
} catch (final IOException ex) {
LOG.info("Error in read() " + ex.getMessage());
......
......@@ -15,7 +15,6 @@ import explorviz.live_trace_processing.IdNotAvailableException;
import explorviz.live_trace_processing.StringRegistry;
import explorviz.live_trace_processing.filter.PipesMerger;
import explorviz.live_trace_processing.record.IRecord;
import explorviz.live_trace_processing.record.event.AbstractEventRecord;
import explorviz.live_trace_processing.record.event.constructor.AfterConstructorEventRecord;
import explorviz.live_trace_processing.record.event.constructor.AfterFailedConstructorEventRecord;
import explorviz.live_trace_processing.record.event.constructor.BeforeConstructorEventRecord;
......@@ -34,7 +33,6 @@ import explorviz.live_trace_processing.record.event.statics.BeforeStaticOperatio
import explorviz.live_trace_processing.record.misc.StringRegistryRecord;
import explorviz.live_trace_processing.record.misc.SystemMonitoringRecord;
import explorviz.live_trace_processing.record.trace.HostApplicationMetaDataRecord;
import explorviz.live_trace_processing.record.trace.Trace;
class TCPReaderOneClient extends Thread {
......@@ -47,10 +45,6 @@ class TCPReaderOneClient extends Thread {
private final SocketChannel socketChannel;
private final String remoteAddress = "";
private Trace currentlyOpenTrace;
private final Queue<IRecord> queue;
private final PipesMerger<IRecord> merger;
......@@ -62,9 +56,9 @@ class TCPReaderOneClient extends Thread {
@Override
public void run() {
final ByteBuffer buffer = ByteBuffer.allocate(2 * 1024 * 1024);
try {
final ByteBuffer buffer = ByteBuffer.allocate(256 * 1024);
String remoteAddress = "";
try {
if (socketChannel.isConnected()) {
remoteAddress = ((InetSocketAddress) socketChannel.getRemoteAddress())
.getHostName();
......@@ -100,12 +94,6 @@ class TCPReaderOneClient extends Thread {
// }
private final void messagesfromByteArray(final ByteBuffer buffer) {
boolean shouldProceed = true;
if (currentlyOpenTrace != null) {
shouldProceed = readInTraceRecordChunks(buffer);
}
if (shouldProceed) {
while (buffer.remaining() > 0) {
final byte clazzId = buffer.get();
switch (clazzId) {
......@@ -182,34 +170,6 @@ class TCPReaderOneClient extends Thread {
buffer.compact();
return;
}
case Trace.CLAZZ_ID: {
if (buffer.remaining() >= Trace.BYTE_LENGTH) {
final byte validByte = buffer.get();
boolean valid = true;
if (validByte == (byte) 0) {
valid = false;
}
final byte containsRemoteRecordByte = buffer.get();
boolean containsRemoteRecord = true;
if (containsRemoteRecordByte == (byte) 0) {
containsRemoteRecord = false;
}
final int eventsLength = buffer.getInt();
final List<AbstractEventRecord> events = new ArrayList<AbstractEventRecord>(
eventsLength);
currentlyOpenTrace = new Trace(events, valid, containsRemoteRecord,
eventsLength);
if (!readInTraceRecordChunks(buffer)) {
return;
}
break;
}
buffer.position(buffer.position() - 1);
buffer.compact();
return;
}
case BeforeConstructorEventRecord.CLAZZ_ID: {
if (buffer.remaining() >= BeforeConstructorEventRecord.COMPRESSED_BYTE_LENGTH) {
readInBeforeConstructorEvent(buffer);
......@@ -318,6 +278,48 @@ class TCPReaderOneClient extends Thread {
buffer.compact();
return;
}
case BeforeOperationEventRecord.CLAZZ_ID_FROM_WORKER: {
if (buffer.remaining() >= BeforeOperationEventRecord.BYTE_LENGTH) {
try {
putInQueue(new BeforeOperationEventRecord(buffer, stringRegistry));
} catch (final IdNotAvailableException e) {
// should not happen
e.printStackTrace();
}
break;
}
buffer.position(buffer.position() - 1);
buffer.compact();
return;
}
case AfterFailedOperationEventRecord.CLAZZ_ID_FROM_WORKER: {
if (buffer.remaining() >= AfterFailedOperationEventRecord.BYTE_LENGTH) {
try {
putInQueue(new AfterFailedOperationEventRecord(buffer, stringRegistry));
} catch (final IdNotAvailableException e) {
// should not happen
e.printStackTrace();
}
break;
}
buffer.position(buffer.position() - 1);
buffer.compact();
return;
}
case AfterOperationEventRecord.CLAZZ_ID_FROM_WORKER: {
if (buffer.remaining() >= AfterOperationEventRecord.BYTE_LENGTH) {
try {
putInQueue(new AfterOperationEventRecord(buffer, stringRegistry));
} catch (final IdNotAvailableException e) {
// should not happen
e.printStackTrace();
}
break;
}
buffer.position(buffer.position() - 1);
buffer.compact();
return;
}
case SystemMonitoringRecord.CLAZZ_ID_FROM_WORKER: {
if (buffer.remaining() >= SystemMonitoringRecord.BYTE_LENGTH) {
try {
......@@ -333,95 +335,187 @@ class TCPReaderOneClient extends Thread {
buffer.compact();
return;
}
default: {
System.out.println("unknown class id " + clazzId + " at offset "
+ (buffer.position() - 1));
buffer.clear();
case BeforeConstructorEventRecord.CLAZZ_ID_FROM_WORKER: {
if (buffer.remaining() >= BeforeConstructorEventRecord.BYTE_LENGTH) {
try {
putInQueue(new BeforeConstructorEventRecord(buffer, stringRegistry));
} catch (final IdNotAvailableException e) {
// should not happen
e.printStackTrace();
}
break;
}
buffer.position(buffer.position() - 1);
buffer.compact();
return;
}
case AfterFailedConstructorEventRecord.CLAZZ_ID_FROM_WORKER: {
if (buffer.remaining() >= AfterFailedConstructorEventRecord.BYTE_LENGTH) {
try {
putInQueue(new AfterFailedConstructorEventRecord(buffer, stringRegistry));
} catch (final IdNotAvailableException e) {
// should not happen
e.printStackTrace();
}
break;
}
buffer.clear();
buffer.position(buffer.position() - 1);
buffer.compact();
return;
}
case AfterConstructorEventRecord.CLAZZ_ID_FROM_WORKER: {
if (buffer.remaining() >= AfterConstructorEventRecord.BYTE_LENGTH) {
try {
putInQueue(new AfterConstructorEventRecord(buffer, stringRegistry));
} catch (final IdNotAvailableException e) {
// should not happen
e.printStackTrace();
}
break;
}
private boolean readInTraceRecordChunks(final ByteBuffer buffer) {
if (buffer.remaining() >= 1) {
final byte clazzId = buffer.get();
if (clazzId == StringRegistryRecord.CLAZZ_ID) {
int mapId = 0;
int stringLength = 0;
if (buffer.remaining() >= 8) {
mapId = buffer.getInt();
stringLength = buffer.getInt();
} else {
buffer.position(buffer.position() - 1);
buffer.compact();
return false;
return;
}
if (buffer.remaining() >= stringLength) {
final byte[] stringByteArray = new byte[stringLength];
buffer.get(stringByteArray);
stringRegistry.putStringRecord(mapId, new String(stringByteArray));
checkWaitingMessages();
boolean cleared = false;
if (buffer.remaining() == 0) {
buffer.clear();
cleared = true;
case BeforeReceivedRemoteCallRecord.CLAZZ_ID_FROM_WORKER: {
if (buffer.remaining() >= BeforeReceivedRemoteCallRecord.BYTE_LENGTH) {
try {
putInQueue(new BeforeReceivedRemoteCallRecord(buffer, stringRegistry));
} catch (final IdNotAvailableException e) {
// should not happen
e.printStackTrace();
}
return !cleared;
} else {
buffer.position(buffer.position() - 9);
break;
}
buffer.position(buffer.position() - 1);
buffer.compact();
return;
}
} else if (buffer.remaining() >= (4 + 4)) {
int recordAmountNowComming = buffer.getInt();
final int bytesComming = buffer.getInt();
if (buffer.remaining() >= bytesComming) {
while (recordAmountNowComming > 0) {
case BeforeStaticOperationEventRecord.CLAZZ_ID_FROM_WORKER: {
if (buffer.remaining() >= BeforeStaticOperationEventRecord.BYTE_LENGTH) {
try {
final AbstractEventRecord fromByteBuffer = AbstractEventRecord
.createFromByteBuffer(buffer, stringRegistry);
currentlyOpenTrace.getTraceEvents().add(fromByteBuffer);
putInQueue(new BeforeStaticOperationEventRecord(buffer, stringRegistry));
} catch (final IdNotAvailableException e) {
// should not happen
e.printStackTrace();
}
recordAmountNowComming--;
break;
}
boolean cleared = false;
if (buffer.remaining() == 0) {
buffer.clear();
cleared = true;
buffer.position(buffer.position() - 1);
buffer.compact();
return;
}
if (currentlyOpenTrace.getTraceEvents().size() == currentlyOpenTrace
.getEventsLength()) {
final List<AbstractEventRecord> traceEvents = currentlyOpenTrace
.getTraceEvents();
for (final AbstractEventRecord event : traceEvents) {
putInQueue(event);
case AfterFailedStaticOperationEventRecord.CLAZZ_ID_FROM_WORKER: {
if (buffer.remaining() >= AfterFailedStaticOperationEventRecord.BYTE_LENGTH) {
try {
putInQueue(new AfterFailedStaticOperationEventRecord(buffer,
stringRegistry));
} catch (final IdNotAvailableException e) {
// should not happen
e.printStackTrace();
}
currentlyOpenTrace = null;
return !cleared;
break;
}
} else {
buffer.position(buffer.position() - 4 - 4 - 1);
buffer.position(buffer.position() - 1);
buffer.compact();
return;
}
case AfterStaticOperationEventRecord.CLAZZ_ID_FROM_WORKER: {
if (buffer.remaining() >= AfterStaticOperationEventRecord.BYTE_LENGTH) {
try {
putInQueue(new AfterStaticOperationEventRecord(buffer, stringRegistry));
} catch (final IdNotAvailableException e) {
// should not happen
e.printStackTrace();
}
} else {
break;
}
buffer.position(buffer.position() - 1);
buffer.compact();
return;
}
case BeforeSentRemoteCallRecord.CLAZZ_ID_FROM_WORKER: {
if (buffer.remaining() >= BeforeSentRemoteCallRecord.BYTE_LENGTH) {
try {
putInQueue(new BeforeSentRemoteCallRecord(buffer, stringRegistry));
} catch (final IdNotAvailableException e) {
// should not happen
e.printStackTrace();
}
break;
}
buffer.position(buffer.position() - 1);
buffer.compact();
return;
}
case AfterSentRemoteCallRecord.CLAZZ_ID_FROM_WORKER: {
if (buffer.remaining() >= AfterSentRemoteCallRecord.BYTE_LENGTH) {
try {
putInQueue(new AfterSentRemoteCallRecord(buffer, stringRegistry));
} catch (final IdNotAvailableException e) {
// should not happen
e.printStackTrace();
}
break;
}
buffer.position(buffer.position() - 1);
buffer.compact();
return;
}
case BeforeUnknownReceivedRemoteCallRecord.CLAZZ_ID_FROM_WORKER: {
if (buffer.remaining() >= BeforeUnknownReceivedRemoteCallRecord.BYTE_LENGTH) {
try {
putInQueue(new BeforeUnknownReceivedRemoteCallRecord(buffer,
stringRegistry));
} catch (final IdNotAvailableException e) {
// should not happen
e.printStackTrace();
}
break;
}
buffer.position(buffer.position() - 1);
buffer.compact();
return;
}
return false;
case AfterUnknownReceivedRemoteCallRecord.CLAZZ_ID_FROM_WORKER: {
if (buffer.remaining() >= AfterUnknownReceivedRemoteCallRecord.BYTE_LENGTH) {
try {
putInQueue(new AfterUnknownReceivedRemoteCallRecord(buffer,
stringRegistry));
} catch (final IdNotAvailableException e) {
// should not happen
e.printStackTrace();
}
break;
}
buffer.position(buffer.position() - 1);
buffer.compact();
return;
}
case AfterReceivedRemoteCallRecord.CLAZZ_ID_FROM_WORKER: {
if (buffer.remaining() >= AfterReceivedRemoteCallRecord.BYTE_LENGTH) {
try {
putInQueue(new AfterReceivedRemoteCallRecord(buffer, stringRegistry));
} catch (final IdNotAvailableException e) {
// should not happen
e.printStackTrace();
}
break;
}
buffer.position(buffer.position() - 1);
buffer.compact();
return;
}
default: {
System.out.println("unknown class id " + clazzId + " at offset "
+ (buffer.position() - 1));
buffer.clear();
return;
}
}
}
buffer.clear();
}
private final void readInHostApplicationMetaData(final ByteBuffer buffer) {
......@@ -446,7 +540,6 @@ class TCPReaderOneClient extends Thread {
}
private final void readInBeforeOperationEvent(final ByteBuffer buffer) {
final long timestamp = buffer.getLong();
final long traceId = buffer.getLong();
final int orderIndex = buffer.getInt();
final int objectId = buffer.getInt();
......@@ -459,8 +552,8 @@ class TCPReaderOneClient extends Thread {
final String clazz = stringRegistry.getStringFromId(clazzId);
final String implementedInterface = stringRegistry.getStringFromId(interfaceId);
putInQueue(new BeforeOperationEventRecord(timestamp, traceId, orderIndex, objectId,
operation, clazz, implementedInterface, hostApplicationMetadata));
putInQueue(new BeforeOperationEventRecord(traceId, orderIndex, objectId, operation,
clazz, implementedInterface, hostApplicationMetadata));
} catch (final IdNotAvailableException e) {
putInWaitingMessages(buffer, BeforeOperationEventRecord.COMPRESSED_BYTE_LENGTH + 1);
}
......@@ -501,7 +594,6 @@ class TCPReaderOneClient extends Thread {
}
private final void readInBeforeConstructorEvent(final ByteBuffer buffer) {
final long timestamp = buffer.getLong();
final long traceId = buffer.getLong();
final int orderIndex = buffer.getInt();
final int objectId = buffer.getInt();
......@@ -514,8 +606,8 @@ class TCPReaderOneClient extends Thread {
final String clazz = stringRegistry.getStringFromId(clazzId);
final String implementedInterface = stringRegistry.getStringFromId(interfaceId);
putInQueue(new BeforeConstructorEventRecord(timestamp, traceId, orderIndex, objectId,
operation, clazz, implementedInterface, hostApplicationMetadata));
putInQueue(new BeforeConstructorEventRecord(traceId, orderIndex, objectId, operation,
clazz, implementedInterface, hostApplicationMetadata));
} catch (final IdNotAvailableException e) {
putInWaitingMessages(buffer,
BeforeConstructorEventRecord.COMPRESSED_BYTE_LENGTH_WITH_CLAZZ_ID);
......@@ -550,16 +642,14 @@ class TCPReaderOneClient extends Thread {
final long callerTraceId = buffer.getLong();
final int callerOrderIndex = buffer.getInt();
final long timestamp = buffer.getLong();
final long traceId = buffer.getLong();
final int orderIndex = buffer.getInt();
putInQueue(new BeforeReceivedRemoteCallRecord(timestamp, callerTraceId, callerOrderIndex,
traceId, orderIndex, hostApplicationMetadata));
putInQueue(new BeforeReceivedRemoteCallRecord(callerTraceId, callerOrderIndex, traceId,
orderIndex, hostApplicationMetadata));
}
private final void readInBeforeStaticOperationEvent(final ByteBuffer buffer) {
final long timestamp = buffer.getLong();
final long traceId = buffer.getLong();
final int orderIndex = buffer.getInt();
final int operationId = buffer.getInt();
......@@ -571,8 +661,8 @@ class TCPReaderOneClient extends Thread {
final String clazz = stringRegistry.getStringFromId(clazzId);
final String implementedInterface = stringRegistry.getStringFromId(interfaceId);
putInQueue(new BeforeStaticOperationEventRecord(timestamp, traceId, orderIndex,
operation, clazz, implementedInterface, hostApplicationMetadata));
putInQueue(new BeforeStaticOperationEventRecord(traceId, orderIndex, operation, clazz,
implementedInterface, hostApplicationMetadata));
} catch (final IdNotAvailableException e) {
putInWaitingMessages(buffer,
BeforeStaticOperationEventRecord.COMPRESSED_BYTE_LENGTH_WITH_CLAZZ_ID);
......@@ -606,15 +696,13 @@ class TCPReaderOneClient extends Thread {
}
private final void readInBeforeSentRemoteCallEvent(final ByteBuffer buffer) {
final long timestamp = buffer.getLong();
final long traceId = buffer.getLong();
final int orderIndex = buffer.getInt();
final int technologyId = buffer.getInt();
try {
putInQueue(new BeforeSentRemoteCallRecord(timestamp,
stringRegistry.getStringFromId(technologyId), traceId, orderIndex,
hostApplicationMetadata));
putInQueue(new BeforeSentRemoteCallRecord(stringRegistry.getStringFromId(technologyId),
traceId, orderIndex, hostApplicationMetadata));
} catch (final IdNotAvailableException e) {
putInWaitingMessages(buffer,
BeforeSentRemoteCallRecord.COMPRESSED_BYTE_LENGTH_WITH_CLAZZ_ID);
......@@ -632,7 +720,6 @@ class TCPReaderOneClient extends Thread {
}
private final void readInBeforeUnknownReceivedRemoteCallEvent(final ByteBuffer buffer) {
final long timestamp = buffer.getLong();
final long traceId = buffer.getLong();
final int orderIndex = buffer.getInt();
......@@ -640,7 +727,7 @@ class TCPReaderOneClient extends Thread {
final int destionationId = buffer.getInt();
try {
putInQueue(new BeforeUnknownReceivedRemoteCallRecord(timestamp,
putInQueue(new BeforeUnknownReceivedRemoteCallRecord(
stringRegistry.getStringFromId(senderId),
stringRegistry.getStringFromId(destionationId), traceId, orderIndex,
hostApplicationMetadata));
......
......@@ -12,7 +12,7 @@ public class TraceReconstructionBufferTest {
@Test
public void testInsertEvent() throws Exception {
final TraceReconstructionBuffer traceReconstructionBuffer = new TraceReconstructionBuffer();
traceReconstructionBuffer.insertEvent(new BeforeOperationEventRecord(1000, 1, 0, 0, "test",
traceReconstructionBuffer.insertEvent(new BeforeOperationEventRecord(1, 0, 0, "test",
"TestClazz", "", new HostApplicationMetaDataRecord("testSystem", "testIp",
"testHost", "testApp", "Java")));
assertTrue(true);
......
package explorviz.live_trace_processing.filter.reduction;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import explorviz.live_trace_processing.record.event.AbstractEventRecord;
import explorviz.live_trace_processing.record.event.normal.AfterOperationEventRecord;
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 PatternSummarizationTest {
@Before
public void init() {
final List<AbstractEventRecord> traceEvents = new ArrayList<AbstractEventRecord>();
final BeforeOperationEventRecord beforeEvent = new BeforeOperationEventRecord(1L, 1L, 0, 0,
"test.package.Clazz.A()", "ClazzA", "", new HostApplicationMetaDataRecord(
"testSystem", "testIp", "host", "application", "Java"));
beforeEvent.setRuntimeStatisticInformation(new RuntimeStatisticInformation(31L));
traceEvents.add(beforeEvent);
final BeforeOperationEventRecord beforeEvent1 = new BeforeOperationEventRecord(2L, 1L, 1,
0, "test.package.Clazz.B()", "ClazzB", "", new HostApplicationMetaDataRecord(
"testSystem", "testIp", "host", "application", "Java"));
beforeEvent1.setRuntimeStatisticInformation(new RuntimeStatisticInformation(2L));
traceEvents.add(beforeEvent1);
final AfterOperationEventRecord afterEvent1 = new AfterOperationEventRecord(4L, 1L, 2,
new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
"Java"));
traceEvents.add(afterEvent1);
final BeforeOperationEventRecord beforeEvent2 = new BeforeOperationEventRecord(5L, 1L, 3,
0, "test.package.Clazz.C()", "ClazzC", "", new HostApplicationMetaDataRecord(
"testSystem", "testIp", "host", "application", "Java"));
beforeEvent2.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
traceEvents.add(beforeEvent2);
final AfterOperationEventRecord afterEvent2 = new AfterOperationEventRecord(6L, 1L, 4,
new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
"Java"));
traceEvents.add(afterEvent2);
final BeforeOperationEventRecord beforeEvent3 = new BeforeOperationEventRecord(7L, 1L, 5,
0, "test.package.Clazz.D()", "ClazzD", "", new HostApplicationMetaDataRecord(
"testSystem", "testIp", "host", "application", "Java"));
beforeEvent3.setRuntimeStatisticInformation(new RuntimeStatisticInformation(9L));
traceEvents.add(beforeEvent3);
final BeforeOperationEventRecord beforeEvent4 = new BeforeOperationEventRecord(8L, 1L, 6,
0, "test.package.Clazz.E()", "ClazzE", "", new HostApplicationMetaDataRecord(
"testSystem", "testIp", "host", "application", "Java"));
beforeEvent4.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
traceEvents.add(beforeEvent4);
final AfterOperationEventRecord afterEvent4 = new AfterOperationEventRecord(9L, 1L, 7,
new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
"Java"));
traceEvents.add(afterEvent4);
final BeforeOperationEventRecord beforeEvent5 = new BeforeOperationEventRecord(10L, 1L, 8,
0, "test.package.Clazz.F()", "ClazzF", "", new HostApplicationMetaDataRecord(
"testSystem", "testIp", "host", "application", "Java"));
beforeEvent5.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
traceEvents.add(beforeEvent5);
final AfterOperationEventRecord afterEvent5 = new AfterOperationEventRecord(11L, 1L, 9,
new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
"Java"));
traceEvents.add(afterEvent5);
final BeforeOperationEventRecord beforeEvent6 = new BeforeOperationEventRecord(12L, 1L, 10,
0, "test.package.Clazz.E()", "ClazzE", "", new HostApplicationMetaDataRecord(
"testSystem", "testIp", "host", "application", "Java"));
beforeEvent6.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
traceEvents.add(beforeEvent6);
final AfterOperationEventRecord afterEvent6 = new AfterOperationEventRecord(13L, 1L, 11,
new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
"Java"));
traceEvents.add(afterEvent6);
final BeforeOperationEventRecord beforeEvent7 = new BeforeOperationEventRecord(14L, 1L, 12,
0, "test.package.Clazz.F()", "ClazzF", "", new HostApplicationMetaDataRecord(
"testSystem", "testIp", "host", "application", "Java"));
beforeEvent7.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
traceEvents.add(beforeEvent7);
final AfterOperationEventRecord afterEvent7 = new AfterOperationEventRecord(15L, 1L, 13,
new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
"Java"));
traceEvents.add(afterEvent7);
final AfterOperationEventRecord afterEvent3 = new AfterOperationEventRecord(16L, 1L, 14,
new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
"Java"));
traceEvents.add(afterEvent3);
final BeforeOperationEventRecord beforeEvent8 = new BeforeOperationEventRecord(17L, 1L, 15,
0, "test.package.Clazz.B()", "ClazzB", "", new HostApplicationMetaDataRecord(
"testSystem", "testIp", "host", "application", "Java"));
beforeEvent8.setRuntimeStatisticInformation(new RuntimeStatisticInformation(2L));
traceEvents.add(beforeEvent8);
final AfterOperationEventRecord afterEvent8 = new AfterOperationEventRecord(19L, 1L, 16,
new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
"Java"));
traceEvents.add(afterEvent8);
final BeforeOperationEventRecord beforeEvent9 = new BeforeOperationEventRecord(20L, 1L, 17,
0, "test.package.Clazz.C()", "ClazzC", "", new HostApplicationMetaDataRecord(
"testSystem", "testIp", "host", "application", "Java"));
beforeEvent9.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
traceEvents.add(beforeEvent9);
final AfterOperationEventRecord afterEvent9 = new AfterOperationEventRecord(21L, 1L, 18,
new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
"Java"));
traceEvents.add(afterEvent9);
final BeforeOperationEventRecord beforeEvent10 = new BeforeOperationEventRecord(22L, 1L,
19, 0, "test.package.Clazz.D()", "ClazzD", "", new HostApplicationMetaDataRecord(
"testSystem", "testIp", "host", "application", "Java"));
beforeEvent10.setRuntimeStatisticInformation(new RuntimeStatisticInformation(9L));
traceEvents.add(beforeEvent10);
final BeforeOperationEventRecord beforeEvent11 = new BeforeOperationEventRecord(23L, 1L,
20, 0, "test.package.Clazz.E()", "ClazzE", "", new HostApplicationMetaDataRecord(
"testSystem", "testIp", "host", "application", "Java"));
beforeEvent11.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
traceEvents.add(beforeEvent11);
final AfterOperationEventRecord afterEvent11 = new AfterOperationEventRecord(24L, 1L, 21,
new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
"Java"));
traceEvents.add(afterEvent11);
final BeforeOperationEventRecord beforeEvent12 = new BeforeOperationEventRecord(25L, 1L,
22, 0, "test.package.Clazz.F()", "ClazzF", "", new HostApplicationMetaDataRecord(
"testSystem", "testIp", "host", "application", "Java"));
beforeEvent12.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
traceEvents.add(beforeEvent12);
final AfterOperationEventRecord afterEvent12 = new AfterOperationEventRecord(26L, 1L, 23,
new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
"Java"));
traceEvents.add(afterEvent12);
final BeforeOperationEventRecord beforeEvent13 = new BeforeOperationEventRecord(27L, 1L,
24, 0, "test.package.Clazz.E()", "ClazzE", "", new HostApplicationMetaDataRecord(
"testSystem", "testIp", "host", "application", "Java"));
beforeEvent13.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
traceEvents.add(beforeEvent13);
final AfterOperationEventRecord afterEvent13 = new AfterOperationEventRecord(28L, 1L, 25,
new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
"Java"));
traceEvents.add(afterEvent13);
final BeforeOperationEventRecord beforeEvent14 = new BeforeOperationEventRecord(29L, 1L,
26, 0, "test.package.Clazz.F()", "ClazzF", "", new HostApplicationMetaDataRecord(
"testSystem", "testIp", "host", "application", "Java"));
beforeEvent14.setRuntimeStatisticInformation(new RuntimeStatisticInformation(1L));
traceEvents.add(beforeEvent14);
final AfterOperationEventRecord afterEvent14 = new AfterOperationEventRecord(30L, 1L, 27,
new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
"Java"));
traceEvents.add(afterEvent14);
final AfterOperationEventRecord afterEvent10 = new AfterOperationEventRecord(31L, 1L, 28,
new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
"Java"));
traceEvents.add(afterEvent10);
final AfterOperationEventRecord afterEvent = new AfterOperationEventRecord(32L, 1L, 29,
new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
"Java"));
traceEvents.add(afterEvent);
// trace = new Trace(traceEvents, true);
}
@Test
public void testReduction() {
final List<AbstractEventRecord> traceEvents = new ArrayList<AbstractEventRecord>();
final BeforeOperationEventRecord beforeEvent = new BeforeOperationEventRecord(1L, 1L, 0, 0,
"test.package.Clazz.A()", "ClazzA", "", new HostApplicationMetaDataRecord(
"testSystem", "testIp", "host", "application", "Java"));
beforeEvent.setRuntimeStatisticInformation(new RuntimeStatisticInformation(31L));
traceEvents.add(beforeEvent);
final BeforeOperationEventRecord beforeEvent1 = new BeforeOperationEventRecord(2L, 1L, 1,
0, "test.package.Clazz.B()", "ClazzB", "", new HostApplicationMetaDataRecord(
"testSystem", "testIp", "host", "application", "Java"));
beforeEvent1.setRuntimeStatisticInformation(new RuntimeStatisticInformation(2, 4, 8));
traceEvents.add(beforeEvent1);
final AfterOperationEventRecord afterEvent1 = new AfterOperationEventRecord(4L, 1L, 2,
new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
"Java"));
traceEvents.add(afterEvent1);
final BeforeOperationEventRecord beforeEvent2 = new BeforeOperationEventRecord(5L, 1L, 3,
0, "test.package.Clazz.C()", "ClazzC", "", new HostApplicationMetaDataRecord(
"testSystem", "testIp", "host", "application", "Java"));
beforeEvent2.setRuntimeStatisticInformation(new RuntimeStatisticInformation(2, 2, 2));
traceEvents.add(beforeEvent2);
final AfterOperationEventRecord afterEvent2 = new AfterOperationEventRecord(6L, 1L, 4,
new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
"Java"));
traceEvents.add(afterEvent2);
final BeforeOperationEventRecord beforeEvent3 = new BeforeOperationEventRecord(7L, 1L, 5,
0, "test.package.Clazz.D()", "ClazzD", "", new HostApplicationMetaDataRecord(
"testSystem", "testIp", "host", "application", "Java"));
beforeEvent3.setRuntimeStatisticInformation(new RuntimeStatisticInformation(2, 18, 162));
traceEvents.add(beforeEvent3);
final BeforeOperationEventRecord beforeEvent4 = new BeforeOperationEventRecord(8L, 1L, 6,
0, "test.package.Clazz.E()", "ClazzE", "", new HostApplicationMetaDataRecord(
"testSystem", "testIp", "host", "application", "Java"));
beforeEvent4.setRuntimeStatisticInformation(new RuntimeStatisticInformation(4, 4, 4));
traceEvents.add(beforeEvent4);
final AfterOperationEventRecord afterEvent4 = new AfterOperationEventRecord(9L, 1L, 7,
new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
"Java"));
traceEvents.add(afterEvent4);
final BeforeOperationEventRecord beforeEvent5 = new BeforeOperationEventRecord(10L, 1L, 8,
0, "test.package.Clazz.F()", "ClazzF", "", new HostApplicationMetaDataRecord(
"testSystem", "testIp", "host", "application", "Java"));
beforeEvent5.setRuntimeStatisticInformation(new RuntimeStatisticInformation(4, 4, 4));
traceEvents.add(beforeEvent5);
final AfterOperationEventRecord afterEvent5 = new AfterOperationEventRecord(11L, 1L, 9,
new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
"Java"));
traceEvents.add(afterEvent5);
final AfterOperationEventRecord afterEvent3 = new AfterOperationEventRecord(16L, 1L, 14,
new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
"Java"));
traceEvents.add(afterEvent3);
final AfterOperationEventRecord afterEvent = new AfterOperationEventRecord(32L, 1L, 29,
new HostApplicationMetaDataRecord("testSystem", "testIp", "host", "application",
"Java"));
traceEvents.add(afterEvent);
// final Trace compareTrace = new Trace(traceEvents, true);
// final PatternSummarizationFilter patternSummarizationFilter = new
// PatternSummarizationFilter(
// null, PatternSummarizationFilter.DEFAULT_DISTANCE,
// PatternSummarizationFilter.DEFAULT_NESTINGLEVEL);
// final Trace reducedTrace =
// patternSummarizationFilter.testReduction(trace);
// Assert.assertTrue(compareTrace.compareTo(reducedTrace) == 0);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment