From 35142f0f712e39822b45113de8a930b68d68534b Mon Sep 17 00:00:00 2001
From: Christian Wulf <chw@informatik.uni-kiel.de>
Date: Wed, 25 Jun 2014 07:27:02 +0200
Subject: [PATCH] added @Before to all PerformanceTests

---
 ...odCallThoughputTimestampAnalysis1Test.java |  14 ++-----
 ...odCallThoughputTimestampAnalysis2Test.java |  15 ++------
 ...odCallThoughputTimestampAnalysis3Test.java |  15 ++------
 ...odCallThoughputTimestampAnalysis4Test.java |  15 ++------
 ...odCallThoughputTimestampAnalysis5Test.java |  15 ++------
 ...odCallThoughputTimestampAnalysis6Test.java |  15 ++------
 ...odCallThoughputTimestampAnalysis7Test.java |  15 ++------
 ...odCallThoughputTimestampAnalysis8Test.java |  15 ++------
 ...dCallThoughputTimestampAnalysis12Test.java |  15 ++------
 ...dCallThoughputTimestampAnalysis13Test.java |  15 ++------
 ...odCallThoughputTimestampAnalysis9Test.java |  15 ++------
 ...dCallThoughputTimestampAnalysis10Test.java |  15 ++------
 ...dCallThoughputTimestampAnalysis11Test.java |  15 ++------
 ...dCallThoughputTimestampAnalysis14Test.java |  15 ++------
 ...dCallThoughputTimestampAnalysis15Test.java |  15 ++------
 ...dCallThoughputTimestampAnalysis16Test.java |  14 +++----
 ...dCallThoughputTimestampAnalysis17Test.java |  10 ++---
 src/test/java/test/PerformanceTest.java       |  36 ++++++++++++++++++
 variants.xlsx                                 | Bin 0 -> 9824 bytes
 19 files changed, 93 insertions(+), 191 deletions(-)
 create mode 100644 variants.xlsx

diff --git a/src/test/java/teetime/variant/methodcall/examples/experiment01/MethodCallThoughputTimestampAnalysis1Test.java b/src/test/java/teetime/variant/methodcall/examples/experiment01/MethodCallThoughputTimestampAnalysis1Test.java
index aa1b32ab..940e090b 100644
--- a/src/test/java/teetime/variant/methodcall/examples/experiment01/MethodCallThoughputTimestampAnalysis1Test.java
+++ b/src/test/java/teetime/variant/methodcall/examples/experiment01/MethodCallThoughputTimestampAnalysis1Test.java
@@ -15,14 +15,9 @@
  ***************************************************************************/
 package teetime.variant.methodcall.examples.experiment01;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.junit.Test;
 
 import teetime.util.ConstructorClosure;
-import teetime.util.StatisticsUtil;
-import teetime.util.StopWatch;
 import teetime.variant.explicitScheduling.examples.throughput.TimestampObject;
 import test.PerformanceTest;
 
