From d65eb8d5754eeb6bdb2284a9a8e45b0ee2eb5e3a Mon Sep 17 00:00:00 2001
From: Nelson Tavares de Sousa <stu103017@mail.uni-kiel.de>
Date: Fri, 26 Jun 2015 13:53:47 +0200
Subject: [PATCH] added test; connectPorts only adds a producer to
 threadableStages, if it has not been added yet

---
 .../framework/ConfigurationContext.java       |  4 +++-
 .../java/teetime/framework/ExecutionTest.java | 19 +++++++++++++++++++
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/src/main/java/teetime/framework/ConfigurationContext.java b/src/main/java/teetime/framework/ConfigurationContext.java
index 444bafaa..483b1ecb 100644
--- a/src/main/java/teetime/framework/ConfigurationContext.java
+++ b/src/main/java/teetime/framework/ConfigurationContext.java
@@ -55,7 +55,9 @@ public final class ConfigurationContext {
 	 */
 	final <T> void connectPorts(final OutputPort<? extends T> sourcePort, final InputPort<T> targetPort, final int capacity) {
 		if (sourcePort.getOwningStage().getInputPorts().length == 0) {
-			addThreadableStage(sourcePort.getOwningStage(), sourcePort.getOwningStage().getId());
+			if (!threadableStages.containsKey(sourcePort.getOwningStage())) {
+				addThreadableStage(sourcePort.getOwningStage(), sourcePort.getOwningStage().getId());
+			}
 		}
 		if (sourcePort.getPipe() != null || targetPort.getPipe() != null) {
 			LOGGER.warn("Overwriting existing pipe while connecting stages " +
diff --git a/src/test/java/teetime/framework/ExecutionTest.java b/src/test/java/teetime/framework/ExecutionTest.java
index 028513cf..bc7d850c 100644
--- a/src/test/java/teetime/framework/ExecutionTest.java
+++ b/src/test/java/teetime/framework/ExecutionTest.java
@@ -176,4 +176,23 @@ public class ExecutionTest {
 
 	}
 
+	@Test
+	public void threadNameing() {
+		NameConfig configuration = new NameConfig();
+		Execution<NameConfig> execution = new Execution<NameConfig>(configuration);
+		assertThat(configuration.stageWithNamedThread.getOwningThread().getName(), is("TestName"));
+	}
+
+	private class NameConfig extends Configuration {
+
+		public InitialElementProducer<Object> stageWithNamedThread;
+
+		public NameConfig() {
+			stageWithNamedThread = new InitialElementProducer<Object>(new Object());
+			addThreadableStage(stageWithNamedThread, "TestName");
+			connectPorts(stageWithNamedThread.getOutputPort(), new Sink().getInputPort());
+		}
+
+	}
+
 }
-- 
GitLab