diff --git a/src/main/java/teetime/framework/AbstractRunnableStage.java b/src/main/java/teetime/framework/AbstractRunnableStage.java index 01bed6df2543adf2fdecdc4ff8e6ac0c6b4cb4a3..d40c278d20d90b4d3386dfcf7ad7a8895aa905b2 100644 --- a/src/main/java/teetime/framework/AbstractRunnableStage.java +++ b/src/main/java/teetime/framework/AbstractRunnableStage.java @@ -15,19 +15,28 @@ */ package teetime.framework; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Map; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import teetime.framework.exceptionHandling.TerminateException; +import teetime.util.StopWatch; abstract class AbstractRunnableStage implements Runnable { private static final String TERMINATING_THREAD_DUE_TO_THE_FOLLOWING_EXCEPTION = "Terminating thread due to the following exception: "; + private final StopWatch stopWatch = new StopWatch(); + protected final Stage stage; @SuppressWarnings("PMD.LoggerIsNotStaticFinal") protected final Logger logger; + public static final Map<Stage, Long> durationsInNs = Collections.synchronizedMap(new LinkedHashMap<Stage, Long>()); + protected AbstractRunnableStage(final Stage stage) { if (stage == null) { throw new IllegalArgumentException("Argument stage may not be null"); @@ -50,6 +59,7 @@ abstract class AbstractRunnableStage implements Runnable { if (stage.getOwningContext() == null) { throw new IllegalArgumentException("Argument stage may not have a nullable owning context"); } + stopWatch.start(); try { while (!stage.shouldBeTerminated()) { executeStage(); @@ -58,6 +68,8 @@ abstract class AbstractRunnableStage implements Runnable { stage.abort(); stage.getOwningContext().abortConfigurationRun(); } finally { + stopWatch.end(); + durationsInNs.put(stage, stopWatch.getDurationInNs()); afterStageExecution(); } diff --git a/src/main/java/teetime/stage/basic/distributor/strategy/RoundRobinStrategy2.java b/src/main/java/teetime/stage/basic/distributor/strategy/RoundRobinStrategy2.java index 9dd7e4db5bdd28ae014e77bab727333f2f335c23..ba6c4ec94eb8eda4928f599ea81377301421dbb4 100644 --- a/src/main/java/teetime/stage/basic/distributor/strategy/RoundRobinStrategy2.java +++ b/src/main/java/teetime/stage/basic/distributor/strategy/RoundRobinStrategy2.java @@ -21,6 +21,8 @@ import teetime.framework.OutputPort; import teetime.stage.basic.distributor.Distributor; /** + * Backoff strategy + * * @author Christian Wulf * * @since 1.1