diff --git a/src/main/java/kieker/gui/model/domain/AggregatedExecutionEntry.java b/src/main/java/kieker/gui/model/domain/AggregatedExecutionEntry.java index 391c0339f62e5f265d4ab00088a9e47388ddbb72..7197b2676042b303cddb016149c6ad3f457f8d81 100644 --- a/src/main/java/kieker/gui/model/domain/AggregatedExecutionEntry.java +++ b/src/main/java/kieker/gui/model/domain/AggregatedExecutionEntry.java @@ -28,6 +28,7 @@ public final class AggregatedExecutionEntry { private final String operation; private long minDuration; private long maxDuration; + private long avgDuration; private int calls; public AggregatedExecutionEntry(final ExecutionEntry execEntry) { @@ -75,6 +76,11 @@ public final class AggregatedExecutionEntry { this.calls++; this.minDuration = Math.min(this.minDuration, executionEntry.getDuration()); this.maxDuration = Math.max(this.maxDuration, executionEntry.getDuration()); + this.avgDuration += executionEntry.getDuration(); + } + + public void recalculateValues() { + this.avgDuration /= this.calls; } public long getMinDuration() { @@ -85,6 +91,10 @@ public final class AggregatedExecutionEntry { return this.maxDuration; } + public long getAvgDuration() { + return this.avgDuration; + } + public int getCalls() { return this.calls; } diff --git a/src/main/java/kieker/gui/model/importer/filter/TraceAggregator.java b/src/main/java/kieker/gui/model/importer/filter/TraceAggregator.java index 3573939333a08eaf478558ba1d93d4d936cbb84b..7d1cb256c88086b5a69b78be3156e978a6b9ff57 100644 --- a/src/main/java/kieker/gui/model/importer/filter/TraceAggregator.java +++ b/src/main/java/kieker/gui/model/importer/filter/TraceAggregator.java @@ -46,6 +46,7 @@ public final class TraceAggregator extends AbstractConsumerStage<ExecutionEntry> @Override public void onTerminating() throws Exception { for (final AggregatedExecutionEntry aggregatedExecutionEntry : this.aggregationMap.values()) { + aggregatedExecutionEntry.recalculateValues(); this.outputPort.send(aggregatedExecutionEntry); } super.onTerminating(); diff --git a/src/main/java/kieker/gui/view/AggregatedTraceDetailComposite.java b/src/main/java/kieker/gui/view/AggregatedTraceDetailComposite.java index f0e8bc7aa3bd56b693dce0ec26aab8cccb7a5ecf..82733f46c46ed9a67d327542677b17ebdb80f093 100644 --- a/src/main/java/kieker/gui/view/AggregatedTraceDetailComposite.java +++ b/src/main/java/kieker/gui/view/AggregatedTraceDetailComposite.java @@ -21,6 +21,8 @@ public final class AggregatedTraceDetailComposite extends Composite { private final Label lblStackDepthDisplay; private final Label lblMinimalDurationDisplay; private final Label lblMaximalDurationDisplay; + private final Label lblAverageDuration; + private final Label lblAverageDurationDisplay; public AggregatedTraceDetailComposite(final Composite parent, final int style) { super(parent, style); @@ -87,6 +89,14 @@ public final class AggregatedTraceDetailComposite extends Composite { this.lblMinimalDurationDisplay.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE)); this.lblMinimalDurationDisplay.setText("N/A"); + this.lblAverageDuration = new Label(this, SWT.NONE); + this.lblAverageDuration.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE)); + this.lblAverageDuration.setText("Average Duration:"); + + this.lblAverageDurationDisplay = new Label(this, SWT.NONE); + this.lblAverageDurationDisplay.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE)); + this.lblAverageDurationDisplay.setText("N/A"); + final Label lblMaximalDuration = new Label(this, SWT.NONE); lblMaximalDuration.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE)); lblMaximalDuration.setText("Maximal Duration:"); @@ -105,6 +115,7 @@ public final class AggregatedTraceDetailComposite extends Composite { this.lblMinimalDurationDisplay.setText(Long.toString(trace.getMinDuration())); this.lblMaximalDurationDisplay.setText(Long.toString(trace.getMaxDuration())); + this.lblAverageDurationDisplay.setText(Long.toString(trace.getAvgDuration())); if (trace.isFailed()) { this.lblFailedDisplay.setText("Yes (" + trace.getFailedCause() + ")");