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