From f0ba7a6cfe7374a44ed2ed041b1706975095cdc7 Mon Sep 17 00:00:00 2001
From: Nelson Tavares de Sousa <ntd@informatik.uni-kiel.de>
Date: Thu, 16 Apr 2015 14:46:18 +0200
Subject: [PATCH] test for thread assignment

---
 .../java/teetime/framework/StageTest.java     | 48 +++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/src/test/java/teetime/framework/StageTest.java b/src/test/java/teetime/framework/StageTest.java
index b8df86ff..639a806e 100644
--- a/src/test/java/teetime/framework/StageTest.java
+++ b/src/test/java/teetime/framework/StageTest.java
@@ -15,11 +15,17 @@
  */
 package teetime.framework;
 
+import static org.junit.Assert.assertEquals;
+
 import org.junit.Assert;
 import org.junit.Test;
 
+import teetime.framework.pipe.IPipeFactory;
+import teetime.framework.pipe.PipeFactoryRegistry.PipeOrdering;
+import teetime.framework.pipe.PipeFactoryRegistry.ThreadCommunication;
 import teetime.stage.Cache;
 import teetime.stage.Counter;
+import teetime.stage.InitialElementProducer;
 
 public class StageTest {
 
@@ -38,4 +44,46 @@ public class StageTest {
 		}
 	}
 
+	@Test
+	public void testSetOwningThread() throws Exception {
+		TestConfig tc = new TestConfig();
+		new Analysis<TestConfig>(tc);
+		assertEquals(tc.init.owningThread, tc.delay.owningThread);
+	}
+
+	private static class TestConfig extends AnalysisConfiguration {
+		final IPipeFactory intraFact = PIPE_FACTORY_REGISTRY.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false);
+		public final DelayAndTerminate delay;
+		public InitialElementProducer<String> init;
+
+		public TestConfig() {
+			init = new InitialElementProducer<String>("Hello");
+			delay = new DelayAndTerminate(0);
+			intraFact.create(init.getOutputPort(), delay.getInputPort());
+			addThreadableStage(init);
+		}
+	}
+
+	private static class DelayAndTerminate extends AbstractConsumerStage<String> {
+
+		private final long delayInMs;
+
+		public boolean finished;
+
+		public DelayAndTerminate(final long delayInMs) {
+			super();
+			this.delayInMs = delayInMs;
+		}
+
+		@Override
+		protected void execute(final String element) {
+			try {
+				Thread.sleep(delayInMs);
+			} catch (InterruptedException e) {
+			}
+			finished = true;
+		}
+
+	}
+
 }
-- 
GitLab