From af09b76d424d3bec26ac9048c2828136ab803bb6 Mon Sep 17 00:00:00 2001
From: Christian Wulf <chw@informatik.uni-kiel.de>
Date: Wed, 15 Oct 2014 07:46:58 +0200
Subject: [PATCH] refactored performance profiles

---
 src/main/java/util/BucketTimingsReader.java   |  2 ++
 .../java/util/PerformanceCheckProfile.java    |  9 ---------
 .../{ => test}/MeasurementRepository.java     |  2 +-
 .../PerformanceCheckProfileRepository.java    |  8 ++++----
 .../util/{ => test}/PerformanceResult.java    |  2 +-
 .../java/util/{ => test}/PerformanceTest.java |  2 +-
 .../test/ProfiledPerformanceAssertion.java    | 12 +++++++++++
 .../java/util/{ => test}/StatisticsUtil.java  |  2 +-
 .../ThroughputTimestampAnalysisTest.java      |  4 ++--
 .../ChwHomeComparisonMethodcallWithPorts.java |  8 ++++----
 .../ChwWorkComparisonMethodcallWithPorts.java |  8 ++++----
 .../ComparisonMethodcallWithPorts.java        |  6 +++---
 .../NieWorkComparisonMethodcallWithPorts.java |  8 ++++----
 .../experiment01/ChwHomePerformanceCheck.java |  8 ++++----
 .../experiment01/ChwWorkPerformanceCheck.java |  8 ++++----
 ...odCallThoughputTimestampAnalysis1Test.java |  8 ++++----
 ...odCallThoughputTimestampAnalysis9Test.java |  2 +-
 .../experiment10/ChwHomePerformanceCheck.java |  8 ++++----
 .../experiment10/ChwWorkPerformanceCheck.java |  8 ++++----
 ...dCallThoughputTimestampAnalysis10Test.java |  6 +++---
 .../experiment11/ChwHomePerformanceCheck.java |  8 ++++----
 .../experiment11/ChwWorkPerformanceCheck.java |  8 ++++----
 ...dCallThoughputTimestampAnalysis11Test.java |  6 +++---
 .../experiment14/ChwHomePerformanceCheck.java |  8 ++++----
 .../experiment14/ChwWorkPerformanceCheck.java | 13 ++++++------
 ...dCallThoughputTimestampAnalysis14Test.java |  6 +++---
 ...dCallThoughputTimestampAnalysis15Test.java |  2 +-
 .../experiment16/ChwHomePerformanceCheck.java |  8 ++++----
 .../experiment16/ChwWorkPerformanceCheck.java |  8 ++++----
 ...dCallThoughputTimestampAnalysis16Test.java | 20 +++++++++----------
 ...dCallThoughputTimestampAnalysis17Test.java |  2 +-
 ...dCallThoughputTimestampAnalysis19Test.java |  2 +-
 .../ChwHomeTcpTraceReadingTest.java           |  2 +-
 ...omeTcpTraceReconstructionAnalysisTest.java |  2 +-
 ...hwHomeTraceReconstructionAnalysisTest.java |  2 +-
 ...orkTcpTraceReconstructionAnalysisTest.java |  2 +-
 ...hwWorkTraceReconstructionAnalysisTest.java |  2 +-
 ...KiekerTraceReconstructionAnalysisTest.java |  2 +-
 ...ReconstructionAnalysisWithThreadsTest.java |  2 +-
 ...ReconstructionAnalysisWithThreadsTest.java |  2 +-
 ...TraceReductionAnalysisWithThreadsTest.java |  2 +-
 .../java/teetime/util/StopWatchTest.java      |  2 +-
 42 files changed, 119 insertions(+), 113 deletions(-)
 delete mode 100644 src/main/java/util/PerformanceCheckProfile.java
 rename src/main/java/util/{ => test}/MeasurementRepository.java (91%)
 rename src/main/java/util/{ => test}/PerformanceCheckProfileRepository.java (75%)
 rename src/main/java/util/{ => test}/PerformanceResult.java (97%)
 rename src/main/java/util/{ => test}/PerformanceTest.java (99%)
 create mode 100644 src/main/java/util/test/ProfiledPerformanceAssertion.java
 rename src/main/java/util/{ => test}/StatisticsUtil.java (99%)

diff --git a/src/main/java/util/BucketTimingsReader.java b/src/main/java/util/BucketTimingsReader.java
index a857bd36..911c997b 100644
--- a/src/main/java/util/BucketTimingsReader.java
+++ b/src/main/java/util/BucketTimingsReader.java
@@ -11,6 +11,8 @@ import java.util.Map;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import util.test.StatisticsUtil;
+
 import com.google.common.base.Charsets;
 import com.google.common.io.CharSource;
 import com.google.common.io.Files;
