From 5b9169e7ecb31a2fc4c1ed1afe3398e8e274ecc1 Mon Sep 17 00:00:00 2001
From: Nelson Tavares de Sousa <ntd@informatik.uni-kiel.de>
Date: Fri, 17 Apr 2015 15:04:24 +0200
Subject: [PATCH] removed bug that didn't let the analysis terminate

---
 .../teetime/framework/AbstractRunnableStage.java    |  2 ++
 .../exceptionHandling/ExceptionHandlingTest.java    | 13 ++++++++-----
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/main/java/teetime/framework/AbstractRunnableStage.java b/src/main/java/teetime/framework/AbstractRunnableStage.java
index 00f4f59f..f5146dd5 100644
--- a/src/main/java/teetime/framework/AbstractRunnableStage.java
+++ b/src/main/java/teetime/framework/AbstractRunnableStage.java
@@ -46,6 +46,7 @@ abstract class AbstractRunnableStage implements Runnable {
 				} while (!stage.shouldBeTerminated());
 			} catch (StageException e) {
 				this.stage.terminate();
+				failed = true;
 			}
 			afterStageExecution(stage);
 
@@ -66,6 +67,7 @@ abstract class AbstractRunnableStage implements Runnable {
 					stage.onSignal(signal, inputPorts[i]);
 				}
 			}
+			System.out.println("HELLO");
 			throw new IllegalStateException("Terminated by StageExceptionListener");
 		}
 
diff --git a/src/test/java/teetime/framework/exceptionHandling/ExceptionHandlingTest.java b/src/test/java/teetime/framework/exceptionHandling/ExceptionHandlingTest.java
index 4806872b..0b2d44c1 100644
--- a/src/test/java/teetime/framework/exceptionHandling/ExceptionHandlingTest.java
+++ b/src/test/java/teetime/framework/exceptionHandling/ExceptionHandlingTest.java
@@ -22,6 +22,7 @@ import static org.junit.Assert.assertThat;
 import org.junit.Test;
 
 import teetime.framework.Analysis;
+import teetime.framework.AnalysisException;
 import teetime.framework.StageState;
 
 public class ExceptionHandlingTest {
@@ -34,14 +35,12 @@ public class ExceptionHandlingTest {
 		return configuration;
 	}
 
-	@Test
 	public void exceptionPassingAndTermination() {
 		newInstances();
 		analysis.executeBlocking();
-		assertEquals(TestListener.exceptionInvoked, 2); // listener did not kill thread to early
+		assertEquals(TestListener.exceptionInvoked, 2); // listener did not kill thread too early
 	}
 
-	@Test
 	public void terminatesAllStages() {
 		ExceptionTestConfiguration config = newInstances();
 		analysis.executeBlocking();
@@ -53,8 +52,12 @@ public class ExceptionHandlingTest {
 	@Test
 	public void forAFewTimes() {
 		for (int i = 0; i < 100; i++) {
-			newInstances();
-			exceptionPassingAndTermination();
+			try {
+				exceptionPassingAndTermination();
+				terminatesAllStages();
+			} catch (AnalysisException e) {
+				// Correct behavior
+			}
 		}
 	}
 }
-- 
GitLab