From 4253a5ea1bd24efb1406ad52a04aeaa179be8774 Mon Sep 17 00:00:00 2001 From: Nelson Tavares de Sousa <ntd@informatik.uni-kiel.de> Date: Tue, 18 Nov 2014 15:07:05 +0100 Subject: [PATCH] removed AnalysisConfigurationTest removed StageLists from AnalysisConfiguration and adapted Analysis and corresponding tests --- src/main/java/teetime/framework/Analysis.java | 24 +++++----- .../framework/AnalysisConfiguration.java | 47 ++----------------- .../LoopStageAnalysisConfiguration.java | 3 +- .../examples/cipher/CipherConfiguration.java | 3 +- .../tokenizer/TokenizerConfiguration.java | 3 +- .../framework/AnalysisConfigurationTest.java | 37 --------------- 6 files changed, 23 insertions(+), 94 deletions(-) delete mode 100644 src/test/java/teetime/framework/AnalysisConfigurationTest.java diff --git a/src/main/java/teetime/framework/Analysis.java b/src/main/java/teetime/framework/Analysis.java index 40aad369..7ff41daa 100644 --- a/src/main/java/teetime/framework/Analysis.java +++ b/src/main/java/teetime/framework/Analysis.java @@ -28,20 +28,22 @@ public class Analysis implements UncaughtExceptionHandler { } public void init() { - for (Stage stage : this.configuration.getConsumerStages()) { + List<Stage> threadableStageJobs = this.configuration.getThreadableStageJobs(); + for (Stage stage : threadableStageJobs) { Thread thread = new Thread(new RunnableStage(stage)); - this.consumerThreads.add(thread); - } - - for (Stage stage : this.configuration.getFiniteProducerStages()) { - Thread thread = new Thread(new RunnableStage(stage)); - this.finiteProducerThreads.add(thread); + switch (stage.getTerminationStrategy()) { + case BY_SIGNAL: + this.consumerThreads.add(thread); + break; + case BY_SELF_DECISION: + this.finiteProducerThreads.add(thread); + break; + case BY_INTERRUPT: + this.infiniteProducerThreads.add(thread); + break; + } } - for (Stage stage : this.configuration.getInfiniteProducerStages()) { - Thread thread = new Thread(new RunnableStage(stage)); - this.infiniteProducerThreads.add(thread); - } } /** diff --git a/src/main/java/teetime/framework/AnalysisConfiguration.java b/src/main/java/teetime/framework/AnalysisConfiguration.java index e9cae65a..f9d194e8 100644 --- a/src/main/java/teetime/framework/AnalysisConfiguration.java +++ b/src/main/java/teetime/framework/AnalysisConfiguration.java @@ -1,9 +1,7 @@ package teetime.framework; -import java.util.HashSet; import java.util.LinkedList; import java.util.List; -import java.util.Set; import teetime.framework.pipe.PipeFactoryRegistry; @@ -11,51 +9,14 @@ public class AnalysisConfiguration { protected static final PipeFactoryRegistry PIPE_FACTORY_REGISTRY = PipeFactoryRegistry.INSTANCE; - private final List<Runnable> threadableStageJobs = new LinkedList<Runnable>(); + private final List<Stage> threadableStageJobs = new LinkedList<Stage>(); - private final Set<Stage> consumerStages = new HashSet<Stage>(); - private final Set<Stage> finiteProducerStages = new HashSet<Stage>(); - private final Set<Stage> infiniteProducerStages = new HashSet<Stage>(); - - Set<Stage> getConsumerStages() { - return this.consumerStages; - } - - Set<Stage> getFiniteProducerStages() { - return this.finiteProducerStages; - } - - Set<Stage> getInfiniteProducerStages() { - return this.infiniteProducerStages; + List<Stage> getThreadableStageJobs() { + return threadableStageJobs; } public void addThreadableStage(final Stage stage) { - // wrap the stage categorization in a runnable - // because the termination strategy could depend on port configuration that is set later - final Runnable addThreadableStageJob = new Runnable() { - @Override - public void run() { - switch (stage.getTerminationStrategy()) { - case BY_SIGNAL: - consumerStages.add(stage); - break; - case BY_SELF_DECISION: - finiteProducerStages.add(stage); - break; - case BY_INTERRUPT: - infiniteProducerStages.add(stage); - break; - } - } - }; - - threadableStageJobs.add(addThreadableStageJob); - } - - void init() { - for (Runnable job : threadableStageJobs) { - job.run(); - } + threadableStageJobs.add(stage); } } diff --git a/src/performancetest/java/teetime/examples/loopStage/LoopStageAnalysisConfiguration.java b/src/performancetest/java/teetime/examples/loopStage/LoopStageAnalysisConfiguration.java index 400c4cd4..34172a25 100644 --- a/src/performancetest/java/teetime/examples/loopStage/LoopStageAnalysisConfiguration.java +++ b/src/performancetest/java/teetime/examples/loopStage/LoopStageAnalysisConfiguration.java @@ -13,6 +13,7 @@ public class LoopStageAnalysisConfiguration extends AnalysisConfiguration { IPipeFactory factory = PIPE_FACTORY_REGISTRY.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.QUEUE_BASED, true); factory.create(countdown.getNewCountdownOutputPort(), countdown.getCountdownInputPort()); - this.getFiniteProducerStages().add(countdown); + // this.getFiniteProducerStages().add(countdown); + this.addThreadableStage(countdown); } } diff --git a/src/test/java/teetime/examples/cipher/CipherConfiguration.java b/src/test/java/teetime/examples/cipher/CipherConfiguration.java index 5b036d17..e34fc99b 100644 --- a/src/test/java/teetime/examples/cipher/CipherConfiguration.java +++ b/src/test/java/teetime/examples/cipher/CipherConfiguration.java @@ -37,7 +37,8 @@ public class CipherConfiguration extends AnalysisConfiguration { factory.create(decomp.getOutputPort(), decrypt.getInputPort()); factory.create(decrypt.getOutputPort(), writer.getInputPort()); - this.getFiniteProducerStages().add(init); + // this.getFiniteProducerStages().add(init); + this.addThreadableStage(init); } } diff --git a/src/test/java/teetime/examples/tokenizer/TokenizerConfiguration.java b/src/test/java/teetime/examples/tokenizer/TokenizerConfiguration.java index 202843b4..af0b7ed7 100644 --- a/src/test/java/teetime/examples/tokenizer/TokenizerConfiguration.java +++ b/src/test/java/teetime/examples/tokenizer/TokenizerConfiguration.java @@ -43,7 +43,8 @@ public class TokenizerConfiguration extends AnalysisConfiguration { PIPE_FACTORY_REGISTRY.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false).create( tokenizer.getOutputPort(), counter.getInputPort()); - this.getFiniteProducerStages().add(init); + // this.getFiniteProducerStages().add(init); + this.addThreadableStage(init); } public int getTokenCount() { diff --git a/src/test/java/teetime/framework/AnalysisConfigurationTest.java b/src/test/java/teetime/framework/AnalysisConfigurationTest.java deleted file mode 100644 index 26c5554b..00000000 --- a/src/test/java/teetime/framework/AnalysisConfigurationTest.java +++ /dev/null @@ -1,37 +0,0 @@ -package teetime.framework; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import org.junit.Test; - -import teetime.stage.Clock; -import teetime.stage.Counter; -import teetime.stage.InitialElementProducer; - -public class AnalysisConfigurationTest { - - @Test - public void checkIfCorrectAdded() { - AnalysisConfiguration config = new AnalysisConfiguration(); - - // Consumer -> BY_SIGNAL - Counter<String> counter = new Counter<String>(); - config.addThreadableStage(counter); - - // Infinite producer -> BY_INTERRUPT - Clock clock = new Clock(); - config.addThreadableStage(clock); - - // Finite Producer -> BY_SELF_DECISION - InitialElementProducer<Integer> producer = new InitialElementProducer<Integer>(1, 2, 3, 4); - config.addThreadableStage(producer); - - config.init(); - assertTrue(config.getConsumerStages().contains(counter)); - assertFalse(config.getConsumerStages().contains(clock)); - - assertTrue(config.getInfiniteProducerStages().contains(clock)); - assertTrue(config.getFiniteProducerStages().contains(producer)); - } -} -- GitLab