Skip to content
Snippets Groups Projects
Commit c81fa222 authored by Nils Christian Ehmke's avatar Nils Christian Ehmke
Browse files

Refactored and improved some code

parent 0e089419
No related branches found
No related tags found
No related merge requests found
Showing with 97 additions and 81 deletions
......@@ -25,10 +25,10 @@ package kieker.diagnosis.common.domain;
public final class AggregatedOperationCall extends AbstractOperationCall<AggregatedOperationCall> {
private long totalDuration;
private long meanDuration;
private long medianDuration;
private long minDuration;
private long maxDuration;
private long avgDuration;
private long meanDuration;
private int calls;
public AggregatedOperationCall(final OperationCall call) {
......@@ -50,12 +50,12 @@ public final class AggregatedOperationCall extends AbstractOperationCall<Aggrega
this.totalDuration = totalDuration;
}
public long getMeanDuration() {
return this.meanDuration;
public long getMedianDuration() {
return this.medianDuration;
}
public void setMeanDuration(final long meanDuration) {
this.meanDuration = meanDuration;
public void setMedianDuration(final long meanDuration) {
this.medianDuration = meanDuration;
}
public long getMinDuration() {
......@@ -74,12 +74,12 @@ public final class AggregatedOperationCall extends AbstractOperationCall<Aggrega
this.maxDuration = maxDuration;
}
public long getAvgDuration() {
return this.avgDuration;
public long getMeanDuration() {
return this.meanDuration;
}
public void setAvgDuration(final long avgDuration) {
this.avgDuration = avgDuration;
public void setMeanDuration(final long avgDuration) {
this.meanDuration = avgDuration;
}
public int getCalls() {
......
......@@ -35,24 +35,29 @@ public final class AggregatedTraceStatisticsDecorator extends AbstractStage<Aggr
@Override
public void execute(final AggregatedTrace trace) {
addNumberOfCalls(trace.getRootOperationCall(), trace.getTraces().size());
final TraceDurationVisitor traceDurationVisitor = new TraceDurationVisitor();
for (final Trace t : trace.getTraces()) {
traceDurationVisitor.visit(t);
}
traceDurationVisitor.addDurationStatistics(trace);
addDurationStatistics(trace);
super.send(trace);
}
private static void addNumberOfCalls(final AggregatedOperationCall rootCall, final int calls) {
rootCall.setCalls(calls);
private static void addNumberOfCalls(final AggregatedOperationCall call, final int calls) {
call.setCalls(calls);
for (final AggregatedOperationCall child : rootCall.getChildren()) {
for (final AggregatedOperationCall child : call.getChildren()) {
addNumberOfCalls(child, calls);
}
}
private static void addDurationStatistics(final AggregatedTrace trace) {
final TraceDurationVisitor traceDurationVisitor = new TraceDurationVisitor();
for (final Trace t : trace.getTraces()) {
traceDurationVisitor.visit(t);
}
traceDurationVisitor.addDurationStatistics(trace);
}
private static final class TraceDurationVisitor {
private final List<List<Long>> durationsPerEdge = new ArrayList<>();
......@@ -88,61 +93,70 @@ public final class AggregatedTraceStatisticsDecorator extends AbstractStage<Aggr
final List<Long> durationsOfCurrentEdge = this.durationsPerEdge.get(this.edgeIndex);
rootOperationCall.setMinDuration(this.findMinDuration(durationsOfCurrentEdge));
rootOperationCall.setMaxDuration(this.findMaxDuration(durationsOfCurrentEdge));
rootOperationCall.setAvgDuration(this.calculateAvgDuration(durationsOfCurrentEdge));
rootOperationCall.setTotalDuration(this.calculateTotalDuration(durationsOfCurrentEdge));
rootOperationCall.setMeanDuration(this.calculateMeanDuration(durationsOfCurrentEdge));
final Statistics statistics = this.calculateStatistics(durationsOfCurrentEdge);
rootOperationCall.setMinDuration(statistics.getMinDuration());
rootOperationCall.setMaxDuration(statistics.getMaxDuration());
rootOperationCall.setMeanDuration(statistics.getMeanDuration());
rootOperationCall.setTotalDuration(statistics.getTotalDuration());
rootOperationCall.setMedianDuration(statistics.getMedianDuration());
for (final AggregatedOperationCall child : rootOperationCall.getChildren()) {
this.addDurationStatistics(child);
}
}
private long findMinDuration(final List<Long> durations) {
long minDuration = Long.MAX_VALUE;
private Statistics calculateStatistics(final List<Long> durations) {
Collections.sort(durations);
long totalDuration = 0;
for (final Long duration : durations) {
minDuration = Math.min(minDuration, duration);
totalDuration += duration;
}
return minDuration;
}
final long minDuration = durations.get(0);
final long maxDuration = durations.get(durations.size() - 1);
final long meanDuration = totalDuration / durations.size();
final long medianDuration = durations.get(durations.size() / 2);
private long findMaxDuration(final List<Long> durations) {
long maxDuration = 0;
for (final Long duration : durations) {
maxDuration = Math.max(maxDuration, duration);
}
return maxDuration;
return new Statistics(totalDuration, meanDuration, medianDuration, minDuration, maxDuration);
}
private long calculateAvgDuration(final List<Long> durations) {
long totalDuration = 0;
private static class Statistics {
for (final Long duration : durations) {
totalDuration += duration;
private final long totalDuration;
private final long meanDuration;
private final long medianDuration;
private final long minDuration;
private final long maxDuration;
public Statistics(final long totalDuration, final long meanDuration, final long medianDuration, final long minDuration, final long maxDuration) {
this.totalDuration = totalDuration;
this.meanDuration = meanDuration;
this.medianDuration = medianDuration;
this.minDuration = minDuration;
this.maxDuration = maxDuration;
}
return totalDuration / durations.size();
}
public long getTotalDuration() {
return this.totalDuration;
}
private long calculateTotalDuration(final List<Long> durations) {
long totalDuration = 0;
public long getMeanDuration() {
return this.meanDuration;
}
for (final Long duration : durations) {
totalDuration += duration;
public long getMedianDuration() {
return this.medianDuration;
}
return totalDuration;
}
public long getMinDuration() {
return this.minDuration;
}
private long calculateMeanDuration(final List<Long> durationsOfCurrentEdge) {
Collections.sort(durationsOfCurrentEdge);
public long getMaxDuration() {
return this.maxDuration;
}
return durationsOfCurrentEdge.get(durationsOfCurrentEdge.size() / 2);
}
}
......
......@@ -28,48 +28,50 @@ public final class TraceStatisticsDecorator extends AbstractStage<Trace, Trace>
@Override
public void execute(final Trace trace) {
TraceStatisticsDecorator.addTraceDepth(trace.getRootOperationCall());
TraceStatisticsDecorator.addTraceSize(trace.getRootOperationCall());
TraceStatisticsDecorator.addPercentValues(trace.getRootOperationCall(), trace.getRootOperationCall().getDuration());
addTraceDepth(trace.getRootOperationCall());
addTraceSize(trace.getRootOperationCall());
addPercentValues(trace.getRootOperationCall(), trace.getRootOperationCall().getDuration());
super.send(trace);
}
private static int addTraceDepth(final OperationCall rootOperationCall) {
int traceDepth = 0;
private static int addTraceDepth(final OperationCall call) {
final int traceDepth;
if (!rootOperationCall.getChildren().isEmpty()) {
if (call.getChildren().isEmpty()) {
traceDepth = 0;
} else {
int maxTraceDepthOfChildren = 0;
for (final OperationCall child : rootOperationCall.getChildren()) {
final int traceDepthOfChild = TraceStatisticsDecorator.addTraceDepth(child);
maxTraceDepthOfChildren = (traceDepthOfChild > maxTraceDepthOfChildren) ? traceDepthOfChild : maxTraceDepthOfChildren;
for (final OperationCall child : call.getChildren()) {
final int traceDepthOfChild = addTraceDepth(child);
maxTraceDepthOfChildren = Math.max(traceDepthOfChild, maxTraceDepthOfChildren);
}
traceDepth = 1 + maxTraceDepthOfChildren;
}
rootOperationCall.setStackDepth(traceDepth);
call.setStackDepth(traceDepth);
return traceDepth;
}
private static int addTraceSize(final OperationCall rootOperationCall) {
private static int addTraceSize(final OperationCall call) {
int traceSize = 1;
for (final OperationCall child : rootOperationCall.getChildren()) {
final int traceSizeOfChild = TraceStatisticsDecorator.addTraceSize(child);
for (final OperationCall child : call.getChildren()) {
final int traceSizeOfChild = addTraceSize(child);
traceSize += traceSizeOfChild;
}
rootOperationCall.setStackSize(traceSize);
call.setStackSize(traceSize);
return traceSize;
}
private static void addPercentValues(final OperationCall call, final long rootDuration) {
call.setPercent((100.0f * call.getDuration()) / rootDuration);
for (final OperationCall child : call.getChildren()) {
TraceStatisticsDecorator.addPercentValues(child, call.getDuration());
addPercentValues(child, call.getDuration());
}
}
......
......@@ -267,8 +267,8 @@ public final class View implements ISubView, Observer {
final String minDuration = (call.getMinDuration() + " " + this.modelProxy.getShortTimeUnit()).trim();
final String maxDuration = (call.getMaxDuration() + " " + this.modelProxy.getShortTimeUnit()).trim();
final String meanDuration = (call.getMeanDuration() + " " + this.modelProxy.getShortTimeUnit()).trim();
final String avgDuration = (call.getAvgDuration() + " " + this.modelProxy.getShortTimeUnit()).trim();
final String meanDuration = (call.getMedianDuration() + " " + this.modelProxy.getShortTimeUnit()).trim();
final String avgDuration = (call.getMeanDuration() + " " + this.modelProxy.getShortTimeUnit()).trim();
final String totalDuration = (call.getTotalDuration() + " " + this.modelProxy.getShortTimeUnit()).trim();
this.lblMinimalDurationDisplay.setText(minDuration);
......
......@@ -317,8 +317,8 @@ public final class View implements Observer, ISubView {
final String minDuration = (call.getMinDuration() + " " + this.model.getShortTimeUnit()).trim();
final String maxDuration = (call.getMaxDuration() + " " + this.model.getShortTimeUnit()).trim();
final String meanDuration = (call.getMeanDuration() + " " + this.model.getShortTimeUnit()).trim();
final String avgDuration = (call.getAvgDuration() + " " + this.model.getShortTimeUnit()).trim();
final String meanDuration = (call.getMedianDuration() + " " + this.model.getShortTimeUnit()).trim();
final String avgDuration = (call.getMeanDuration() + " " + this.model.getShortTimeUnit()).trim();
final String totalDuration = (call.getTotalDuration() + " " + this.model.getShortTimeUnit()).trim();
this.lblMinimalDurationDisplay.setText(minDuration);
......@@ -380,8 +380,8 @@ public final class View implements Observer, ISubView {
final String minDuration = (operationCall.getMinDuration() + " " + View.this.model.getShortTimeUnit()).trim();
final String maxDuration = (operationCall.getMaxDuration() + " " + View.this.model.getShortTimeUnit()).trim();
final String avgDuration = (operationCall.getAvgDuration() + " " + View.this.model.getShortTimeUnit()).trim();
final String meanDuration = (operationCall.getMeanDuration() + " " + View.this.model.getShortTimeUnit()).trim();
final String avgDuration = (operationCall.getMeanDuration() + " " + View.this.model.getShortTimeUnit()).trim();
final String meanDuration = (operationCall.getMedianDuration() + " " + View.this.model.getShortTimeUnit()).trim();
final String totalDuration = (operationCall.getTotalDuration() + " " + View.this.model.getShortTimeUnit()).trim();
if (parent != null) {
......
......@@ -25,8 +25,8 @@ public final class AvgDurationSortListener extends AbstractTraceTreeColumnSortLi
@Override
protected int compare(final AggregatedTrace fstTrace, final AggregatedTrace sndTrace) {
final long fstAvgDuration = fstTrace.getRootOperationCall().getAvgDuration();
final long sndAvgDuration = sndTrace.getRootOperationCall().getAvgDuration();
final long fstAvgDuration = fstTrace.getRootOperationCall().getMeanDuration();
final long sndAvgDuration = sndTrace.getRootOperationCall().getMeanDuration();
return Long.compare(fstAvgDuration, sndAvgDuration);
}
......
......@@ -25,8 +25,8 @@ public final class MeanDurationSortListener extends AbstractTraceTreeColumnSortL
@Override
protected int compare(final AggregatedTrace fstTrace, final AggregatedTrace sndTrace) {
final long fstMeanDuration = fstTrace.getRootOperationCall().getMeanDuration();
final long sndMeanDuration = sndTrace.getRootOperationCall().getMeanDuration();
final long fstMeanDuration = fstTrace.getRootOperationCall().getMedianDuration();
final long sndMeanDuration = sndTrace.getRootOperationCall().getMedianDuration();
return Long.compare(fstMeanDuration, sndMeanDuration);
}
......
......@@ -52,8 +52,8 @@ public final class AggregatedTraceStatisticsDecoratorTest {
assertThat(trace.getRootOperationCall().getMinDuration(), is(7L));
assertThat(trace.getRootOperationCall().getMaxDuration(), is(44L));
assertThat(trace.getRootOperationCall().getAvgDuration(), is(22L));
assertThat(trace.getRootOperationCall().getMeanDuration(), is(15L));
assertThat(trace.getRootOperationCall().getMeanDuration(), is(22L));
assertThat(trace.getRootOperationCall().getMedianDuration(), is(15L));
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment