diff --git a/src/main/java/kieker/analysis/TraceAnalysisConfiguration.java b/src/main/java/kieker/analysis/TraceAnalysisConfiguration.java index 7de800508604356673f06ae4ca068ec79e99e0ea..ded06fcd21bc4e5023c066d9b6707ab4060a8bde 100644 --- a/src/main/java/kieker/analysis/TraceAnalysisConfiguration.java +++ b/src/main/java/kieker/analysis/TraceAnalysisConfiguration.java @@ -10,6 +10,7 @@ import java.util.List; import com.tinkerpop.blueprints.Graph; import kieker.analysis.dev.DependencyCreatorStage; +import kieker.analysis.dev.DependencyStatisticsDecoratorStage; import kieker.analysis.stage.tracediagnosis.AllowedRecordsFilter; import kieker.analysis.stage.tracediagnosis.BeginEndOfMonitoringDetector; import kieker.analysis.stage.tracediagnosis.OperationCallHandlerComposite; @@ -100,7 +101,9 @@ public class TraceAnalysisConfiguration extends Configuration { super.connectPorts(graphDistributor2.getNewOutputPort(), dotGraphWriter2.getInputPort()); DependencyCreatorStage dependencyCreatorStage = new DependencyCreatorStage(); + DependencyStatisticsDecoratorStage dependencyStatisticsDecoratorStage = new DependencyStatisticsDecoratorStage(); super.connectPorts(aggregatedTraceDistributor.getNewOutputPort(), dependencyCreatorStage.getInputPort()); + super.connectPorts(dependencyCreatorStage.getOutputPort(), dependencyStatisticsDecoratorStage.getInputPort()); /* * diff --git a/src/main/java/kieker/analysis/dev/DependencyCreatorStage.java b/src/main/java/kieker/analysis/dev/DependencyCreatorStage.java index 0b10e81332ca2379454ee2e429eb1dbb3723c18d..8b5ca67155867a0b22ebade9e59e527e92796d72 100644 --- a/src/main/java/kieker/analysis/dev/DependencyCreatorStage.java +++ b/src/main/java/kieker/analysis/dev/DependencyCreatorStage.java @@ -18,12 +18,6 @@ public class DependencyCreatorStage extends AbstractTransformation<AggregatedTra @Override public void onTerminating() throws Exception { // NOPMD (the throws clause is forced by the framework) - // TODO Update Statistics - - // TODO Temporary final stage -> print result - operationsDependency.printDependenncies(); - operationsDependency.printOperations(); - this.getOutputPort().send(operationsDependency); super.onTerminating(); diff --git a/src/main/java/kieker/analysis/dev/DependencyStatisticsDecorator.java b/src/main/java/kieker/analysis/dev/DependencyStatisticsDecorator.java index bf00261b2f0e719d6973d64d12406e07b0209921..397bf9454c50b604f8e0b065ddcce2931a97670b 100644 --- a/src/main/java/kieker/analysis/dev/DependencyStatisticsDecorator.java +++ b/src/main/java/kieker/analysis/dev/DependencyStatisticsDecorator.java @@ -1,9 +1,36 @@ package kieker.analysis.dev; +import java.util.List; +import java.util.stream.Collectors; + +import kieker.analysis.traceanalysisdomain.AggregatedOperationCall; +import kieker.analysis.traceanalysisutil.Statistics; +import kieker.analysis.traceanalysisutil.StatisticsUtility; + +/** + * @author Sören Henning + * + */ +// TODO Maybe make static public class DependencyStatisticsDecorator { public void decorate(final OperationsDependency operationsDependency) { + for (AggregatedOperationCall operation : operationsDependency.getOperations()) { + + List<Long> durations = operation.getBaseOperationCalls().stream() + .map(call -> call.getDuration()).collect(Collectors.toList()); + + Statistics statistics = StatisticsUtility.calculateStatistics(durations); + + operation.setTotalDuration(statistics.getTotalDuration()); + operation.setMaxDuration(statistics.getMaxDuration()); + operation.setMinDuration(statistics.getMinDuration()); + operation.setMeanDuration(statistics.getMeanDuration()); + operation.setMedianDuration(statistics.getMedianDuration()); + + } + } } diff --git a/src/main/java/kieker/analysis/dev/DependencyStatisticsDecoratorStage.java b/src/main/java/kieker/analysis/dev/DependencyStatisticsDecoratorStage.java index d6c4033c4b28477bf1835b02e8683b63f3506674..244b2e2164e2e7a5eb6c25eaf4e24247bcde5069 100644 --- a/src/main/java/kieker/analysis/dev/DependencyStatisticsDecoratorStage.java +++ b/src/main/java/kieker/analysis/dev/DependencyStatisticsDecoratorStage.java @@ -2,14 +2,24 @@ package kieker.analysis.dev; import teetime.stage.basic.AbstractTransformation; +/** + * @author Sören Henning + * + */ public class DependencyStatisticsDecoratorStage extends AbstractTransformation<OperationsDependency, OperationsDependency> { + private final DependencyStatisticsDecorator statisticsDecorator = new DependencyStatisticsDecorator(); + @Override - protected void execute(final OperationsDependency element) { + protected void execute(final OperationsDependency operationsDependency) { + + statisticsDecorator.decorate(operationsDependency); - // TODO + // TODO Temporary final stage -> print result + operationsDependency.printDependenncies(); + operationsDependency.printOperations(); - this.getOutputPort().send(element); + this.getOutputPort().send(operationsDependency); }