diff --git a/src/main/java/util/PerformanceCheckProfile.java b/src/main/java/util/PerformanceCheckProfile.java
deleted file mode 100644
index 4fd71556..00000000
--- a/src/main/java/util/PerformanceCheckProfile.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package util;
-
-public interface PerformanceCheckProfile {
-
-	String getCorrespondingPerformanceProfile();
-
-	void check();
-
-}
diff --git a/src/main/java/util/MeasurementRepository.java b/src/main/java/util/test/MeasurementRepository.java
similarity index 91%
rename from src/main/java/util/MeasurementRepository.java
rename to src/main/java/util/test/MeasurementRepository.java
index c970174d..d510c785 100644
--- a/src/main/java/util/MeasurementRepository.java
+++ b/src/main/java/util/test/MeasurementRepository.java
@@ -1,4 +1,4 @@
-package util;
+package util.test;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/src/main/java/util/PerformanceCheckProfileRepository.java b/src/main/java/util/test/PerformanceCheckProfileRepository.java
similarity index 75%
rename from src/main/java/util/PerformanceCheckProfileRepository.java
rename to src/main/java/util/test/PerformanceCheckProfileRepository.java
index 066fdeb6..74b8ad37 100644
--- a/src/main/java/util/PerformanceCheckProfileRepository.java
+++ b/src/main/java/util/test/PerformanceCheckProfileRepository.java
@@ -1,4 +1,4 @@
-package util;
+package util.test;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -12,7 +12,7 @@ public class PerformanceCheckProfileRepository {
 
 	public static final PerformanceCheckProfileRepository INSTANCE = new PerformanceCheckProfileRepository();
 
-	private final Map<Class<?>, PerformanceCheckProfile> performanceCheckProfiles = new HashMap<Class<?>, PerformanceCheckProfile>();
+	private final Map<Class<?>, ProfiledPerformanceAssertion> performanceCheckProfiles = new HashMap<Class<?>, ProfiledPerformanceAssertion>();
 
 	private String currentProfile;
 
@@ -29,13 +29,13 @@ public class PerformanceCheckProfileRepository {
 		return this.currentProfile;
 	}
 
-	public void register(final Class<?> testClass, final PerformanceCheckProfile profile) {
+	public void register(final Class<?> testClass, final ProfiledPerformanceAssertion profile) {
 		if (profile.getCorrespondingPerformanceProfile().equals(this.currentProfile)) {
 			this.performanceCheckProfiles.put(testClass, profile);
 		}
 	}
 
-	public PerformanceCheckProfile get(final Class<?> clazz) {
+	public ProfiledPerformanceAssertion get(final Class<?> clazz) {
 		return this.performanceCheckProfiles.get(clazz);
 	}
 }
diff --git a/src/main/java/util/PerformanceResult.java b/src/main/java/util/test/PerformanceResult.java
similarity index 97%
rename from src/main/java/util/PerformanceResult.java
rename to src/main/java/util/test/PerformanceResult.java
index 36c82832..22cf87e3 100644
--- a/src/main/java/util/PerformanceResult.java
+++ b/src/main/java/util/test/PerformanceResult.java
@@ -1,4 +1,4 @@
-package util;
+package util.test;
 
 import java.util.Map;
 
diff --git a/src/main/java/util/PerformanceTest.java b/src/main/java/util/test/PerformanceTest.java
similarity index 99%
rename from src/main/java/util/PerformanceTest.java
rename to src/main/java/util/test/PerformanceTest.java
index 24bf6966..d2f9e3ba 100644
--- a/src/main/java/util/PerformanceTest.java
+++ b/src/main/java/util/test/PerformanceTest.java
@@ -1,4 +1,4 @@
-package util;
+package util.test;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/src/main/java/util/test/ProfiledPerformanceAssertion.java b/src/main/java/util/test/ProfiledPerformanceAssertion.java
new file mode 100644
index 00000000..88f30035
--- /dev/null
+++ b/src/main/java/util/test/ProfiledPerformanceAssertion.java
@@ -0,0 +1,12 @@
+package util.test;
+
+public abstract class ProfiledPerformanceAssertion {
+
+	public abstract String getCorrespondingPerformanceProfile();
+
+	public abstract void check();
+
+	protected String buildTestMethodIdentifier(final Class<? extends PerformanceTest> testClass, final String methodName) {
+		return testClass.getName() + "(" + methodName + ")";
+	}
+}
diff --git a/src/main/java/util/StatisticsUtil.java b/src/main/java/util/test/StatisticsUtil.java
similarity index 99%
rename from src/main/java/util/StatisticsUtil.java
rename to src/main/java/util/test/StatisticsUtil.java
index 62d0d0e7..a0f091bc 100644
--- a/src/main/java/util/StatisticsUtil.java
+++ b/src/main/java/util/test/StatisticsUtil.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  ***************************************************************************/
-package util;
+package util.test;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/src/performancetest/java/kieker/analysis/examples/throughput/ThroughputTimestampAnalysisTest.java b/src/performancetest/java/kieker/analysis/examples/throughput/ThroughputTimestampAnalysisTest.java
index 95d173d6..2e92b7c4 100644
--- a/src/performancetest/java/kieker/analysis/examples/throughput/ThroughputTimestampAnalysisTest.java
+++ b/src/performancetest/java/kieker/analysis/examples/throughput/ThroughputTimestampAnalysisTest.java
@@ -23,8 +23,8 @@ import org.junit.Test;
 
 import teetime.util.StopWatch;
 import teetime.util.TimestampObject;
-import util.PerformanceTest;
-import util.StatisticsUtil;
+import util.test.PerformanceTest;
+import util.test.StatisticsUtil;
 
 import kieker.analysis.examples.ThroughputTimestampAnalysis;
 import kieker.analysis.exception.AnalysisConfigurationException;
diff --git a/src/performancetest/java/teetime/examples/ChwHomeComparisonMethodcallWithPorts.java b/src/performancetest/java/teetime/examples/ChwHomeComparisonMethodcallWithPorts.java
index 22d6c76d..52105427 100644
--- a/src/performancetest/java/teetime/examples/ChwHomeComparisonMethodcallWithPorts.java
+++ b/src/performancetest/java/teetime/examples/ChwHomeComparisonMethodcallWithPorts.java
@@ -5,11 +5,11 @@ import static org.junit.Assert.assertEquals;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import util.PerformanceCheckProfile;
-import util.PerformanceResult;
-import util.PerformanceTest;
+import util.test.PerformanceResult;
+import util.test.PerformanceTest;
+import util.test.ProfiledPerformanceAssertion;
 
-public class ChwHomeComparisonMethodcallWithPorts implements PerformanceCheckProfile {
+public class ChwHomeComparisonMethodcallWithPorts extends ProfiledPerformanceAssertion {
 
 	@Override
 	public String getCorrespondingPerformanceProfile() {
diff --git a/src/performancetest/java/teetime/examples/ChwWorkComparisonMethodcallWithPorts.java b/src/performancetest/java/teetime/examples/ChwWorkComparisonMethodcallWithPorts.java
index 4358d96e..38116b72 100644
--- a/src/performancetest/java/teetime/examples/ChwWorkComparisonMethodcallWithPorts.java
+++ b/src/performancetest/java/teetime/examples/ChwWorkComparisonMethodcallWithPorts.java
@@ -5,11 +5,11 @@ import static org.junit.Assert.assertEquals;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import util.PerformanceCheckProfile;
-import util.PerformanceResult;
-import util.PerformanceTest;
+import util.test.PerformanceResult;
+import util.test.PerformanceTest;
+import util.test.ProfiledPerformanceAssertion;
 
-public class ChwWorkComparisonMethodcallWithPorts implements PerformanceCheckProfile {
+public class ChwWorkComparisonMethodcallWithPorts extends ProfiledPerformanceAssertion {
 
 	@Override
 	public String getCorrespondingPerformanceProfile() {
diff --git a/src/performancetest/java/teetime/examples/ComparisonMethodcallWithPorts.java b/src/performancetest/java/teetime/examples/ComparisonMethodcallWithPorts.java
index 0d599135..26a91394 100644
--- a/src/performancetest/java/teetime/examples/ComparisonMethodcallWithPorts.java
+++ b/src/performancetest/java/teetime/examples/ComparisonMethodcallWithPorts.java
@@ -15,8 +15,8 @@ import teetime.examples.experiment15.MethodCallThoughputTimestampAnalysis15Test;
 import teetime.examples.experiment16.MethodCallThoughputTimestampAnalysis16Test;
 import teetime.examples.experiment17.MethodCallThoughputTimestampAnalysis17Test;
 import teetime.examples.experiment19.MethodCallThoughputTimestampAnalysis19Test;
-import util.PerformanceCheckProfile;
-import util.PerformanceCheckProfileRepository;
+import util.test.PerformanceCheckProfileRepository;
+import util.test.ProfiledPerformanceAssertion;
 
 @RunWith(Suite.class)
 @SuiteClasses({
@@ -42,7 +42,7 @@ public class ComparisonMethodcallWithPorts {
 
 	@AfterClass
 	public static void compareResults() {
-		PerformanceCheckProfile pcp = PerformanceCheckProfileRepository.INSTANCE.get(ComparisonMethodcallWithPorts.class);
+		ProfiledPerformanceAssertion pcp = PerformanceCheckProfileRepository.INSTANCE.get(ComparisonMethodcallWithPorts.class);
 		pcp.check();
 	}
 
diff --git a/src/performancetest/java/teetime/examples/NieWorkComparisonMethodcallWithPorts.java b/src/performancetest/java/teetime/examples/NieWorkComparisonMethodcallWithPorts.java
index bb3c2f6c..ea8e30a4 100644
--- a/src/performancetest/java/teetime/examples/NieWorkComparisonMethodcallWithPorts.java
+++ b/src/performancetest/java/teetime/examples/NieWorkComparisonMethodcallWithPorts.java
@@ -5,11 +5,11 @@ import static org.junit.Assert.assertEquals;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import util.PerformanceCheckProfile;
-import util.PerformanceResult;
-import util.PerformanceTest;
+import util.test.PerformanceResult;
+import util.test.PerformanceTest;
+import util.test.ProfiledPerformanceAssertion;
 
-public class NieWorkComparisonMethodcallWithPorts implements PerformanceCheckProfile {
+public class NieWorkComparisonMethodcallWithPorts extends ProfiledPerformanceAssertion {
 
 	@Override
 	public String getCorrespondingPerformanceProfile() {
diff --git a/src/performancetest/java/teetime/examples/experiment01/ChwHomePerformanceCheck.java b/src/performancetest/java/teetime/examples/experiment01/ChwHomePerformanceCheck.java
index 525abdb8..9c9321d3 100644
--- a/src/performancetest/java/teetime/examples/experiment01/ChwHomePerformanceCheck.java
+++ b/src/performancetest/java/teetime/examples/experiment01/ChwHomePerformanceCheck.java
@@ -1,11 +1,11 @@
 package teetime.examples.experiment01;
 
 import static org.junit.Assert.assertEquals;
-import util.PerformanceCheckProfile;
-import util.PerformanceResult;
-import util.PerformanceTest;
+import util.test.PerformanceResult;
+import util.test.PerformanceTest;
+import util.test.ProfiledPerformanceAssertion;
 
-public class ChwHomePerformanceCheck implements PerformanceCheckProfile {
+public class ChwHomePerformanceCheck extends ProfiledPerformanceAssertion {
 
 	@Override
 	public String getCorrespondingPerformanceProfile() {
diff --git a/src/performancetest/java/teetime/examples/experiment01/ChwWorkPerformanceCheck.java b/src/performancetest/java/teetime/examples/experiment01/ChwWorkPerformanceCheck.java
index 32290330..0f7c9f19 100644
--- a/src/performancetest/java/teetime/examples/experiment01/ChwWorkPerformanceCheck.java
+++ b/src/performancetest/java/teetime/examples/experiment01/ChwWorkPerformanceCheck.java
@@ -1,11 +1,11 @@
 package teetime.examples.experiment01;
 
 import static org.junit.Assert.assertEquals;
-import util.PerformanceCheckProfile;
-import util.PerformanceResult;
-import util.PerformanceTest;
+import util.test.PerformanceResult;
+import util.test.PerformanceTest;
+import util.test.ProfiledPerformanceAssertion;
 
-public class ChwWorkPerformanceCheck implements PerformanceCheckProfile {
+public class ChwWorkPerformanceCheck extends ProfiledPerformanceAssertion {
 
 	@Override
 	public String getCorrespondingPerformanceProfile() {
diff --git a/src/performancetest/java/teetime/examples/experiment01/MethodCallThoughputTimestampAnalysis1Test.java b/src/performancetest/java/teetime/examples/experiment01/MethodCallThoughputTimestampAnalysis1Test.java
index e5385b35..6577d3a3 100644
--- a/src/performancetest/java/teetime/examples/experiment01/MethodCallThoughputTimestampAnalysis1Test.java
+++ b/src/performancetest/java/teetime/examples/experiment01/MethodCallThoughputTimestampAnalysis1Test.java
@@ -21,9 +21,9 @@ import org.junit.Test;
 
 import teetime.util.ConstructorClosure;
 import teetime.util.TimestampObject;
-import util.PerformanceCheckProfile;
-import util.PerformanceCheckProfileRepository;
-import util.PerformanceTest;
+import util.test.PerformanceCheckProfileRepository;
+import util.test.PerformanceTest;
+import util.test.ProfiledPerformanceAssertion;
 
 /**
  * @author Christian Wulf
@@ -40,7 +40,7 @@ public class MethodCallThoughputTimestampAnalysis1Test extends PerformanceTest {
 
 	@AfterClass
 	public static void afterClass() {
-		PerformanceCheckProfile performanceCheckProfile = PerformanceCheckProfileRepository.INSTANCE.get(MethodCallThoughputTimestampAnalysis1Test.class);
+		ProfiledPerformanceAssertion performanceCheckProfile = PerformanceCheckProfileRepository.INSTANCE.get(MethodCallThoughputTimestampAnalysis1Test.class);
 		performanceCheckProfile.check();
 	};
 
diff --git a/src/performancetest/java/teetime/examples/experiment09/MethodCallThoughputTimestampAnalysis9Test.java b/src/performancetest/java/teetime/examples/experiment09/MethodCallThoughputTimestampAnalysis9Test.java
index bd5d52fa..489f6e4a 100644
--- a/src/performancetest/java/teetime/examples/experiment09/MethodCallThoughputTimestampAnalysis9Test.java
+++ b/src/performancetest/java/teetime/examples/experiment09/MethodCallThoughputTimestampAnalysis9Test.java
@@ -19,7 +19,7 @@ import org.junit.Test;
 
 import teetime.util.ConstructorClosure;
 import teetime.util.TimestampObject;
-import util.PerformanceTest;
+import util.test.PerformanceTest;
 
 /**
  * @author Christian Wulf
diff --git a/src/performancetest/java/teetime/examples/experiment10/ChwHomePerformanceCheck.java b/src/performancetest/java/teetime/examples/experiment10/ChwHomePerformanceCheck.java
index 50b74858..20fffa4c 100644
--- a/src/performancetest/java/teetime/examples/experiment10/ChwHomePerformanceCheck.java
+++ b/src/performancetest/java/teetime/examples/experiment10/ChwHomePerformanceCheck.java
@@ -1,11 +1,11 @@
 package teetime.examples.experiment10;
 
 import static org.junit.Assert.assertEquals;
-import util.PerformanceCheckProfile;
-import util.PerformanceResult;
-import util.PerformanceTest;
+import util.test.PerformanceResult;
+import util.test.PerformanceTest;
+import util.test.ProfiledPerformanceAssertion;
 
-public class ChwHomePerformanceCheck implements PerformanceCheckProfile {
+public class ChwHomePerformanceCheck extends ProfiledPerformanceAssertion {
 
 	@Override
 	public String getCorrespondingPerformanceProfile() {
diff --git a/src/performancetest/java/teetime/examples/experiment10/ChwWorkPerformanceCheck.java b/src/performancetest/java/teetime/examples/experiment10/ChwWorkPerformanceCheck.java
index 27a03972..70d99968 100644
--- a/src/performancetest/java/teetime/examples/experiment10/ChwWorkPerformanceCheck.java
+++ b/src/performancetest/java/teetime/examples/experiment10/ChwWorkPerformanceCheck.java
@@ -1,11 +1,11 @@
 package teetime.examples.experiment10;
 
 import static org.junit.Assert.assertEquals;
-import util.PerformanceCheckProfile;
-import util.PerformanceResult;
-import util.PerformanceTest;
+import util.test.PerformanceResult;
+import util.test.PerformanceTest;
+import util.test.ProfiledPerformanceAssertion;
 
-public class ChwWorkPerformanceCheck implements PerformanceCheckProfile {
+public class ChwWorkPerformanceCheck extends ProfiledPerformanceAssertion {
 
 	@Override
 	public String getCorrespondingPerformanceProfile() {
diff --git a/src/performancetest/java/teetime/examples/experiment10/MethodCallThoughputTimestampAnalysis10Test.java b/src/performancetest/java/teetime/examples/experiment10/MethodCallThoughputTimestampAnalysis10Test.java
index eea715af..f73409d3 100644
--- a/src/performancetest/java/teetime/examples/experiment10/MethodCallThoughputTimestampAnalysis10Test.java
+++ b/src/performancetest/java/teetime/examples/experiment10/MethodCallThoughputTimestampAnalysis10Test.java
@@ -21,8 +21,8 @@ import org.junit.Test;
 
 import teetime.util.ConstructorClosure;
 import teetime.util.TimestampObject;
-import util.PerformanceCheckProfile;
-import util.PerformanceTest;
+import util.test.PerformanceTest;
+import util.test.ProfiledPerformanceAssertion;
 
 /**
  * @author Christian Wulf
@@ -39,7 +39,7 @@ public class MethodCallThoughputTimestampAnalysis10Test extends PerformanceTest
 
 	@AfterClass
 	public static void afterClass() {
-		PerformanceCheckProfile performanceCheckProfile = PERFORMANCE_CHECK_PROFILE_REPOSITORY.get(MethodCallThoughputTimestampAnalysis10Test.class);
+		ProfiledPerformanceAssertion performanceCheckProfile = PERFORMANCE_CHECK_PROFILE_REPOSITORY.get(MethodCallThoughputTimestampAnalysis10Test.class);
 		performanceCheckProfile.check();
 	};
 
diff --git a/src/performancetest/java/teetime/examples/experiment11/ChwHomePerformanceCheck.java b/src/performancetest/java/teetime/examples/experiment11/ChwHomePerformanceCheck.java
index 29a1bc8a..6b5d256d 100644
--- a/src/performancetest/java/teetime/examples/experiment11/ChwHomePerformanceCheck.java
+++ b/src/performancetest/java/teetime/examples/experiment11/ChwHomePerformanceCheck.java
@@ -1,11 +1,11 @@
 package teetime.examples.experiment11;
 
 import static org.junit.Assert.assertEquals;
-import util.PerformanceCheckProfile;
-import util.PerformanceResult;
-import util.PerformanceTest;
+import util.test.PerformanceResult;
+import util.test.PerformanceTest;
+import util.test.ProfiledPerformanceAssertion;
 
-public class ChwHomePerformanceCheck implements PerformanceCheckProfile {
+public class ChwHomePerformanceCheck extends ProfiledPerformanceAssertion {
 
 	@Override
 	public String getCorrespondingPerformanceProfile() {
diff --git a/src/performancetest/java/teetime/examples/experiment11/ChwWorkPerformanceCheck.java b/src/performancetest/java/teetime/examples/experiment11/ChwWorkPerformanceCheck.java
index 175c1402..65049146 100644
--- a/src/performancetest/java/teetime/examples/experiment11/ChwWorkPerformanceCheck.java
+++ b/src/performancetest/java/teetime/examples/experiment11/ChwWorkPerformanceCheck.java
@@ -1,11 +1,11 @@
 package teetime.examples.experiment11;
 
 import static org.junit.Assert.assertEquals;
-import util.PerformanceCheckProfile;
-import util.PerformanceResult;
-import util.PerformanceTest;
+import util.test.PerformanceResult;
+import util.test.PerformanceTest;
+import util.test.ProfiledPerformanceAssertion;
 
-public class ChwWorkPerformanceCheck implements PerformanceCheckProfile {
+public class ChwWorkPerformanceCheck extends ProfiledPerformanceAssertion {
 
 	@Override
 	public String getCorrespondingPerformanceProfile() {
diff --git a/src/performancetest/java/teetime/examples/experiment11/MethodCallThoughputTimestampAnalysis11Test.java b/src/performancetest/java/teetime/examples/experiment11/MethodCallThoughputTimestampAnalysis11Test.java
index 915a906f..80e22ff0 100644
--- a/src/performancetest/java/teetime/examples/experiment11/MethodCallThoughputTimestampAnalysis11Test.java
+++ b/src/performancetest/java/teetime/examples/experiment11/MethodCallThoughputTimestampAnalysis11Test.java
@@ -21,8 +21,8 @@ import org.junit.Test;
 
 import teetime.util.ConstructorClosure;
 import teetime.util.TimestampObject;
-import util.PerformanceCheckProfile;
-import util.PerformanceTest;
+import util.test.PerformanceTest;
+import util.test.ProfiledPerformanceAssertion;
 
 /**
  * @author Christian Wulf
@@ -39,7 +39,7 @@ public class MethodCallThoughputTimestampAnalysis11Test extends PerformanceTest
 
 	@AfterClass
 	public static void afterClass() {
-		PerformanceCheckProfile performanceCheckProfile = PERFORMANCE_CHECK_PROFILE_REPOSITORY.get(MethodCallThoughputTimestampAnalysis11Test.class);
+		ProfiledPerformanceAssertion performanceCheckProfile = PERFORMANCE_CHECK_PROFILE_REPOSITORY.get(MethodCallThoughputTimestampAnalysis11Test.class);
 		performanceCheckProfile.check();
 	};
 
diff --git a/src/performancetest/java/teetime/examples/experiment14/ChwHomePerformanceCheck.java b/src/performancetest/java/teetime/examples/experiment14/ChwHomePerformanceCheck.java
index 562e6e4f..13ea4e87 100644
--- a/src/performancetest/java/teetime/examples/experiment14/ChwHomePerformanceCheck.java
+++ b/src/performancetest/java/teetime/examples/experiment14/ChwHomePerformanceCheck.java
@@ -1,11 +1,11 @@
 package teetime.examples.experiment14;
 
 import static org.junit.Assert.assertEquals;
-import util.PerformanceCheckProfile;
-import util.PerformanceResult;
-import util.PerformanceTest;
+import util.test.PerformanceResult;
+import util.test.PerformanceTest;
+import util.test.ProfiledPerformanceAssertion;
 
-public class ChwHomePerformanceCheck implements PerformanceCheckProfile {
+public class ChwHomePerformanceCheck extends ProfiledPerformanceAssertion {
 
 	@Override
 	public String getCorrespondingPerformanceProfile() {
diff --git a/src/performancetest/java/teetime/examples/experiment14/ChwWorkPerformanceCheck.java b/src/performancetest/java/teetime/examples/experiment14/ChwWorkPerformanceCheck.java
index 88f4e710..8f2dabdc 100644
--- a/src/performancetest/java/teetime/examples/experiment14/ChwWorkPerformanceCheck.java
+++ b/src/performancetest/java/teetime/examples/experiment14/ChwWorkPerformanceCheck.java
@@ -1,11 +1,12 @@
 package teetime.examples.experiment14;
 
 import static org.junit.Assert.assertEquals;
-import util.PerformanceCheckProfile;
-import util.PerformanceResult;
-import util.PerformanceTest;
+import teetime.examples.experiment01.MethodCallThoughputTimestampAnalysis1Test;
+import util.test.PerformanceResult;
+import util.test.PerformanceTest;
+import util.test.ProfiledPerformanceAssertion;
 
-public class ChwWorkPerformanceCheck implements PerformanceCheckProfile {
+public class ChwWorkPerformanceCheck extends ProfiledPerformanceAssertion {
 
 	@Override
 	public String getCorrespondingPerformanceProfile() {
@@ -15,9 +16,9 @@ public class ChwWorkPerformanceCheck implements PerformanceCheckProfile {
 	@Override
 	public void check() {
 		PerformanceResult test01 = PerformanceTest.measurementRepository.performanceResults
-				.get("testWithManyObjects(teetime.examples.experiment01.MethodCallThoughputTimestampAnalysis1Test)");
+				.get(buildTestMethodIdentifier(MethodCallThoughputTimestampAnalysis1Test.class, "testWithManyObjects"));
 		PerformanceResult test14 = PerformanceTest.measurementRepository.performanceResults
-				.get("testWithManyObjects(teetime.examples.experiment14.MethodCallThoughputTimestampAnalysis14Test)");
+				.get(buildTestMethodIdentifier(MethodCallThoughputTimestampAnalysis14Test.class, "testWithManyObjects"));
 
 		double medianSpeedup = (double) test14.quantiles.get(0.5) / test01.quantiles.get(0.5);
 
diff --git a/src/performancetest/java/teetime/examples/experiment14/MethodCallThoughputTimestampAnalysis14Test.java b/src/performancetest/java/teetime/examples/experiment14/MethodCallThoughputTimestampAnalysis14Test.java
index fe500b4c..3d743f81 100644
--- a/src/performancetest/java/teetime/examples/experiment14/MethodCallThoughputTimestampAnalysis14Test.java
+++ b/src/performancetest/java/teetime/examples/experiment14/MethodCallThoughputTimestampAnalysis14Test.java
@@ -21,8 +21,8 @@ import org.junit.Test;
 
 import teetime.util.ConstructorClosure;
 import teetime.util.TimestampObject;
-import util.PerformanceCheckProfile;
-import util.PerformanceTest;
+import util.test.PerformanceTest;
+import util.test.ProfiledPerformanceAssertion;
 
 /**
  * @author Christian Wulf
@@ -39,7 +39,7 @@ public class MethodCallThoughputTimestampAnalysis14Test extends PerformanceTest
 
 	@AfterClass
 	public static void afterClass() {
-		PerformanceCheckProfile performanceCheckProfile = PERFORMANCE_CHECK_PROFILE_REPOSITORY.get(MethodCallThoughputTimestampAnalysis14Test.class);
+		ProfiledPerformanceAssertion performanceCheckProfile = PERFORMANCE_CHECK_PROFILE_REPOSITORY.get(MethodCallThoughputTimestampAnalysis14Test.class);
 		performanceCheckProfile.check();
 	};
 
diff --git a/src/performancetest/java/teetime/examples/experiment15/MethodCallThoughputTimestampAnalysis15Test.java b/src/performancetest/java/teetime/examples/experiment15/MethodCallThoughputTimestampAnalysis15Test.java
index 91faf509..356647b0 100644
--- a/src/performancetest/java/teetime/examples/experiment15/MethodCallThoughputTimestampAnalysis15Test.java
+++ b/src/performancetest/java/teetime/examples/experiment15/MethodCallThoughputTimestampAnalysis15Test.java
@@ -19,7 +19,7 @@ import org.junit.Test;
 
 import teetime.util.ConstructorClosure;
 import teetime.util.TimestampObject;
-import util.PerformanceTest;
+import util.test.PerformanceTest;
 
 /**
  * @author Christian Wulf
diff --git a/src/performancetest/java/teetime/examples/experiment16/ChwHomePerformanceCheck.java b/src/performancetest/java/teetime/examples/experiment16/ChwHomePerformanceCheck.java
index a3106094..29a27cf7 100644
--- a/src/performancetest/java/teetime/examples/experiment16/ChwHomePerformanceCheck.java
+++ b/src/performancetest/java/teetime/examples/experiment16/ChwHomePerformanceCheck.java
@@ -1,11 +1,11 @@
 package teetime.examples.experiment16;
 
 import static org.junit.Assert.assertEquals;
-import util.PerformanceCheckProfile;
-import util.PerformanceResult;
-import util.PerformanceTest;
+import util.test.PerformanceResult;
+import util.test.PerformanceTest;
+import util.test.ProfiledPerformanceAssertion;
 
-public class ChwHomePerformanceCheck implements PerformanceCheckProfile {
+public class ChwHomePerformanceCheck extends ProfiledPerformanceAssertion {
 
 	@Override
 	public String getCorrespondingPerformanceProfile() {
diff --git a/src/performancetest/java/teetime/examples/experiment16/ChwWorkPerformanceCheck.java b/src/performancetest/java/teetime/examples/experiment16/ChwWorkPerformanceCheck.java
index eba4502d..8aeae42d 100644
--- a/src/performancetest/java/teetime/examples/experiment16/ChwWorkPerformanceCheck.java
+++ b/src/performancetest/java/teetime/examples/experiment16/ChwWorkPerformanceCheck.java
@@ -1,11 +1,11 @@
 package teetime.examples.experiment16;
 
 import static org.junit.Assert.assertEquals;
-import util.PerformanceCheckProfile;
-import util.PerformanceResult;
-import util.PerformanceTest;
+import util.test.PerformanceResult;
+import util.test.PerformanceTest;
+import util.test.ProfiledPerformanceAssertion;
 
-public class ChwWorkPerformanceCheck implements PerformanceCheckProfile {
+public class ChwWorkPerformanceCheck extends ProfiledPerformanceAssertion {
 
 	@Override
 	public void check() {
diff --git a/src/performancetest/java/teetime/examples/experiment16/MethodCallThoughputTimestampAnalysis16Test.java b/src/performancetest/java/teetime/examples/experiment16/MethodCallThoughputTimestampAnalysis16Test.java
index b0f56fd4..7dd7ea2b 100644
--- a/src/performancetest/java/teetime/examples/experiment16/MethodCallThoughputTimestampAnalysis16Test.java
+++ b/src/performancetest/java/teetime/examples/experiment16/MethodCallThoughputTimestampAnalysis16Test.java
@@ -24,9 +24,9 @@ import org.junit.runners.MethodSorters;
 import teetime.util.ConstructorClosure;
 import teetime.util.ListUtil;
 import teetime.util.TimestampObject;
-import util.PerformanceCheckProfile;
-import util.PerformanceCheckProfileRepository;
-import util.PerformanceTest;
+import util.test.PerformanceCheckProfileRepository;
+import util.test.PerformanceTest;
+import util.test.ProfiledPerformanceAssertion;
 
 /**
  * @author Christian Wulf
@@ -42,7 +42,13 @@ public class MethodCallThoughputTimestampAnalysis16Test extends PerformanceTest
 	public static void beforeClass() {
 		PerformanceCheckProfileRepository.INSTANCE.register(MethodCallThoughputTimestampAnalysis16Test.class, new ChwWorkPerformanceCheck());
 		PerformanceCheckProfileRepository.INSTANCE.register(MethodCallThoughputTimestampAnalysis16Test.class, new ChwHomePerformanceCheck());
-	};
+	}
+
+	@AfterClass
+	public static void afterClass() {
+		ProfiledPerformanceAssertion pcp = PerformanceCheckProfileRepository.INSTANCE.get(MethodCallThoughputTimestampAnalysis16Test.class);
+		pcp.check();
+	}
 
 	@Test
 	public void testWithManyObjectsAnd1Thread() {
@@ -59,12 +65,6 @@ public class MethodCallThoughputTimestampAnalysis16Test extends PerformanceTest
 		this.performAnalysis(4);
 	}
 
-	@AfterClass
-	public static void afterClass() {
-		PerformanceCheckProfile pcp = PerformanceCheckProfileRepository.INSTANCE.get(MethodCallThoughputTimestampAnalysis16Test.class);
-		pcp.check();
-	}
-
 	private void performAnalysis(final int numThreads) {
 		System.out.println("Testing teetime (mc) with NUM_OBJECTS_TO_CREATE=" + NUM_OBJECTS_TO_CREATE + ", NUM_NOOP_FILTERS="
 				+ NUM_NOOP_FILTERS + "...");
diff --git a/src/performancetest/java/teetime/examples/experiment17/MethodCallThoughputTimestampAnalysis17Test.java b/src/performancetest/java/teetime/examples/experiment17/MethodCallThoughputTimestampAnalysis17Test.java
index 28b98f9b..650d1170 100644
--- a/src/performancetest/java/teetime/examples/experiment17/MethodCallThoughputTimestampAnalysis17Test.java
+++ b/src/performancetest/java/teetime/examples/experiment17/MethodCallThoughputTimestampAnalysis17Test.java
@@ -20,7 +20,7 @@ import org.junit.Test;
 import teetime.util.ConstructorClosure;
 import teetime.util.ListUtil;
 import teetime.util.TimestampObject;
-import util.PerformanceTest;
+import util.test.PerformanceTest;
 
 /**
  * @author Christian Wulf
diff --git a/src/performancetest/java/teetime/examples/experiment19/MethodCallThoughputTimestampAnalysis19Test.java b/src/performancetest/java/teetime/examples/experiment19/MethodCallThoughputTimestampAnalysis19Test.java
index b3e69c82..59d13f1d 100644
--- a/src/performancetest/java/teetime/examples/experiment19/MethodCallThoughputTimestampAnalysis19Test.java
+++ b/src/performancetest/java/teetime/examples/experiment19/MethodCallThoughputTimestampAnalysis19Test.java
@@ -22,7 +22,7 @@ import org.junit.runners.MethodSorters;
 import teetime.util.ConstructorClosure;
 import teetime.util.ListUtil;
 import teetime.util.TimestampObject;
-import util.PerformanceTest;
+import util.test.PerformanceTest;
 
 /**
  * @author Christian Wulf
diff --git a/src/performancetest/java/teetime/examples/traceReading/ChwHomeTcpTraceReadingTest.java b/src/performancetest/java/teetime/examples/traceReading/ChwHomeTcpTraceReadingTest.java
index c5f90a27..6b23a328 100644
--- a/src/performancetest/java/teetime/examples/traceReading/ChwHomeTcpTraceReadingTest.java
+++ b/src/performancetest/java/teetime/examples/traceReading/ChwHomeTcpTraceReadingTest.java
@@ -34,7 +34,7 @@ import org.junit.runners.MethodSorters;
 
 import teetime.util.ListUtil;
 import teetime.util.StopWatch;
-import util.StatisticsUtil;
+import util.test.StatisticsUtil;
 
 /**
  * @author Christian Wulf
diff --git a/src/performancetest/java/teetime/examples/traceReconstruction/ChwHomeTcpTraceReconstructionAnalysisTest.java b/src/performancetest/java/teetime/examples/traceReconstruction/ChwHomeTcpTraceReconstructionAnalysisTest.java
index 977cf394..1158dade 100644
--- a/src/performancetest/java/teetime/examples/traceReconstruction/ChwHomeTcpTraceReconstructionAnalysisTest.java
+++ b/src/performancetest/java/teetime/examples/traceReconstruction/ChwHomeTcpTraceReconstructionAnalysisTest.java
@@ -32,7 +32,7 @@ import org.junit.Test;
 
 import teetime.util.ListUtil;
 import teetime.util.StopWatch;
-import util.StatisticsUtil;
+import util.test.StatisticsUtil;
 
 /**
  * @author Christian Wulf
diff --git a/src/performancetest/java/teetime/examples/traceReconstruction/ChwHomeTraceReconstructionAnalysisTest.java b/src/performancetest/java/teetime/examples/traceReconstruction/ChwHomeTraceReconstructionAnalysisTest.java
index f20679d5..bf85954a 100644
--- a/src/performancetest/java/teetime/examples/traceReconstruction/ChwHomeTraceReconstructionAnalysisTest.java
+++ b/src/performancetest/java/teetime/examples/traceReconstruction/ChwHomeTraceReconstructionAnalysisTest.java
@@ -31,7 +31,7 @@ import org.junit.Before;
 import org.junit.Test;
 
 import teetime.util.StopWatch;
-import util.StatisticsUtil;
+import util.test.StatisticsUtil;
 
 import kieker.analysis.plugin.filter.flow.TraceEventRecords;
 
diff --git a/src/performancetest/java/teetime/examples/traceReconstruction/ChwWorkTcpTraceReconstructionAnalysisTest.java b/src/performancetest/java/teetime/examples/traceReconstruction/ChwWorkTcpTraceReconstructionAnalysisTest.java
index e05b673d..8bc965b8 100644
--- a/src/performancetest/java/teetime/examples/traceReconstruction/ChwWorkTcpTraceReconstructionAnalysisTest.java
+++ b/src/performancetest/java/teetime/examples/traceReconstruction/ChwWorkTcpTraceReconstructionAnalysisTest.java
@@ -25,7 +25,7 @@ import org.junit.Before;
 import org.junit.Test;
 
 import teetime.util.StopWatch;
-import util.StatisticsUtil;
+import util.test.StatisticsUtil;
 
 /**
  * @author Christian Wulf
diff --git a/src/performancetest/java/teetime/examples/traceReconstruction/ChwWorkTraceReconstructionAnalysisTest.java b/src/performancetest/java/teetime/examples/traceReconstruction/ChwWorkTraceReconstructionAnalysisTest.java
index 335a6447..c7438eca 100644
--- a/src/performancetest/java/teetime/examples/traceReconstruction/ChwWorkTraceReconstructionAnalysisTest.java
+++ b/src/performancetest/java/teetime/examples/traceReconstruction/ChwWorkTraceReconstructionAnalysisTest.java
@@ -31,7 +31,7 @@ import org.junit.Before;
 import org.junit.Test;
 
 import teetime.util.StopWatch;
-import util.StatisticsUtil;
+import util.test.StatisticsUtil;
 
 import kieker.analysis.plugin.filter.flow.TraceEventRecords;
 
diff --git a/src/performancetest/java/teetime/examples/traceReconstruction/NieWorkKiekerTraceReconstructionAnalysisTest.java b/src/performancetest/java/teetime/examples/traceReconstruction/NieWorkKiekerTraceReconstructionAnalysisTest.java
index 77c352fc..daa1b9ae 100644
--- a/src/performancetest/java/teetime/examples/traceReconstruction/NieWorkKiekerTraceReconstructionAnalysisTest.java
+++ b/src/performancetest/java/teetime/examples/traceReconstruction/NieWorkKiekerTraceReconstructionAnalysisTest.java
@@ -31,7 +31,7 @@ import org.junit.Before;
 import org.junit.Test;
 
 import teetime.util.StopWatch;
-import util.StatisticsUtil;
+import util.test.StatisticsUtil;
 
 import kieker.analysis.plugin.filter.flow.TraceEventRecords;
 
diff --git a/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/ChwHomeTcpTraceReconstructionAnalysisWithThreadsTest.java b/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/ChwHomeTcpTraceReconstructionAnalysisWithThreadsTest.java
index 1b969f1c..5e3af5a5 100644
--- a/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/ChwHomeTcpTraceReconstructionAnalysisWithThreadsTest.java
+++ b/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/ChwHomeTcpTraceReconstructionAnalysisWithThreadsTest.java
@@ -36,7 +36,7 @@ import teetime.framework.Analysis;
 import teetime.framework.pipe.SpScPipe;
 import teetime.util.ListUtil;
 import teetime.util.StopWatch;
-import util.StatisticsUtil;
+import util.test.StatisticsUtil;
 
 /**
  * @author Christian Wulf
diff --git a/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/ChwWorkTcpTraceReconstructionAnalysisWithThreadsTest.java b/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/ChwWorkTcpTraceReconstructionAnalysisWithThreadsTest.java
index 99e8e04b..3082beaf 100644
--- a/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/ChwWorkTcpTraceReconstructionAnalysisWithThreadsTest.java
+++ b/src/performancetest/java/teetime/examples/traceReconstructionWithThreads/ChwWorkTcpTraceReconstructionAnalysisWithThreadsTest.java
@@ -31,7 +31,7 @@ import teetime.framework.Analysis;
 import teetime.framework.pipe.SpScPipe;
 import teetime.util.ListUtil;
 import teetime.util.StopWatch;
-import util.StatisticsUtil;
+import util.test.StatisticsUtil;
 
 /**
  * @author Christian Wulf
diff --git a/src/performancetest/java/teetime/examples/traceReductionWithThreads/ChwWorkTcpTraceReductionAnalysisWithThreadsTest.java b/src/performancetest/java/teetime/examples/traceReductionWithThreads/ChwWorkTcpTraceReductionAnalysisWithThreadsTest.java
index 41d1eab0..d7b58674 100644
--- a/src/performancetest/java/teetime/examples/traceReductionWithThreads/ChwWorkTcpTraceReductionAnalysisWithThreadsTest.java
+++ b/src/performancetest/java/teetime/examples/traceReductionWithThreads/ChwWorkTcpTraceReductionAnalysisWithThreadsTest.java
@@ -32,7 +32,7 @@ import org.junit.runners.MethodSorters;
 import teetime.util.ListUtil;
 import teetime.util.StopWatch;
 import util.MooBenchStarter;
-import util.StatisticsUtil;
+import util.test.StatisticsUtil;
 
 /**
  * @author Christian Wulf
diff --git a/src/performancetest/java/teetime/util/StopWatchTest.java b/src/performancetest/java/teetime/util/StopWatchTest.java
index 6ecf46a0..5c0a6a0d 100644
--- a/src/performancetest/java/teetime/util/StopWatchTest.java
+++ b/src/performancetest/java/teetime/util/StopWatchTest.java
@@ -7,7 +7,7 @@ import java.util.Map;
 
 import org.junit.Test;
 
-import util.StatisticsUtil;
+import util.test.StatisticsUtil;
 
 public class StopWatchTest {
 
-- 
GitLab