@@ -40,12 +35,10 @@ public class MethodCallThoughputTimestampAnalysis1Test extends PerformanceTest {
 	public void testWithManyObjects() {
 		System.out.println("Testing teetime (mc) with NUM_OBJECTS_TO_CREATE=" + NUM_OBJECTS_TO_CREATE + ", NUM_NOOP_FILTERS="
 				+ NUM_NOOP_FILTERS + "...");
-		final StopWatch stopWatch = new StopWatch();
-		final List<TimestampObject> timestampObjects = new ArrayList<TimestampObject>(NUM_OBJECTS_TO_CREATE);
 
 		final MethodCallThroughputAnalysis1 analysis = new MethodCallThroughputAnalysis1();
 		analysis.setNumNoopFilters(NUM_NOOP_FILTERS);
-		analysis.setTimestampObjects(timestampObjects);
+		analysis.setTimestampObjects(this.timestampObjects);
 		analysis.setInput(NUM_OBJECTS_TO_CREATE, new ConstructorClosure<TimestampObject>() {
 			@Override
 			public TimestampObject create() {
@@ -54,14 +47,13 @@ public class MethodCallThoughputTimestampAnalysis1Test extends PerformanceTest {
 		});
 		analysis.init();
 
-		stopWatch.start();
+		this.stopWatch.start();
 		try {
 			analysis.start();
 		} finally {
-			stopWatch.end();
+			this.stopWatch.end();
 		}
 
-		StatisticsUtil.printStatistics(stopWatch.getDurationInNs(), timestampObjects);
 	}
 
 }
diff --git a/src/test/java/teetime/variant/methodcall/examples/experiment02/MethodCallThoughputTimestampAnalysis2Test.java b/src/test/java/teetime/variant/methodcall/examples/experiment02/MethodCallThoughputTimestampAnalysis2Test.java
index 08bb6967..59743fcd 100644
--- a/src/test/java/teetime/variant/methodcall/examples/experiment02/MethodCallThoughputTimestampAnalysis2Test.java
+++ b/src/test/java/teetime/variant/methodcall/examples/experiment02/MethodCallThoughputTimestampAnalysis2Test.java
@@ -15,14 +15,9 @@
  ***************************************************************************/
 package teetime.variant.methodcall.examples.experiment02;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.junit.Test;
 
 import teetime.util.ConstructorClosure;
-import teetime.util.StatisticsUtil;
-import teetime.util.StopWatch;
 import teetime.variant.explicitScheduling.examples.throughput.TimestampObject;
 import test.PerformanceTest;
 
@@ -40,12 +35,10 @@ public class MethodCallThoughputTimestampAnalysis2Test extends PerformanceTest {
 	public void testWithManyObjects() {
 		System.out.println("Testing teetime (mc) with NUM_OBJECTS_TO_CREATE=" + NUM_OBJECTS_TO_CREATE + ", NUM_NOOP_FILTERS="
 				+ NUM_NOOP_FILTERS + "...");
-		final StopWatch stopWatch = new StopWatch();
-		final List<TimestampObject> timestampObjects = new ArrayList<TimestampObject>(NUM_OBJECTS_TO_CREATE);
 
 		final MethodCallThroughputAnalysis2 analysis = new MethodCallThroughputAnalysis2();
 		analysis.setNumNoopFilters(NUM_NOOP_FILTERS);
-		analysis.setTimestampObjects(timestampObjects);
+		analysis.setTimestampObjects(this.timestampObjects);
 		analysis.setInput(NUM_OBJECTS_TO_CREATE, new ConstructorClosure<TimestampObject>() {
 			@Override
 			public TimestampObject create() {
@@ -54,14 +47,12 @@ public class MethodCallThoughputTimestampAnalysis2Test extends PerformanceTest {
 		});
 		analysis.init();
 
-		stopWatch.start();
+		this.stopWatch.start();
 		try {
 			analysis.start();
 		} finally {
-			stopWatch.end();
+			this.stopWatch.end();
 		}
-
-		StatisticsUtil.printStatistics(stopWatch.getDurationInNs(), timestampObjects);
 	}
 
 }
diff --git a/src/test/java/teetime/variant/methodcall/examples/experiment03/MethodCallThoughputTimestampAnalysis3Test.java b/src/test/java/teetime/variant/methodcall/examples/experiment03/MethodCallThoughputTimestampAnalysis3Test.java
index 65020939..0bfc8205 100644
--- a/src/test/java/teetime/variant/methodcall/examples/experiment03/MethodCallThoughputTimestampAnalysis3Test.java
+++ b/src/test/java/teetime/variant/methodcall/examples/experiment03/MethodCallThoughputTimestampAnalysis3Test.java
@@ -15,14 +15,9 @@
  ***************************************************************************/
 package teetime.variant.methodcall.examples.experiment03;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.junit.Test;
 
 import teetime.util.ConstructorClosure;
-import teetime.util.StatisticsUtil;
-import teetime.util.StopWatch;
 import teetime.variant.explicitScheduling.examples.throughput.TimestampObject;
 import test.PerformanceTest;
 
@@ -40,12 +35,10 @@ public class MethodCallThoughputTimestampAnalysis3Test extends PerformanceTest {
 	public void testWithManyObjects() {
 		System.out.println("Testing teetime (mc) with NUM_OBJECTS_TO_CREATE=" + NUM_OBJECTS_TO_CREATE + ", NUM_NOOP_FILTERS="
 				+ NUM_NOOP_FILTERS + "...");
-		final StopWatch stopWatch = new StopWatch();
-		final List<TimestampObject> timestampObjects = new ArrayList<TimestampObject>(NUM_OBJECTS_TO_CREATE);
 
 		final MethodCallThroughputAnalysis3 analysis = new MethodCallThroughputAnalysis3();
 		analysis.setNumNoopFilters(NUM_NOOP_FILTERS);
-		analysis.setTimestampObjects(timestampObjects);
+		analysis.setTimestampObjects(this.timestampObjects);
 		analysis.setInput(NUM_OBJECTS_TO_CREATE, new ConstructorClosure<TimestampObject>() {
 			@Override
 			public TimestampObject create() {
@@ -54,14 +47,12 @@ public class MethodCallThoughputTimestampAnalysis3Test extends PerformanceTest {
 		});
 		analysis.init();
 
-		stopWatch.start();
+		this.stopWatch.start();
 		try {
 			analysis.start();
 		} finally {
-			stopWatch.end();
+			this.stopWatch.end();
 		}
-
-		StatisticsUtil.printStatistics(stopWatch.getDurationInNs(), timestampObjects);
 	}
 
 }
diff --git a/src/test/java/teetime/variant/methodcall/examples/experiment04/MethodCallThoughputTimestampAnalysis4Test.java b/src/test/java/teetime/variant/methodcall/examples/experiment04/MethodCallThoughputTimestampAnalysis4Test.java
index a1adcac9..ba5f8095 100644
--- a/src/test/java/teetime/variant/methodcall/examples/experiment04/MethodCallThoughputTimestampAnalysis4Test.java
+++ b/src/test/java/teetime/variant/methodcall/examples/experiment04/MethodCallThoughputTimestampAnalysis4Test.java
@@ -15,14 +15,9 @@
  ***************************************************************************/
 package teetime.variant.methodcall.examples.experiment04;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.junit.Test;
 
 import teetime.util.ConstructorClosure;
-import teetime.util.StatisticsUtil;
-import teetime.util.StopWatch;
 import teetime.variant.explicitScheduling.examples.throughput.TimestampObject;
 import test.PerformanceTest;
 
@@ -40,12 +35,10 @@ public class MethodCallThoughputTimestampAnalysis4Test extends PerformanceTest {
 	public void testWithManyObjects() {
 		System.out.println("Testing teetime (mc) with NUM_OBJECTS_TO_CREATE=" + NUM_OBJECTS_TO_CREATE + ", NUM_NOOP_FILTERS="
 				+ NUM_NOOP_FILTERS + "...");
-		final StopWatch stopWatch = new StopWatch();
-		final List<TimestampObject> timestampObjects = new ArrayList<TimestampObject>(NUM_OBJECTS_TO_CREATE);
 
 		final MethodCallThroughputAnalysis4 analysis = new MethodCallThroughputAnalysis4();
 		analysis.setNumNoopFilters(NUM_NOOP_FILTERS);
-		analysis.setTimestampObjects(timestampObjects);
+		analysis.setTimestampObjects(this.timestampObjects);
 		analysis.setInput(NUM_OBJECTS_TO_CREATE, new ConstructorClosure<TimestampObject>() {
 			@Override
 			public TimestampObject create() {
@@ -54,14 +47,12 @@ public class MethodCallThoughputTimestampAnalysis4Test extends PerformanceTest {
 		});
 		analysis.init();
 
-		stopWatch.start();
+		this.stopWatch.start();
 		try {
 			analysis.start();
 		} finally {
-			stopWatch.end();
+			this.stopWatch.end();
 		}
-
-		StatisticsUtil.printStatistics(stopWatch.getDurationInNs(), timestampObjects);
 	}
 
 }
diff --git a/src/test/java/teetime/variant/methodcall/examples/experiment05/MethodCallThoughputTimestampAnalysis5Test.java b/src/test/java/teetime/variant/methodcall/examples/experiment05/MethodCallThoughputTimestampAnalysis5Test.java
index 63e5c16e..22c2ec2b 100644
--- a/src/test/java/teetime/variant/methodcall/examples/experiment05/MethodCallThoughputTimestampAnalysis5Test.java
+++ b/src/test/java/teetime/variant/methodcall/examples/experiment05/MethodCallThoughputTimestampAnalysis5Test.java
@@ -15,14 +15,9 @@
  ***************************************************************************/
 package teetime.variant.methodcall.examples.experiment05;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.junit.Test;
 
 import teetime.util.ConstructorClosure;
-import teetime.util.StatisticsUtil;
-import teetime.util.StopWatch;
 import teetime.variant.explicitScheduling.examples.throughput.TimestampObject;
 import test.PerformanceTest;
 
@@ -40,12 +35,10 @@ public class MethodCallThoughputTimestampAnalysis5Test extends PerformanceTest {
 	public void testWithManyObjects() {
 		System.out.println("Testing teetime (mc) with NUM_OBJECTS_TO_CREATE=" + NUM_OBJECTS_TO_CREATE + ", NUM_NOOP_FILTERS="
 				+ NUM_NOOP_FILTERS + "...");
-		final StopWatch stopWatch = new StopWatch();
-		final List<TimestampObject> timestampObjects = new ArrayList<TimestampObject>(NUM_OBJECTS_TO_CREATE);
 
 		final MethodCallThroughputAnalysis5 analysis = new MethodCallThroughputAnalysis5();
 		analysis.setNumNoopFilters(NUM_NOOP_FILTERS);
-		analysis.setTimestampObjects(timestampObjects);
+		analysis.setTimestampObjects(this.timestampObjects);
 		analysis.setInput(NUM_OBJECTS_TO_CREATE, new ConstructorClosure<TimestampObject>() {
 			@Override
 			public TimestampObject create() {
@@ -54,14 +47,12 @@ public class MethodCallThoughputTimestampAnalysis5Test extends PerformanceTest {
 		});
 		analysis.init();
 
-		stopWatch.start();
+		this.stopWatch.start();
 		try {
 			analysis.start();
 		} finally {
-			stopWatch.end();
+			this.stopWatch.end();
 		}
-
-		StatisticsUtil.printStatistics(stopWatch.getDurationInNs(), timestampObjects);
 	}
 
 }
diff --git a/src/test/java/teetime/variant/methodcall/examples/experiment06/MethodCallThoughputTimestampAnalysis6Test.java b/src/test/java/teetime/variant/methodcall/examples/experiment06/MethodCallThoughputTimestampAnalysis6Test.java
index 126742c2..fa2150df 100644
--- a/src/test/java/teetime/variant/methodcall/examples/experiment06/MethodCallThoughputTimestampAnalysis6Test.java
+++ b/src/test/java/teetime/variant/methodcall/examples/experiment06/MethodCallThoughputTimestampAnalysis6Test.java
@@ -15,14 +15,9 @@
  ***************************************************************************/
 package teetime.variant.methodcall.examples.experiment06;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.junit.Test;
 
 import teetime.util.ConstructorClosure;
-import teetime.util.StatisticsUtil;
-import teetime.util.StopWatch;
 import teetime.variant.explicitScheduling.examples.throughput.TimestampObject;
 import test.PerformanceTest;
 
@@ -37,12 +32,10 @@ public class MethodCallThoughputTimestampAnalysis6Test extends PerformanceTest {
 	public void testWithManyObjects() {
 		System.out.println("Testing teetime (mc) with NUM_OBJECTS_TO_CREATE=" + NUM_OBJECTS_TO_CREATE + ", NUM_NOOP_FILTERS="
 				+ NUM_NOOP_FILTERS + "...");
-		final StopWatch stopWatch = new StopWatch();
-		final List<TimestampObject> timestampObjects = new ArrayList<TimestampObject>(NUM_OBJECTS_TO_CREATE);
 
 		final MethodCallThroughputAnalysis6 analysis = new MethodCallThroughputAnalysis6();
 		analysis.setNumNoopFilters(NUM_NOOP_FILTERS);
-		analysis.setTimestampObjects(timestampObjects);
+		analysis.setTimestampObjects(this.timestampObjects);
 		analysis.setInput(NUM_OBJECTS_TO_CREATE, new ConstructorClosure<TimestampObject>() {
 			@Override
 			public TimestampObject create() {
@@ -51,14 +44,12 @@ public class MethodCallThoughputTimestampAnalysis6Test extends PerformanceTest {
 		});
 		analysis.init();
 
-		stopWatch.start();
+		this.stopWatch.start();
 		try {
 			analysis.start();
 		} finally {
-			stopWatch.end();
+			this.stopWatch.end();
 		}
-
-		StatisticsUtil.printStatistics(stopWatch.getDurationInNs(), timestampObjects);
 	}
 
 }
diff --git a/src/test/java/teetime/variant/methodcall/examples/experiment07/MethodCallThoughputTimestampAnalysis7Test.java b/src/test/java/teetime/variant/methodcall/examples/experiment07/MethodCallThoughputTimestampAnalysis7Test.java
index 050d96d4..7ced7c15 100644
--- a/src/test/java/teetime/variant/methodcall/examples/experiment07/MethodCallThoughputTimestampAnalysis7Test.java
+++ b/src/test/java/teetime/variant/methodcall/examples/experiment07/MethodCallThoughputTimestampAnalysis7Test.java
@@ -15,14 +15,9 @@
  ***************************************************************************/
 package teetime.variant.methodcall.examples.experiment07;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.junit.Test;
 
 import teetime.util.ConstructorClosure;
-import teetime.util.StatisticsUtil;
-import teetime.util.StopWatch;
 import teetime.variant.explicitScheduling.examples.throughput.TimestampObject;
 import test.PerformanceTest;
 
@@ -37,12 +32,10 @@ public class MethodCallThoughputTimestampAnalysis7Test extends PerformanceTest {
 	public void testWithManyObjects() {
 		System.out.println("Testing teetime (mc) with NUM_OBJECTS_TO_CREATE=" + NUM_OBJECTS_TO_CREATE + ", NUM_NOOP_FILTERS="
 				+ NUM_NOOP_FILTERS + "...");
-		final StopWatch stopWatch = new StopWatch();
-		final List<TimestampObject> timestampObjects = new ArrayList<TimestampObject>(NUM_OBJECTS_TO_CREATE);
 
 		final MethodCallThroughputAnalysis7 analysis = new MethodCallThroughputAnalysis7();
 		analysis.setNumNoopFilters(NUM_NOOP_FILTERS);
-		analysis.setTimestampObjects(timestampObjects);
+		analysis.setTimestampObjects(this.timestampObjects);
 		analysis.setInput(NUM_OBJECTS_TO_CREATE, new ConstructorClosure<TimestampObject>() {
 			@Override
 			public TimestampObject create() {
@@ -51,14 +44,12 @@ public class MethodCallThoughputTimestampAnalysis7Test extends PerformanceTest {
 		});
 		analysis.init();
 
-		stopWatch.start();
+		this.stopWatch.start();
 		try {
 			analysis.start();
 		} finally {
-			stopWatch.end();
+			this.stopWatch.end();
 		}
-
-		StatisticsUtil.printStatistics(stopWatch.getDurationInNs(), timestampObjects);
 	}
 
 }
diff --git a/src/test/java/teetime/variant/methodcall/examples/experiment08/MethodCallThoughputTimestampAnalysis8Test.java b/src/test/java/teetime/variant/methodcall/examples/experiment08/MethodCallThoughputTimestampAnalysis8Test.java
index 8ab1b3d8..e2de139f 100644
--- a/src/test/java/teetime/variant/methodcall/examples/experiment08/MethodCallThoughputTimestampAnalysis8Test.java
+++ b/src/test/java/teetime/variant/methodcall/examples/experiment08/MethodCallThoughputTimestampAnalysis8Test.java
@@ -15,14 +15,9 @@
  ***************************************************************************/
 package teetime.variant.methodcall.examples.experiment08;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.junit.Test;
 
 import teetime.util.ConstructorClosure;
-import teetime.util.StatisticsUtil;
-import teetime.util.StopWatch;
 import teetime.variant.explicitScheduling.examples.throughput.TimestampObject;
 import test.PerformanceTest;
 
@@ -37,12 +32,10 @@ public class MethodCallThoughputTimestampAnalysis8Test extends PerformanceTest {
 	public void testWithManyObjects() {
 		System.out.println("Testing teetime (mc) with NUM_OBJECTS_TO_CREATE=" + NUM_OBJECTS_TO_CREATE + ", NUM_NOOP_FILTERS="
 				+ NUM_NOOP_FILTERS + "...");
-		final StopWatch stopWatch = new StopWatch();
-		final List<TimestampObject> timestampObjects = new ArrayList<TimestampObject>(NUM_OBJECTS_TO_CREATE);
 
 		final MethodCallThroughputAnalysis8 analysis = new MethodCallThroughputAnalysis8();
 		analysis.setNumNoopFilters(NUM_NOOP_FILTERS);
-		analysis.setTimestampObjects(timestampObjects);
+		analysis.setTimestampObjects(this.timestampObjects);
 		analysis.setInput(NUM_OBJECTS_TO_CREATE, new ConstructorClosure<TimestampObject>() {
 			@Override
 			public TimestampObject create() {
@@ -51,14 +44,12 @@ public class MethodCallThoughputTimestampAnalysis8Test extends PerformanceTest {
 		});
 		analysis.init();
 
-		stopWatch.start();
+		this.stopWatch.start();
 		try {
 			analysis.start();
 		} finally {
-			stopWatch.end();
+			this.stopWatch.end();
 		}
-
-		StatisticsUtil.printStatistics(stopWatch.getDurationInNs(), timestampObjects);
 	}
 
 }
diff --git a/src/test/java/teetime/variant/methodcall/examples/experiment12/MethodCallThoughputTimestampAnalysis12Test.java b/src/test/java/teetime/variant/methodcall/examples/experiment12/MethodCallThoughputTimestampAnalysis12Test.java
index c6fe784e..86e662f9 100644
--- a/src/test/java/teetime/variant/methodcall/examples/experiment12/MethodCallThoughputTimestampAnalysis12Test.java
+++ b/src/test/java/teetime/variant/methodcall/examples/experiment12/MethodCallThoughputTimestampAnalysis12Test.java
@@ -15,14 +15,9 @@
  ***************************************************************************/
 package teetime.variant.methodcall.examples.experiment12;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.junit.Test;
 
 import teetime.util.ConstructorClosure;
-import teetime.util.StatisticsUtil;
-import teetime.util.StopWatch;
 import teetime.variant.explicitScheduling.examples.throughput.TimestampObject;
 import test.PerformanceTest;
 
@@ -37,12 +32,10 @@ public class MethodCallThoughputTimestampAnalysis12Test extends PerformanceTest
 	public void testWithManyObjects() {
 		System.out.println("Testing teetime (mc) with NUM_OBJECTS_TO_CREATE=" + NUM_OBJECTS_TO_CREATE + ", NUM_NOOP_FILTERS="
 				+ NUM_NOOP_FILTERS + "...");
-		final StopWatch stopWatch = new StopWatch();
-		final List<TimestampObject> timestampObjects = new ArrayList<TimestampObject>(NUM_OBJECTS_TO_CREATE);
 
 		final MethodCallThroughputAnalysis12 analysis = new MethodCallThroughputAnalysis12();
 		analysis.setNumNoopFilters(NUM_NOOP_FILTERS);
-		analysis.setTimestampObjects(timestampObjects);
+		analysis.setTimestampObjects(this.timestampObjects);
 		analysis.setInput(NUM_OBJECTS_TO_CREATE, new ConstructorClosure<TimestampObject>() {
 			@Override
 			public TimestampObject create() {
@@ -51,14 +44,12 @@ public class MethodCallThoughputTimestampAnalysis12Test extends PerformanceTest
 		});
 		analysis.init();
 
-		stopWatch.start();
+		this.stopWatch.start();
 		try {
 			analysis.start();
 		} finally {
-			stopWatch.end();
+			this.stopWatch.end();
 		}
-
-		StatisticsUtil.printStatistics(stopWatch.getDurationInNs(), timestampObjects);
 	}
 
 }
diff --git a/src/test/java/teetime/variant/methodcall/examples/experiment13/MethodCallThoughputTimestampAnalysis13Test.java b/src/test/java/teetime/variant/methodcall/examples/experiment13/MethodCallThoughputTimestampAnalysis13Test.java
index 05449afb..246a968a 100644
--- a/src/test/java/teetime/variant/methodcall/examples/experiment13/MethodCallThoughputTimestampAnalysis13Test.java
+++ b/src/test/java/teetime/variant/methodcall/examples/experiment13/MethodCallThoughputTimestampAnalysis13Test.java
@@ -15,14 +15,9 @@
  ***************************************************************************/
 package teetime.variant.methodcall.examples.experiment13;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.junit.Test;
 
 import teetime.util.ConstructorClosure;
-import teetime.util.StatisticsUtil;
-import teetime.util.StopWatch;
 import teetime.variant.explicitScheduling.examples.throughput.TimestampObject;
 import test.PerformanceTest;
 
@@ -37,12 +32,10 @@ public class MethodCallThoughputTimestampAnalysis13Test extends PerformanceTest
 	public void testWithManyObjects() {
 		System.out.println("Testing teetime (mc) with NUM_OBJECTS_TO_CREATE=" + NUM_OBJECTS_TO_CREATE + ", NUM_NOOP_FILTERS="
 				+ NUM_NOOP_FILTERS + "...");
-		final StopWatch stopWatch = new StopWatch();
-		final List<TimestampObject> timestampObjects = new ArrayList<TimestampObject>(NUM_OBJECTS_TO_CREATE);
 
 		final MethodCallThroughputAnalysis13 analysis = new MethodCallThroughputAnalysis13();
 		analysis.setNumNoopFilters(NUM_NOOP_FILTERS);
-		analysis.setTimestampObjects(timestampObjects);
+		analysis.setTimestampObjects(this.timestampObjects);
 		analysis.setInput(NUM_OBJECTS_TO_CREATE, new ConstructorClosure<TimestampObject>() {
 			@Override
 			public TimestampObject create() {
@@ -51,14 +44,12 @@ public class MethodCallThoughputTimestampAnalysis13Test extends PerformanceTest
 		});
 		analysis.init();
 
-		stopWatch.start();
+		this.stopWatch.start();
 		try {
 			analysis.start();
 		} finally {
-			stopWatch.end();
+			this.stopWatch.end();
 		}
-
-		StatisticsUtil.printStatistics(stopWatch.getDurationInNs(), timestampObjects);
 	}
 
 }
diff --git a/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment09/MethodCallThoughputTimestampAnalysis9Test.java b/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment09/MethodCallThoughputTimestampAnalysis9Test.java
index 431e5896..ba57740c 100644
--- a/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment09/MethodCallThoughputTimestampAnalysis9Test.java
+++ b/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment09/MethodCallThoughputTimestampAnalysis9Test.java
@@ -15,14 +15,9 @@
  ***************************************************************************/
 package teetime.variant.methodcallWithPorts.examples.experiment09;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.junit.Test;
 
 import teetime.util.ConstructorClosure;
-import teetime.util.StatisticsUtil;
-import teetime.util.StopWatch;
 import teetime.variant.explicitScheduling.examples.throughput.TimestampObject;
 import test.PerformanceTest;
 
@@ -37,12 +32,10 @@ public class MethodCallThoughputTimestampAnalysis9Test extends PerformanceTest {
 	public void testWithManyObjects() {
 		System.out.println("Testing teetime (mc) with NUM_OBJECTS_TO_CREATE=" + NUM_OBJECTS_TO_CREATE + ", NUM_NOOP_FILTERS="
 				+ NUM_NOOP_FILTERS + "...");
-		final StopWatch stopWatch = new StopWatch();
-		final List<TimestampObject> timestampObjects = new ArrayList<TimestampObject>(NUM_OBJECTS_TO_CREATE);
 
 		final MethodCallThroughputAnalysis9 analysis = new MethodCallThroughputAnalysis9();
 		analysis.setNumNoopFilters(NUM_NOOP_FILTERS);
-		analysis.setTimestampObjects(timestampObjects);
+		analysis.setTimestampObjects(this.timestampObjects);
 		analysis.setInput(NUM_OBJECTS_TO_CREATE, new ConstructorClosure<TimestampObject>() {
 			@Override
 			public TimestampObject create() {
@@ -51,14 +44,12 @@ public class MethodCallThoughputTimestampAnalysis9Test extends PerformanceTest {
 		});
 		analysis.init();
 
-		stopWatch.start();
+		this.stopWatch.start();
 		try {
 			analysis.start();
 		} finally {
-			stopWatch.end();
+			this.stopWatch.end();
 		}
-
-		StatisticsUtil.printStatistics(stopWatch.getDurationInNs(), timestampObjects);
 	}
 
 }
diff --git a/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment10/MethodCallThoughputTimestampAnalysis10Test.java b/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment10/MethodCallThoughputTimestampAnalysis10Test.java
index d7a804aa..0024fa18 100644
--- a/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment10/MethodCallThoughputTimestampAnalysis10Test.java
+++ b/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment10/MethodCallThoughputTimestampAnalysis10Test.java
@@ -15,14 +15,9 @@
  ***************************************************************************/
 package teetime.variant.methodcallWithPorts.examples.experiment10;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.junit.Test;
 
 import teetime.util.ConstructorClosure;
-import teetime.util.StatisticsUtil;
-import teetime.util.StopWatch;
 import teetime.variant.explicitScheduling.examples.throughput.TimestampObject;
 import test.PerformanceTest;
 
@@ -37,12 +32,10 @@ public class MethodCallThoughputTimestampAnalysis10Test extends PerformanceTest
 	public void testWithManyObjects() {
 		System.out.println("Testing teetime (mc) with NUM_OBJECTS_TO_CREATE=" + NUM_OBJECTS_TO_CREATE + ", NUM_NOOP_FILTERS="
 				+ NUM_NOOP_FILTERS + "...");
-		final StopWatch stopWatch = new StopWatch();
-		final List<TimestampObject> timestampObjects = new ArrayList<TimestampObject>(NUM_OBJECTS_TO_CREATE);
 
 		final MethodCallThroughputAnalysis10 analysis = new MethodCallThroughputAnalysis10();
 		analysis.setNumNoopFilters(NUM_NOOP_FILTERS);
-		analysis.setTimestampObjects(timestampObjects);
+		analysis.setTimestampObjects(this.timestampObjects);
 		analysis.setInput(NUM_OBJECTS_TO_CREATE, new ConstructorClosure<TimestampObject>() {
 			@Override
 			public TimestampObject create() {
@@ -51,14 +44,12 @@ public class MethodCallThoughputTimestampAnalysis10Test extends PerformanceTest
 		});
 		analysis.init();
 
-		stopWatch.start();
+		this.stopWatch.start();
 		try {
 			analysis.start();
 		} finally {
-			stopWatch.end();
+			this.stopWatch.end();
 		}
-
-		StatisticsUtil.printStatistics(stopWatch.getDurationInNs(), timestampObjects);
 	}
 
 }
diff --git a/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment11/MethodCallThoughputTimestampAnalysis11Test.java b/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment11/MethodCallThoughputTimestampAnalysis11Test.java
index 4cd04b30..c9dc1645 100644
--- a/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment11/MethodCallThoughputTimestampAnalysis11Test.java
+++ b/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment11/MethodCallThoughputTimestampAnalysis11Test.java
@@ -15,14 +15,9 @@
  ***************************************************************************/
 package teetime.variant.methodcallWithPorts.examples.experiment11;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.junit.Test;
 
 import teetime.util.ConstructorClosure;
-import teetime.util.StatisticsUtil;
-import teetime.util.StopWatch;
 import teetime.variant.explicitScheduling.examples.throughput.TimestampObject;
 import test.PerformanceTest;
 
@@ -37,12 +32,10 @@ public class MethodCallThoughputTimestampAnalysis11Test extends PerformanceTest
 	public void testWithManyObjects() {
 		System.out.println("Testing teetime (mc) with NUM_OBJECTS_TO_CREATE=" + NUM_OBJECTS_TO_CREATE + ", NUM_NOOP_FILTERS="
 				+ NUM_NOOP_FILTERS + "...");
-		final StopWatch stopWatch = new StopWatch();
-		final List<TimestampObject> timestampObjects = new ArrayList<TimestampObject>(NUM_OBJECTS_TO_CREATE);
 
 		final MethodCallThroughputAnalysis11 analysis = new MethodCallThroughputAnalysis11();
 		analysis.setNumNoopFilters(NUM_NOOP_FILTERS);
-		analysis.setTimestampObjects(timestampObjects);
+		analysis.setTimestampObjects(this.timestampObjects);
 		analysis.setInput(NUM_OBJECTS_TO_CREATE, new ConstructorClosure<TimestampObject>() {
 			@Override
 			public TimestampObject create() {
@@ -51,14 +44,12 @@ public class MethodCallThoughputTimestampAnalysis11Test extends PerformanceTest
 		});
 		analysis.init();
 
-		stopWatch.start();
+		this.stopWatch.start();
 		try {
 			analysis.start();
 		} finally {
-			stopWatch.end();
+			this.stopWatch.end();
 		}
-
-		StatisticsUtil.printStatistics(stopWatch.getDurationInNs(), timestampObjects);
 	}
 
 }
diff --git a/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment14/MethodCallThoughputTimestampAnalysis14Test.java b/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment14/MethodCallThoughputTimestampAnalysis14Test.java
index 18a9e2a3..6a49130a 100644
--- a/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment14/MethodCallThoughputTimestampAnalysis14Test.java
+++ b/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment14/MethodCallThoughputTimestampAnalysis14Test.java
@@ -15,14 +15,9 @@
  ***************************************************************************/
 package teetime.variant.methodcallWithPorts.examples.experiment14;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.junit.Test;
 
 import teetime.util.ConstructorClosure;
-import teetime.util.StatisticsUtil;
-import teetime.util.StopWatch;
 import teetime.variant.explicitScheduling.examples.throughput.TimestampObject;
 import test.PerformanceTest;
 
@@ -37,12 +32,10 @@ public class MethodCallThoughputTimestampAnalysis14Test extends PerformanceTest
 	public void testWithManyObjects() {
 		System.out.println("Testing teetime (mc) with NUM_OBJECTS_TO_CREATE=" + NUM_OBJECTS_TO_CREATE + ", NUM_NOOP_FILTERS="
 				+ NUM_NOOP_FILTERS + "...");
-		final StopWatch stopWatch = new StopWatch();
-		final List<TimestampObject> timestampObjects = new ArrayList<TimestampObject>(NUM_OBJECTS_TO_CREATE);
 
 		final MethodCallThroughputAnalysis14 analysis = new MethodCallThroughputAnalysis14();
 		analysis.setNumNoopFilters(NUM_NOOP_FILTERS);
-		analysis.setTimestampObjects(timestampObjects);
+		analysis.setTimestampObjects(this.timestampObjects);
 		analysis.setInput(NUM_OBJECTS_TO_CREATE, new ConstructorClosure<TimestampObject>() {
 			@Override
 			public TimestampObject create() {
@@ -51,14 +44,12 @@ public class MethodCallThoughputTimestampAnalysis14Test extends PerformanceTest
 		});
 		analysis.init();
 
-		stopWatch.start();
+		this.stopWatch.start();
 		try {
 			analysis.start();
 		} finally {
-			stopWatch.end();
+			this.stopWatch.end();
 		}
-
-		StatisticsUtil.printStatistics(stopWatch.getDurationInNs(), timestampObjects);
 	}
 
 }
diff --git a/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment15/MethodCallThoughputTimestampAnalysis15Test.java b/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment15/MethodCallThoughputTimestampAnalysis15Test.java
index 0d0149f1..d6a5f586 100644
--- a/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment15/MethodCallThoughputTimestampAnalysis15Test.java
+++ b/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment15/MethodCallThoughputTimestampAnalysis15Test.java
@@ -15,14 +15,9 @@
  ***************************************************************************/
 package teetime.variant.methodcallWithPorts.examples.experiment15;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.junit.Test;
 
 import teetime.util.ConstructorClosure;
-import teetime.util.StatisticsUtil;
-import teetime.util.StopWatch;
 import teetime.variant.explicitScheduling.examples.throughput.TimestampObject;
 import test.PerformanceTest;
 
@@ -37,12 +32,10 @@ public class MethodCallThoughputTimestampAnalysis15Test extends PerformanceTest
 	public void testWithManyObjects() {
 		System.out.println("Testing teetime (mc) with NUM_OBJECTS_TO_CREATE=" + NUM_OBJECTS_TO_CREATE + ", NUM_NOOP_FILTERS="
 				+ NUM_NOOP_FILTERS + "...");
-		final StopWatch stopWatch = new StopWatch();
-		final List<TimestampObject> timestampObjects = new ArrayList<TimestampObject>(NUM_OBJECTS_TO_CREATE);
 
 		final MethodCallThroughputAnalysis15 analysis = new MethodCallThroughputAnalysis15();
 		analysis.setNumNoopFilters(NUM_NOOP_FILTERS);
-		analysis.setTimestampObjects(timestampObjects);
+		analysis.setTimestampObjects(this.timestampObjects);
 		analysis.setInput(NUM_OBJECTS_TO_CREATE, new ConstructorClosure<TimestampObject>() {
 			@Override
 			public TimestampObject create() {
@@ -51,14 +44,12 @@ public class MethodCallThoughputTimestampAnalysis15Test extends PerformanceTest
 		});
 		analysis.init();
 
-		stopWatch.start();
+		this.stopWatch.start();
 		try {
 			analysis.start();
 		} finally {
-			stopWatch.end();
+			this.stopWatch.end();
 		}
-
-		StatisticsUtil.printStatistics(stopWatch.getDurationInNs(), timestampObjects);
 	}
 
 }
diff --git a/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment16/MethodCallThoughputTimestampAnalysis16Test.java b/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment16/MethodCallThoughputTimestampAnalysis16Test.java
index 24938afa..da53b658 100644
--- a/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment16/MethodCallThoughputTimestampAnalysis16Test.java
+++ b/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment16/MethodCallThoughputTimestampAnalysis16Test.java
@@ -22,7 +22,6 @@ import org.junit.Test;
 import teetime.util.ConstructorClosure;
 import teetime.util.ListUtil;
 import teetime.util.StatisticsUtil;
-import teetime.util.StopWatch;
 import teetime.variant.explicitScheduling.examples.throughput.TimestampObject;
 import test.PerformanceTest;
 
@@ -44,7 +43,6 @@ public class MethodCallThoughputTimestampAnalysis16Test extends PerformanceTest
 	private long performAnalysis(final int numThreads, final long durationWith1Thread) {
 		System.out.println("Testing teetime (mc) with NUM_OBJECTS_TO_CREATE=" + NUM_OBJECTS_TO_CREATE + ", NUM_NOOP_FILTERS="
 				+ NUM_NOOP_FILTERS + "...");
-		final StopWatch stopWatch = new StopWatch();
 
 		final MethodCallThroughputAnalysis16 analysis = new MethodCallThroughputAnalysis16();
 		analysis.setNumWorkerThreads(numThreads);
@@ -57,23 +55,25 @@ public class MethodCallThoughputTimestampAnalysis16Test extends PerformanceTest
 		});
 		analysis.init();
 
-		stopWatch.start();
+		this.stopWatch.start();
 		try {
 			analysis.start();
 		} finally {
-			stopWatch.end();
+			this.stopWatch.end();
 			analysis.onTerminate();
 		}
 
+		// TODO refactor test
+
 		List<TimestampObject> timestampObjects = ListUtil.merge(analysis.getTimestampObjectsList());
-		StatisticsUtil.printStatistics(stopWatch.getDurationInNs(), timestampObjects);
+		StatisticsUtil.printStatistics(this.stopWatch.getDurationInNs(), timestampObjects);
 
 		if (durationWith1Thread != -1) {
-			double speedup = (double) durationWith1Thread / stopWatch.getDurationInNs();
+			double speedup = (double) durationWith1Thread / this.stopWatch.getDurationInNs();
 			System.out.println("Speedup (from 1 to " + numThreads + " threads): " + String.format("%.2f", speedup));
 		}
 
-		return stopWatch.getDurationInNs();
+		return this.stopWatch.getDurationInNs();
 	}
 
 	public static void main(final String[] args) {
diff --git a/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment17/MethodCallThoughputTimestampAnalysis17Test.java b/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment17/MethodCallThoughputTimestampAnalysis17Test.java
index 315b3b57..a861ed38 100644
--- a/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment17/MethodCallThoughputTimestampAnalysis17Test.java
+++ b/src/test/java/teetime/variant/methodcallWithPorts/examples/experiment17/MethodCallThoughputTimestampAnalysis17Test.java
@@ -22,7 +22,6 @@ import org.junit.Test;
 import teetime.util.ConstructorClosure;
 import teetime.util.ListUtil;
 import teetime.util.StatisticsUtil;
-import teetime.util.StopWatch;
 import teetime.variant.explicitScheduling.examples.throughput.TimestampObject;
 import test.PerformanceTest;
 
@@ -37,7 +36,6 @@ public class MethodCallThoughputTimestampAnalysis17Test extends PerformanceTest
 	public void testWithManyObjects() {
 		System.out.println("Testing teetime (mc) with NUM_OBJECTS_TO_CREATE=" + NUM_OBJECTS_TO_CREATE + ", NUM_NOOP_FILTERS="
 				+ NUM_NOOP_FILTERS + "...");
-		final StopWatch stopWatch = new StopWatch();
 
 		// int count = 10;
 		// while (count-- > 0) {
@@ -52,16 +50,18 @@ public class MethodCallThoughputTimestampAnalysis17Test extends PerformanceTest
 		analysis.init();
 
 		System.out.println("starting");
-		stopWatch.start();
+		this.stopWatch.start();
 		try {
 			analysis.start();
 		} finally {
-			stopWatch.end();
+			this.stopWatch.end();
 			analysis.onTerminate();
 		}
 
+		// TODO refactor test
+
 		List<TimestampObject> timestampObjects = ListUtil.merge(analysis.getTimestampObjectsList());
-		StatisticsUtil.printStatistics(stopWatch.getDurationInNs(), timestampObjects);
+		StatisticsUtil.printStatistics(this.stopWatch.getDurationInNs(), timestampObjects);
 		// }
 	}
 }
diff --git a/src/test/java/test/PerformanceTest.java b/src/test/java/test/PerformanceTest.java
index c8431028..910053b0 100644
--- a/src/test/java/test/PerformanceTest.java
+++ b/src/test/java/test/PerformanceTest.java
@@ -1,6 +1,18 @@
 package test;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.After;
 import org.junit.Before;
+import org.junit.Rule;
+import org.junit.rules.TestRule;
+import org.junit.rules.TestWatcher;
+import org.junit.runner.Description;
+
+import teetime.util.StatisticsUtil;
+import teetime.util.StopWatch;
+import teetime.variant.explicitScheduling.examples.throughput.TimestampObject;
 
 import kieker.common.logging.LogFactory;
 
@@ -9,8 +21,32 @@ public abstract class PerformanceTest {
 	protected static final int NUM_OBJECTS_TO_CREATE = 100000;
 	protected static final int NUM_NOOP_FILTERS = 800;
 
+	private static MeasurementRepository measurementRepository = new MeasurementRepository();
+
+	private Description description;
+
+	protected StopWatch stopWatch;
+	protected List<TimestampObject> timestampObjects;
+
+	@Rule
+	public final TestRule watcher = new TestWatcher() {
+		@Override
+		protected void starting(final Description description) {
+			PerformanceTest.this.description = description;
+			// System.out.println("getDisplayName(): " + description.getDisplayName());
+		}
+	};
+
 	@Before
 	public void before() {
 		System.setProperty(LogFactory.CUSTOM_LOGGER_JVM, "NONE");
+		this.stopWatch = new StopWatch();
+		this.timestampObjects = new ArrayList<TimestampObject>(NUM_OBJECTS_TO_CREATE);
+	}
+
+	@After
+	public void after() {
+		PerformanceResult performanceResult = StatisticsUtil.printStatistics(this.stopWatch.getDurationInNs(), this.timestampObjects);
+		measurementRepository.performanceResults.put(this.description.getDisplayName(), performanceResult);
 	}
 }
diff --git a/variants.xlsx b/variants.xlsx
new file mode 100644
index 0000000000000000000000000000000000000000..2407d072a795b93f981e2ec67d2e0e02308b6107
GIT binary patch
literal 9824
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

literal 0
HcmV?d00001

-- 
GitLab