From 559f7a39167e05587e2098ceeb9c01969a212e79 Mon Sep 17 00:00:00 2001
From: Reiner Jung <reiner.jung@email.uni-kiel.de>
Date: Fri, 20 Nov 2020 15:55:41 +0100
Subject: [PATCH] Updated Moobench code. Refactored and working on support for
 Kieker 1.14

---
 .gitignore                                    |   6 +
 build.gradle                                  |  36 +++
 .../OverheadEvaluationMicrobenchmark}/LICENSE |   0
 .../MooBench/benchmark.sh                     |   0
 .../MooBench/collector-2.0/bin/collector      |   0
 .../MooBench/collector-2.0/bin/collector.bat  |   0
 .../collector-2.0/lib/collector-2.0.jar       | Bin
 .../collector-2.0/lib/jcommander-1.72.jar     | Bin
 .../collector-2.0/lib/log4j-1.2.17.jar        | Bin
 .../collector-2.0/lib/slf4j-api-1.7.25.jar    | Bin
 .../lib/slf4j-log4j12-1.7.25.jar              | Bin
 .../MooBench/common-functions                 |   0
 .../MooBench/config                           |   0
 .../MooBench/lib/.gitignore                   |   0
 .../MooBench/log4j.cfg                        |   0
 .../MooBench/moobench-2.0-all.jar             | Bin
 .../MooBench/r/stats.csv.r                    |   0
 .../OverheadEvaluationMicrobenchmark}/README  |   0
 .../executeRemoteMicroBenchmark.sh            |   0
 .../rerun-benchmark.sh                        |   0
 frameworks/Kieker/build.gradle                |  12 +
 .../src/kieker/tcp/TestExperiment1.java       | 266 ------------------
 .../src/kieker/tcp/TestExperiment2.java       |  83 ------
 .../src/kieker/tcp/TestExperiment3.java       |  86 ------
 .../java/moobench}/kieker/Logger.java         |   7 +-
 .../kieker/tcp/TestConfiguration1.java        |  15 +
 .../kieker/tcp/TestConfiguration2.java        |  45 +++
 .../kieker/tcp/TestConfiguration3.java        |  42 +++
 .../moobench}/kieker/tcp/TestExperiment0.java |   2 +-
 .../moobench/kieker/tcp/TestExperiment1.java  |  35 +++
 .../moobench/kieker/tcp/TestExperiment2.java  |  38 +++
 .../moobench/kieker/tcp/TestExperiment3.java  |  38 +++
 frameworks/SPASSmeter/build.gradle            |   8 +
 frameworks/inspectIT/build.gradle             |   8 +
 gradle/wrapper/gradle-wrapper.jar             | Bin 0 -> 58910 bytes
 gradle/wrapper/gradle-wrapper.properties      |   5 +
 gradlew                                       | 185 ++++++++++++
 gradlew.bat                                   | 104 +++++++
 lib/commons-cli-1.2.LICENSE                   | 207 --------------
 lib/commons-cli-1.2.jar                       | Bin 41123 -> 0 bytes
 moobench/build.gradle                         |  12 +
 .../moobench/application}/MonitoredClass.java |   2 +-
 .../application}/MonitoredClassSimple.java    |   2 +-
 .../application}/MonitoredClassThreaded.java  |   2 +-
 .../moobench/benchmark/BenchmarkMain.java     | 158 +++++++++++
 .../benchmark/BenchmarkParameter.java         |  91 ++++++
 .../benchmark/BenchmarkingThread.java         |   2 +-
 .../benchmark/BenchmarkingThreadMilli.java    |   4 +-
 .../benchmark/BenchmarkingThreadNano.java     |   4 +-
 settings.gradle                               |  16 ++
 src/META-INF/.gitignore                       |   4 -
 src/mooBench/benchmark/Benchmark.java         | 240 ----------------
 52 files changed, 866 insertions(+), 899 deletions(-)
 create mode 100644 build.gradle
 rename {OverheadEvaluationMicrobenchmark => frameworks/Kieker/OverheadEvaluationMicrobenchmark}/LICENSE (100%)
 rename {OverheadEvaluationMicrobenchmark => frameworks/Kieker/OverheadEvaluationMicrobenchmark}/MooBench/benchmark.sh (100%)
 rename {OverheadEvaluationMicrobenchmark => frameworks/Kieker/OverheadEvaluationMicrobenchmark}/MooBench/collector-2.0/bin/collector (100%)
 rename {OverheadEvaluationMicrobenchmark => frameworks/Kieker/OverheadEvaluationMicrobenchmark}/MooBench/collector-2.0/bin/collector.bat (100%)
 rename {OverheadEvaluationMicrobenchmark => frameworks/Kieker/OverheadEvaluationMicrobenchmark}/MooBench/collector-2.0/lib/collector-2.0.jar (100%)
 rename {OverheadEvaluationMicrobenchmark => frameworks/Kieker/OverheadEvaluationMicrobenchmark}/MooBench/collector-2.0/lib/jcommander-1.72.jar (100%)
 rename {OverheadEvaluationMicrobenchmark => frameworks/Kieker/OverheadEvaluationMicrobenchmark}/MooBench/collector-2.0/lib/log4j-1.2.17.jar (100%)
 rename {OverheadEvaluationMicrobenchmark => frameworks/Kieker/OverheadEvaluationMicrobenchmark}/MooBench/collector-2.0/lib/slf4j-api-1.7.25.jar (100%)
 rename {OverheadEvaluationMicrobenchmark => frameworks/Kieker/OverheadEvaluationMicrobenchmark}/MooBench/collector-2.0/lib/slf4j-log4j12-1.7.25.jar (100%)
 rename {OverheadEvaluationMicrobenchmark => frameworks/Kieker/OverheadEvaluationMicrobenchmark}/MooBench/common-functions (100%)
 rename {OverheadEvaluationMicrobenchmark => frameworks/Kieker/OverheadEvaluationMicrobenchmark}/MooBench/config (100%)
 rename {OverheadEvaluationMicrobenchmark => frameworks/Kieker/OverheadEvaluationMicrobenchmark}/MooBench/lib/.gitignore (100%)
 rename {OverheadEvaluationMicrobenchmark => frameworks/Kieker/OverheadEvaluationMicrobenchmark}/MooBench/log4j.cfg (100%)
 rename {OverheadEvaluationMicrobenchmark => frameworks/Kieker/OverheadEvaluationMicrobenchmark}/MooBench/moobench-2.0-all.jar (100%)
 rename {OverheadEvaluationMicrobenchmark => frameworks/Kieker/OverheadEvaluationMicrobenchmark}/MooBench/r/stats.csv.r (100%)
 rename {OverheadEvaluationMicrobenchmark => frameworks/Kieker/OverheadEvaluationMicrobenchmark}/README (100%)
 rename {OverheadEvaluationMicrobenchmark => frameworks/Kieker/OverheadEvaluationMicrobenchmark}/executeRemoteMicroBenchmark.sh (100%)
 rename {OverheadEvaluationMicrobenchmark => frameworks/Kieker/OverheadEvaluationMicrobenchmark}/rerun-benchmark.sh (100%)
 create mode 100644 frameworks/Kieker/build.gradle
 delete mode 100644 frameworks/Kieker/src/kieker/tcp/TestExperiment1.java
 delete mode 100644 frameworks/Kieker/src/kieker/tcp/TestExperiment2.java
 delete mode 100644 frameworks/Kieker/src/kieker/tcp/TestExperiment3.java
 rename frameworks/Kieker/src/{ => main/java/moobench}/kieker/Logger.java (87%)
 create mode 100644 frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestConfiguration1.java
 create mode 100644 frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestConfiguration2.java
 create mode 100644 frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestConfiguration3.java
 rename frameworks/Kieker/src/{ => main/java/moobench}/kieker/tcp/TestExperiment0.java (99%)
 create mode 100644 frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestExperiment1.java
 create mode 100644 frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestExperiment2.java
 create mode 100644 frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestExperiment3.java
 create mode 100644 frameworks/SPASSmeter/build.gradle
 create mode 100644 frameworks/inspectIT/build.gradle
 create mode 100644 gradle/wrapper/gradle-wrapper.jar
 create mode 100644 gradle/wrapper/gradle-wrapper.properties
 create mode 100755 gradlew
 create mode 100644 gradlew.bat
 delete mode 100644 lib/commons-cli-1.2.LICENSE
 delete mode 100644 lib/commons-cli-1.2.jar
 create mode 100644 moobench/build.gradle
 rename {src/mooBench/monitoredApplication => moobench/src/main/java/moobench/application}/MonitoredClass.java (95%)
 rename {src/mooBench/monitoredApplication => moobench/src/main/java/moobench/application}/MonitoredClassSimple.java (97%)
 rename {src/mooBench/monitoredApplication => moobench/src/main/java/moobench/application}/MonitoredClassThreaded.java (97%)
 create mode 100644 moobench/src/main/java/moobench/benchmark/BenchmarkMain.java
 create mode 100644 moobench/src/main/java/moobench/benchmark/BenchmarkParameter.java
 rename {src/mooBench => moobench/src/main/java/moobench}/benchmark/BenchmarkingThread.java (97%)
 rename {src/mooBench => moobench/src/main/java/moobench}/benchmark/BenchmarkingThreadMilli.java (96%)
 rename {src/mooBench => moobench/src/main/java/moobench}/benchmark/BenchmarkingThreadNano.java (97%)
 create mode 100644 settings.gradle
 delete mode 100644 src/META-INF/.gitignore
 delete mode 100644 src/mooBench/benchmark/Benchmark.java

diff --git a/.gitignore b/.gitignore
index 9119436..a543dc0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,9 @@
 /build/
 /dist/
 /tmp/
+
+# Ignore Gradle project-specific cache directory
+.gradle
+
+# Ignore Gradle build output directory
+build
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..041f1ac
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,36 @@
+/*
+ * This file was generated by the Gradle 'init' task.
+ *
+ * This generated file contains a sample Java project to get you started.
+ * For more details take a look at the Java Quickstart chapter in the Gradle
+ * User Manual available at https://docs.gradle.org/6.5/userguide/tutorial_java_projects.html
+ */
+
+plugins {
+    id 'java'
+}
+
+repositories {
+    // Use jcenter for resolving dependencies.
+    // You can declare any Maven/Ivy/file repository here.
+    jcenter()
+    mavenCentral()
+}
+
+dependencies {
+    // This dependency is used by the application.
+    implementation 'com.google.guava:guava:29.0-jre'
+    implementation 'com.beust:jcommander:1.72'
+
+    // Use JUnit test framework
+    testImplementation 'junit:junit:4.13'
+}
+
+subprojects {
+	repositories {
+    // Use jcenter for resolving dependencies.
+    // You can declare any Maven/Ivy/file repository here.
+    jcenter()
+    mavenCentral()
+}
+}
diff --git a/OverheadEvaluationMicrobenchmark/LICENSE b/frameworks/Kieker/OverheadEvaluationMicrobenchmark/LICENSE
similarity index 100%
rename from OverheadEvaluationMicrobenchmark/LICENSE
rename to frameworks/Kieker/OverheadEvaluationMicrobenchmark/LICENSE
diff --git a/OverheadEvaluationMicrobenchmark/MooBench/benchmark.sh b/frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/benchmark.sh
similarity index 100%
rename from OverheadEvaluationMicrobenchmark/MooBench/benchmark.sh
rename to frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/benchmark.sh
diff --git a/OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/bin/collector b/frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/bin/collector
similarity index 100%
rename from OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/bin/collector
rename to frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/bin/collector
diff --git a/OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/bin/collector.bat b/frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/bin/collector.bat
similarity index 100%
rename from OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/bin/collector.bat
rename to frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/bin/collector.bat
diff --git a/OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/lib/collector-2.0.jar b/frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/lib/collector-2.0.jar
similarity index 100%
rename from OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/lib/collector-2.0.jar
rename to frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/lib/collector-2.0.jar
diff --git a/OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/lib/jcommander-1.72.jar b/frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/lib/jcommander-1.72.jar
similarity index 100%
rename from OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/lib/jcommander-1.72.jar
rename to frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/lib/jcommander-1.72.jar
diff --git a/OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/lib/log4j-1.2.17.jar b/frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/lib/log4j-1.2.17.jar
similarity index 100%
rename from OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/lib/log4j-1.2.17.jar
rename to frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/lib/log4j-1.2.17.jar
diff --git a/OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/lib/slf4j-api-1.7.25.jar b/frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/lib/slf4j-api-1.7.25.jar
similarity index 100%
rename from OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/lib/slf4j-api-1.7.25.jar
rename to frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/lib/slf4j-api-1.7.25.jar
diff --git a/OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/lib/slf4j-log4j12-1.7.25.jar b/frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/lib/slf4j-log4j12-1.7.25.jar
similarity index 100%
rename from OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/lib/slf4j-log4j12-1.7.25.jar
rename to frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/collector-2.0/lib/slf4j-log4j12-1.7.25.jar
diff --git a/OverheadEvaluationMicrobenchmark/MooBench/common-functions b/frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/common-functions
similarity index 100%
rename from OverheadEvaluationMicrobenchmark/MooBench/common-functions
rename to frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/common-functions
diff --git a/OverheadEvaluationMicrobenchmark/MooBench/config b/frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/config
similarity index 100%
rename from OverheadEvaluationMicrobenchmark/MooBench/config
rename to frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/config
diff --git a/OverheadEvaluationMicrobenchmark/MooBench/lib/.gitignore b/frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/lib/.gitignore
similarity index 100%
rename from OverheadEvaluationMicrobenchmark/MooBench/lib/.gitignore
rename to frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/lib/.gitignore
diff --git a/OverheadEvaluationMicrobenchmark/MooBench/log4j.cfg b/frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/log4j.cfg
similarity index 100%
rename from OverheadEvaluationMicrobenchmark/MooBench/log4j.cfg
rename to frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/log4j.cfg
diff --git a/OverheadEvaluationMicrobenchmark/MooBench/moobench-2.0-all.jar b/frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/moobench-2.0-all.jar
similarity index 100%
rename from OverheadEvaluationMicrobenchmark/MooBench/moobench-2.0-all.jar
rename to frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/moobench-2.0-all.jar
diff --git a/OverheadEvaluationMicrobenchmark/MooBench/r/stats.csv.r b/frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/r/stats.csv.r
similarity index 100%
rename from OverheadEvaluationMicrobenchmark/MooBench/r/stats.csv.r
rename to frameworks/Kieker/OverheadEvaluationMicrobenchmark/MooBench/r/stats.csv.r
diff --git a/OverheadEvaluationMicrobenchmark/README b/frameworks/Kieker/OverheadEvaluationMicrobenchmark/README
similarity index 100%
rename from OverheadEvaluationMicrobenchmark/README
rename to frameworks/Kieker/OverheadEvaluationMicrobenchmark/README
diff --git a/OverheadEvaluationMicrobenchmark/executeRemoteMicroBenchmark.sh b/frameworks/Kieker/OverheadEvaluationMicrobenchmark/executeRemoteMicroBenchmark.sh
similarity index 100%
rename from OverheadEvaluationMicrobenchmark/executeRemoteMicroBenchmark.sh
rename to frameworks/Kieker/OverheadEvaluationMicrobenchmark/executeRemoteMicroBenchmark.sh
diff --git a/OverheadEvaluationMicrobenchmark/rerun-benchmark.sh b/frameworks/Kieker/OverheadEvaluationMicrobenchmark/rerun-benchmark.sh
similarity index 100%
rename from OverheadEvaluationMicrobenchmark/rerun-benchmark.sh
rename to frameworks/Kieker/OverheadEvaluationMicrobenchmark/rerun-benchmark.sh
diff --git a/frameworks/Kieker/build.gradle b/frameworks/Kieker/build.gradle
new file mode 100644
index 0000000..7f69424
--- /dev/null
+++ b/frameworks/Kieker/build.gradle
@@ -0,0 +1,12 @@
+plugins {
+	id 'java'
+	id 'application'
+}
+
+dependencies {
+	implementation project(':moobench')
+	implementation 'net.kieker-monitoring:kieker:1.14'
+	implementation 'net.sourceforge.teetime:teetime:3.0'
+    implementation 'org.slf4j:slf4j-api:1.7.+'
+    implementation 'ch.qos.logback:logback-classic:1.2.3'
+}
diff --git a/frameworks/Kieker/src/kieker/tcp/TestExperiment1.java b/frameworks/Kieker/src/kieker/tcp/TestExperiment1.java
deleted file mode 100644
index 335259e..0000000
--- a/frameworks/Kieker/src/kieker/tcp/TestExperiment1.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/***************************************************************************
- * Copyright 2014 Kieker Project (http://kieker-monitoring.net)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ***************************************************************************/
-
-package kieker.tcp;
-
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.nio.BufferUnderflowException;
-import java.nio.ByteBuffer;
-import java.nio.channels.ServerSocketChannel;
-import java.nio.channels.SocketChannel;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import kieker.analysis.AnalysisController;
-import kieker.analysis.IAnalysisController;
-import kieker.analysis.IProjectContext;
-import kieker.analysis.exception.AnalysisConfigurationException;
-import kieker.analysis.plugin.annotation.OutputPort;
-import kieker.analysis.plugin.annotation.Plugin;
-import kieker.analysis.plugin.annotation.Property;
-import kieker.analysis.plugin.reader.AbstractReaderPlugin;
-import kieker.common.configuration.Configuration;
-import kieker.common.exception.MonitoringRecordException;
-import kieker.common.logging.Log;
-import kieker.common.logging.LogFactory;
-import kieker.common.record.AbstractMonitoringRecord;
-import kieker.common.record.IMonitoringRecord;
-import kieker.common.record.misc.RegistryRecord;
-import kieker.common.util.registry.ILookup;
-import kieker.common.util.registry.Lookup;
-
-// Command-Line:
-// java -javaagent:lib/kieker-1.10-SNAPSHOT_aspectj.jar -Dkieker.monitoring.writer=kieker.monitoring.writer.tcp.TCPWriter -Dkieker.monitoring.writer.tcp.TCPWriter.QueueFullBehavior=1 -jar dist\OverheadEvaluationMicrobenchmark.jar --recursiondepth 10 --totalthreads 1 --methodtime 0 --output-filename raw.csv --totalcalls 10000000
-/**
- * @author Jan Waller
- */
-public final class TestExperiment1 {
-	private static final Log LOG = LogFactory.getLog(TestExperiment1.class);
-
-	private TestExperiment1() {}
-
-	public static void main(final String[] args) {
-		final IAnalysisController analysisController = new AnalysisController("TCPThroughput");
-		TestExperiment1.createAndConnectPlugins(analysisController);
-		try {
-			analysisController.run();
-		} catch (final AnalysisConfigurationException ex) {
-			TestExperiment1.LOG.error("Failed to start the example project.", ex);
-		}
-	}
-
-	private static void createAndConnectPlugins(final IAnalysisController analysisController) {
-		final Configuration readerConfig = new Configuration();
-		// readerConfig.setProperty(TCPReader.CONFIG_PROPERTY_NAME_PORT1, 10333);
-		// readerConfig.setProperty(TCPReader.CONFIG_PROPERTY_NAME_PORT2, 10334);
-		final TCPCountingReader reader = new TCPCountingReader(readerConfig, analysisController);
-		reader.getName(); // to remove unused warning
-	}
-}
-
-/**
- * 
- * @author Jan Waller
- * 
- * @since 1.8
- */
-@Plugin(description = "A reader which reads records from a TCP port",
-		outputPorts = {
-			@OutputPort(name = TCPCountingReader.OUTPUT_PORT_NAME_RECORDS, eventTypes = { IMonitoringRecord.class }, description = "Output Port of the TCPReader")
-		},
-		configuration = {
-			@Property(name = TCPCountingReader.CONFIG_PROPERTY_NAME_PORT1, defaultValue = "10133",
-					description = "The first port of the server used for the TCP connection."),
-			@Property(name = TCPCountingReader.CONFIG_PROPERTY_NAME_PORT2, defaultValue = "10134",
-					description = "The second port of the server used for the TCP connection.")
-		})
-final class TCPCountingReader extends AbstractReaderPlugin {
-
-	/** The name of the output port delivering the received records. */
-	public static final String OUTPUT_PORT_NAME_RECORDS = "monitoringRecords";
-
-	/** The name of the configuration determining the TCP port. */
-	public static final String CONFIG_PROPERTY_NAME_PORT1 = "port1";
-	/** The name of the configuration determining the TCP port. */
-	public static final String CONFIG_PROPERTY_NAME_PORT2 = "port2";
-
-	private static final int MESSAGE_BUFFER_SIZE = 65535;
-
-	static final Log LOG = LogFactory.getLog(TCPCountingReader.class);
-
-	private final int port1;
-	private final int port2;
-	private final ILookup<String> stringRegistry = new Lookup<String>();
-
-	final AtomicInteger counter = new AtomicInteger(0);
-	final ScheduledExecutorService executorService;
-
-	public TCPCountingReader(final Configuration configuration, final IProjectContext projectContext) {
-		super(configuration, projectContext);
-		this.port1 = this.configuration.getIntProperty(CONFIG_PROPERTY_NAME_PORT1);
-		this.port2 = this.configuration.getIntProperty(CONFIG_PROPERTY_NAME_PORT2);
-		this.executorService = new ScheduledThreadPoolExecutor(1);
-	}
-
-	@Override
-	public boolean init() {
-		this.executorService.scheduleAtFixedRate(new Runnable() {
-			public void run() {
-				System.out.println("Records/s: " + TCPCountingReader.this.counter.getAndSet(0));
-			}
-		}, 0, 1, TimeUnit.SECONDS);
-
-		final TCPStringReader tcpStringReader = new TCPStringReader(this.port2, this.stringRegistry);
-		tcpStringReader.start();
-		return super.init();
-	}
-
-	@Override
-	public Configuration getCurrentConfiguration() {
-		final Configuration configuration = new Configuration();
-		configuration.setProperty(CONFIG_PROPERTY_NAME_PORT1, Integer.toString(this.port1));
-		configuration.setProperty(CONFIG_PROPERTY_NAME_PORT2, Integer.toString(this.port2));
-		return configuration;
-	}
-
-	public boolean read() {
-		ServerSocketChannel serversocket = null;
-		try {
-			serversocket = ServerSocketChannel.open();
-			serversocket.socket().bind(new InetSocketAddress(this.port1));
-			if (LOG.isDebugEnabled()) {
-				LOG.debug("Listening on port " + this.port1);
-			}
-			// BEGIN also loop this one?
-			final SocketChannel socketChannel = serversocket.accept();
-			final ByteBuffer buffer = ByteBuffer.allocateDirect(MESSAGE_BUFFER_SIZE);
-			while (socketChannel.read(buffer) != -1) {
-				buffer.flip();
-				// System.out.println("Reading, remaining:" + buffer.remaining());
-				try {
-					while (buffer.hasRemaining()) {
-						buffer.mark();
-						final int clazzid = buffer.getInt();
-						final long loggingTimestamp = buffer.getLong();
-						final IMonitoringRecord record;
-						try { // NOCS (Nested try-catch)
-							record = AbstractMonitoringRecord.createFromByteBuffer(clazzid, buffer, this.stringRegistry);
-							record.setLoggingTimestamp(loggingTimestamp);
-							// super.deliver(OUTPUT_PORT_NAME_RECORDS, record);
-							this.counter.incrementAndGet();
-						} catch (final MonitoringRecordException ex) {
-							LOG.error("Failed to create record.", ex);
-						}
-					}
-					buffer.clear();
-				} catch (final BufferUnderflowException ex) {
-					buffer.reset();
-					// System.out.println("Underflow, remaining:" + buffer.remaining());
-					buffer.compact();
-				}
-			}
-			// System.out.println("Channel closing...");
-			socketChannel.close();
-			// END also loop this one?
-		} catch (final IOException ex) {
-			LOG.error("Error while reading", ex);
-			return false;
-		} finally {
-			if (null != serversocket) {
-				try {
-					serversocket.close();
-				} catch (final IOException e) {
-					if (LOG.isDebugEnabled()) {
-						LOG.debug("Failed to close TCP connection!", e);
-					}
-				}
-			}
-		}
-		return true;
-	}
-
-	public void terminate(final boolean error) {
-		LOG.info("Shutdown of TCPReader requested.");
-		this.executorService.shutdown();
-	}
-}
-
-/**
- * 
- * @author Jan Waller
- * 
- * @since 1.8
- */
-class TCPStringReader extends Thread {
-
-	private static final int MESSAGE_BUFFER_SIZE = 65535;
-
-	private static final Log LOG = LogFactory.getLog(TCPStringReader.class);
-
-	private final int port;
-	private final ILookup<String> stringRegistry;
-
-	public TCPStringReader(final int port, final ILookup<String> stringRegistry) {
-		this.port = port;
-		this.stringRegistry = stringRegistry;
-	}
-
-	@Override
-	public void run() {
-		ServerSocketChannel serversocket = null;
-		try {
-			serversocket = ServerSocketChannel.open();
-			serversocket.socket().bind(new InetSocketAddress(this.port));
-			if (LOG.isDebugEnabled()) {
-				LOG.debug("Listening on port " + this.port);
-			}
-			// BEGIN also loop this one?
-			final SocketChannel socketChannel = serversocket.accept();
-			final ByteBuffer buffer = ByteBuffer.allocateDirect(MESSAGE_BUFFER_SIZE);
-			while (socketChannel.read(buffer) != -1) {
-				buffer.flip();
-				try {
-					while (buffer.hasRemaining()) {
-						buffer.mark();
-						RegistryRecord.registerRecordInRegistry(buffer, this.stringRegistry);
-					}
-					buffer.clear();
-				} catch (final BufferUnderflowException ex) {
-					buffer.reset();
-					buffer.compact();
-				}
-			}
-			socketChannel.close();
-			// END also loop this one?
-		} catch (final IOException ex) {
-			LOG.error("Error while reading", ex);
-		} finally {
-			if (null != serversocket) {
-				try {
-					serversocket.close();
-				} catch (final IOException e) {
-					if (LOG.isDebugEnabled()) {
-						LOG.debug("Failed to close TCP connection!", e);
-					}
-				}
-			}
-		}
-	}
-
-}
diff --git a/frameworks/Kieker/src/kieker/tcp/TestExperiment2.java b/frameworks/Kieker/src/kieker/tcp/TestExperiment2.java
deleted file mode 100644
index 17ab72d..0000000
--- a/frameworks/Kieker/src/kieker/tcp/TestExperiment2.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/***************************************************************************
- * Copyright 2014 Kieker Project (http://kieker-monitoring.net)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ***************************************************************************/
-
-package kieker.tcp;
-
-import java.util.concurrent.TimeUnit;
-
-import kieker.analysis.AnalysisController;
-import kieker.analysis.IAnalysisController;
-import kieker.analysis.exception.AnalysisConfigurationException;
-import kieker.analysis.plugin.filter.flow.EventRecordTraceReconstructionFilter;
-import kieker.analysis.plugin.filter.forward.AnalysisThroughputFilter;
-import kieker.analysis.plugin.filter.forward.TeeFilter;
-import kieker.analysis.plugin.reader.tcp.TCPReader;
-import kieker.analysis.plugin.reader.timer.TimeReader;
-import kieker.common.configuration.Configuration;
-import kieker.common.logging.Log;
-import kieker.common.logging.LogFactory;
-
-// Command-Line:
-// java -javaagent:lib/kieker-1.10-SNAPSHOT_aspectj.jar -Dkieker.monitoring.writer=kieker.monitoring.writer.tcp.TCPWriter -Dkieker.monitoring.writer.tcp.TCPWriter.QueueFullBehavior=1 -jar dist\OverheadEvaluationMicrobenchmark.jar --recursiondepth 10 --totalthreads 1 --methodtime 0 --output-filename raw.csv --totalcalls 10000000
-/**
- * @author Jan Waller
- */
-public final class TestExperiment2 {
-	private static final Log LOG = LogFactory.getLog(TestExperiment2.class);
-
-	private TestExperiment2() {}
-
-	public static void main(final String[] args) throws IllegalStateException, AnalysisConfigurationException {
-		final IAnalysisController analysisController = new AnalysisController("TCPThroughput");
-		TestExperiment2.createAndConnectPlugins(analysisController);
-		try {
-			analysisController.run();
-		} catch (final AnalysisConfigurationException ex) {
-			TestExperiment2.LOG.error("Failed to start the example project.", ex);
-		}
-	}
-
-	private static void createAndConnectPlugins(final IAnalysisController analysisController) throws IllegalStateException, AnalysisConfigurationException {
-		final Configuration readerConfig = new Configuration();
-		// readerConfig.setProperty(TCPReader.CONFIG_PROPERTY_NAME_PORT1, 10333);
-		// readerConfig.setProperty(TCPReader.CONFIG_PROPERTY_NAME_PORT2, 10334);
-		final TCPReader reader = new TCPReader(readerConfig, analysisController);
-
-		final Configuration timeConfig = new Configuration();
-		final TimeReader timeReader = new TimeReader(timeConfig, analysisController);
-
-		final Configuration configTraceRecon = new Configuration();
-		configTraceRecon.setProperty(EventRecordTraceReconstructionFilter.CONFIG_PROPERTY_NAME_TIMEUNIT, TimeUnit.SECONDS.name());
-		configTraceRecon.setProperty(EventRecordTraceReconstructionFilter.CONFIG_PROPERTY_NAME_MAX_TRACE_DURATION, "1");
-		configTraceRecon.setProperty(EventRecordTraceReconstructionFilter.CONFIG_PROPERTY_NAME_MAX_TRACE_TIMEOUT, "1");
-		final EventRecordTraceReconstructionFilter traceRecon = new EventRecordTraceReconstructionFilter(configTraceRecon, analysisController);
-
-		analysisController.connect(reader, TCPReader.OUTPUT_PORT_NAME_RECORDS, traceRecon, EventRecordTraceReconstructionFilter.INPUT_PORT_NAME_TRACE_RECORDS);
-		analysisController.connect(timeReader, TimeReader.OUTPUT_PORT_NAME_TIMESTAMPS, traceRecon, EventRecordTraceReconstructionFilter.INPUT_PORT_NAME_TIME_EVENT);
-
-		final Configuration counterConfig = new Configuration();
-		final AnalysisThroughputFilter through = new AnalysisThroughputFilter(counterConfig, analysisController);
-		analysisController.connect(traceRecon, EventRecordTraceReconstructionFilter.OUTPUT_PORT_NAME_TRACE_VALID, through,
-				AnalysisThroughputFilter.INPUT_PORT_NAME_OBJECTS);
-		analysisController.connect(timeReader, TimeReader.OUTPUT_PORT_NAME_TIMESTAMPS, through, AnalysisThroughputFilter.INPUT_PORT_NAME_TIME);
-
-		final Configuration confTeeFilter = new Configuration();
-		confTeeFilter.setProperty(TeeFilter.CONFIG_PROPERTY_NAME_STREAM, TeeFilter.CONFIG_PROPERTY_VALUE_STREAM_STDOUT);
-		// confTeeFilter.setProperty(TeeFilter.CONFIG_PROPERTY_NAME_STREAM, TeeFilter.CONFIG_PROPERTY_VALUE_STREAM_NULL);
-		final TeeFilter teeFilter = new TeeFilter(confTeeFilter, analysisController);
-		analysisController.connect(through, AnalysisThroughputFilter.OUTPUT_PORT_NAME_THROUGHPUT, teeFilter, TeeFilter.INPUT_PORT_NAME_EVENTS);
-	}
-}
diff --git a/frameworks/Kieker/src/kieker/tcp/TestExperiment3.java b/frameworks/Kieker/src/kieker/tcp/TestExperiment3.java
deleted file mode 100644
index fb0a031..0000000
--- a/frameworks/Kieker/src/kieker/tcp/TestExperiment3.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/***************************************************************************
- * Copyright 2014 Kieker Project (http://kieker-monitoring.net)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ***************************************************************************/
-
-package kieker.tcp;
-
-import java.util.concurrent.TimeUnit;
-
-import kieker.analysis.AnalysisController;
-import kieker.analysis.IAnalysisController;
-import kieker.analysis.exception.AnalysisConfigurationException;
-import kieker.analysis.plugin.filter.flow.EventRecordTraceReconstructionFilter;
-import kieker.analysis.plugin.filter.flow.TraceAggregationFilter;
-import kieker.analysis.plugin.filter.forward.TeeFilter;
-import kieker.analysis.plugin.reader.tcp.TCPReader;
-import kieker.analysis.plugin.reader.timer.TimeReader;
-import kieker.common.configuration.Configuration;
-import kieker.common.logging.Log;
-import kieker.common.logging.LogFactory;
-
-// Command-Line:
-// java -javaagent:lib/kieker-1.10-SNAPSHOT_aspectj.jar -Dkieker.monitoring.writer=kieker.monitoring.writer.tcp.TCPWriter -Dkieker.monitoring.writer.tcp.TCPWriter.QueueFullBehavior=1 -jar dist\OverheadEvaluationMicrobenchmark.jar --recursiondepth 10 --totalthreads 1 --methodtime 0 --output-filename raw.csv --totalcalls 10000000
-/**
- * @author Jan Waller
- */
-public final class TestExperiment3 {
-	private static final Log LOG = LogFactory.getLog(TestExperiment3.class);
-
-	private TestExperiment3() {}
-
-	public static void main(final String[] args) throws IllegalStateException, AnalysisConfigurationException {
-		final IAnalysisController analysisController = new AnalysisController("TCPThroughput");
-		TestExperiment3.createAndConnectPlugins(analysisController);
-		try {
-			analysisController.run();
-		} catch (final AnalysisConfigurationException ex) {
-			TestExperiment3.LOG.error("Failed to start the example project.", ex);
-		}
-	}
-
-	private static void createAndConnectPlugins(final IAnalysisController analysisController) throws IllegalStateException, AnalysisConfigurationException {
-		final Configuration readerConfig = new Configuration();
-		// readerConfig.setProperty(TCPReader.CONFIG_PROPERTY_NAME_PORT1, 10333);
-		// readerConfig.setProperty(TCPReader.CONFIG_PROPERTY_NAME_PORT2, 10334);
-		final TCPReader reader = new TCPReader(readerConfig, analysisController);
-
-		final Configuration timeConfig = new Configuration();
-		final TimeReader timeReader = new TimeReader(timeConfig, analysisController);
-
-		final Configuration configTraceRecon = new Configuration();
-		configTraceRecon.setProperty(EventRecordTraceReconstructionFilter.CONFIG_PROPERTY_NAME_TIMEUNIT, TimeUnit.SECONDS.name());
-		configTraceRecon.setProperty(EventRecordTraceReconstructionFilter.CONFIG_PROPERTY_NAME_MAX_TRACE_DURATION, "1");
-		configTraceRecon.setProperty(EventRecordTraceReconstructionFilter.CONFIG_PROPERTY_NAME_MAX_TRACE_TIMEOUT, "1");
-		final EventRecordTraceReconstructionFilter traceRecon = new EventRecordTraceReconstructionFilter(configTraceRecon, analysisController);
-
-		analysisController.connect(reader, TCPReader.OUTPUT_PORT_NAME_RECORDS, traceRecon, EventRecordTraceReconstructionFilter.INPUT_PORT_NAME_TRACE_RECORDS);
-		analysisController.connect(timeReader, TimeReader.OUTPUT_PORT_NAME_TIMESTAMPS, traceRecon, EventRecordTraceReconstructionFilter.INPUT_PORT_NAME_TIME_EVENT);
-
-		final Configuration configTraceAggr = new Configuration();
-		configTraceAggr.setProperty(TraceAggregationFilter.CONFIG_PROPERTY_NAME_TIMEUNIT, TimeUnit.SECONDS.name());
-		configTraceAggr.setProperty(TraceAggregationFilter.CONFIG_PROPERTY_NAME_MAX_COLLECTION_DURATION, "1");
-		final TraceAggregationFilter traceAggr = new TraceAggregationFilter(configTraceAggr, analysisController);
-
-		analysisController.connect(traceRecon, EventRecordTraceReconstructionFilter.OUTPUT_PORT_NAME_TRACE_VALID, traceAggr,
-				TraceAggregationFilter.INPUT_PORT_NAME_TRACES);
-		analysisController.connect(timeReader, TimeReader.OUTPUT_PORT_NAME_TIMESTAMPS, traceAggr, TraceAggregationFilter.INPUT_PORT_NAME_TIME_EVENT);
-
-		final Configuration confTeeFilter = new Configuration();
-		confTeeFilter.setProperty(TeeFilter.CONFIG_PROPERTY_NAME_STREAM, TeeFilter.CONFIG_PROPERTY_VALUE_STREAM_STDOUT);
-		// confTeeFilter.setProperty(TeeFilter.CONFIG_PROPERTY_NAME_STREAM, TeeFilter.CONFIG_PROPERTY_VALUE_STREAM_NULL);
-		final TeeFilter teeFilter = new TeeFilter(confTeeFilter, analysisController);
-		analysisController.connect(traceAggr, TraceAggregationFilter.OUTPUT_PORT_NAME_TRACES, teeFilter, TeeFilter.INPUT_PORT_NAME_EVENTS);
-	}
-}
diff --git a/frameworks/Kieker/src/kieker/Logger.java b/frameworks/Kieker/src/main/java/moobench/kieker/Logger.java
similarity index 87%
rename from frameworks/Kieker/src/kieker/Logger.java
rename to frameworks/Kieker/src/main/java/moobench/kieker/Logger.java
index 5502935..1ade793 100644
--- a/frameworks/Kieker/src/kieker/Logger.java
+++ b/frameworks/Kieker/src/main/java/moobench/kieker/Logger.java
@@ -13,12 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  ***************************************************************************/
-
-package kieker;
+package moobench.kieker;
 
 import java.io.IOException;
 
-import mooBench.benchmark.Benchmark;
+import moobench.benchmark.BenchmarkMain;
 
 /**
  * @author Jan Waller
@@ -28,7 +27,7 @@ public class Logger implements Runnable {
 	public void run() {
 		try {
 			java.util.logging.LogManager.getLogManager().readConfiguration(
-					Benchmark.class.getClassLoader().getResourceAsStream("META-INF/kieker.logging.properties"));
+					BenchmarkMain.class.getClassLoader().getResourceAsStream("META-INF/kieker.logging.properties"));
 		} catch (final IOException ex) {
 			java.util.logging.Logger.getAnonymousLogger().log(java.util.logging.Level.SEVERE, "Could not load default logging.properties file", ex);
 		}
diff --git a/frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestConfiguration1.java b/frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestConfiguration1.java
new file mode 100644
index 0000000..0729de7
--- /dev/null
+++ b/frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestConfiguration1.java
@@ -0,0 +1,15 @@
+package moobench.kieker.tcp;
+
+import kieker.analysis.source.tcp.MultipleConnectionTcpSourceStage;
+import kieker.analysisteetime.plugin.filter.forward.CountingFilter;
+import teetime.framework.Configuration;
+
+public class TestConfiguration1 extends Configuration {
+
+	public TestConfiguration1(int inputPort, int bufferSize) {
+		MultipleConnectionTcpSourceStage source = new MultipleConnectionTcpSourceStage(inputPort, bufferSize, null);
+		CountingFilter counting = new CountingFilter();
+		
+		connectPorts(source.getOutputPort(), counting.getInputPort());
+	}
+}
diff --git a/frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestConfiguration2.java b/frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestConfiguration2.java
new file mode 100644
index 0000000..b553900
--- /dev/null
+++ b/frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestConfiguration2.java
@@ -0,0 +1,45 @@
+/**
+ * 
+ */
+package moobench.kieker.tcp;
+
+import java.util.concurrent.TimeUnit;
+
+import kieker.analysis.source.tcp.MultipleConnectionTcpSourceStage;
+import teetime.framework.Configuration;
+
+/**
+ * @author reiner
+ *
+ */
+public class TestConfiguration2 extends Configuration {
+
+	public TestConfiguration2(int inputPort, int bufferSize) {
+		MultipleConnectionTcpSourceStage reader = new MultipleConnectionTcpSourceStage(inputPort, bufferSize, null);
+/*
+		final Configuration timeConfig = new Configuration();
+		final TimeReader timeReader = new TimeReader(timeConfig, analysisController);
+
+		final Configuration configTraceRecon = new Configuration();
+		configTraceRecon.setProperty(EventRecordTraceReconstructionFilter.CONFIG_PROPERTY_NAME_TIMEUNIT, TimeUnit.SECONDS.name());
+		configTraceRecon.setProperty(EventRecordTraceReconstructionFilter.CONFIG_PROPERTY_NAME_MAX_TRACE_DURATION, "1");
+		configTraceRecon.setProperty(EventRecordTraceReconstructionFilter.CONFIG_PROPERTY_NAME_MAX_TRACE_TIMEOUT, "1");
+		final EventRecordTraceReconstructionFilter traceRecon = new EventRecordTraceReconstructionFilter(configTraceRecon, analysisController);
+
+		analysisController.connect(reader, TCPReader.OUTPUT_PORT_NAME_RECORDS, traceRecon, EventRecordTraceReconstructionFilter.INPUT_PORT_NAME_TRACE_RECORDS);
+		analysisController.connect(timeReader, TimeReader.OUTPUT_PORT_NAME_TIMESTAMPS, traceRecon, EventRecordTraceReconstructionFilter.INPUT_PORT_NAME_TIME_EVENT);
+
+		final Configuration counterConfig = new Configuration();
+		final AnalysisThroughputFilter through = new AnalysisThroughputFilter(counterConfig, analysisController);
+		analysisController.connect(traceRecon, EventRecordTraceReconstructionFilter.OUTPUT_PORT_NAME_TRACE_VALID, through,
+				AnalysisThroughputFilter.INPUT_PORT_NAME_OBJECTS);
+		analysisController.connect(timeReader, TimeReader.OUTPUT_PORT_NAME_TIMESTAMPS, through, AnalysisThroughputFilter.INPUT_PORT_NAME_TIME);
+
+		final Configuration confTeeFilter = new Configuration();
+		confTeeFilter.setProperty(TeeFilter.CONFIG_PROPERTY_NAME_STREAM, TeeFilter.CONFIG_PROPERTY_VALUE_STREAM_STDOUT);
+		// confTeeFilter.setProperty(TeeFilter.CONFIG_PROPERTY_NAME_STREAM, TeeFilter.CONFIG_PROPERTY_VALUE_STREAM_NULL);
+		final TeeFilter teeFilter = new TeeFilter(confTeeFilter, analysisController);
+		analysisController.connect(through, AnalysisThroughputFilter.OUTPUT_PORT_NAME_THROUGHPUT, teeFilter, TeeFilter.INPUT_PORT_NAME_EVENTS);*/
+	
+	}
+}
diff --git a/frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestConfiguration3.java b/frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestConfiguration3.java
new file mode 100644
index 0000000..a33a4d6
--- /dev/null
+++ b/frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestConfiguration3.java
@@ -0,0 +1,42 @@
+package moobench.kieker.tcp;
+
+import java.util.concurrent.TimeUnit;
+
+import kieker.analysis.source.tcp.MultipleConnectionTcpSourceStage;
+import teetime.framework.Configuration;
+
+public class TestConfiguration3 extends Configuration {
+
+	public TestConfiguration3(int inputPort, int bufferSize) {
+		MultipleConnectionTcpSourceStage source = new MultipleConnectionTcpSourceStage(inputPort, bufferSize, null);
+	
+		/*
+			final Configuration timeConfig = new Configuration();
+		final TimeReader timeReader = new TimeReader(timeConfig, analysisController);
+
+		final Configuration configTraceRecon = new Configuration();
+		configTraceRecon.setProperty(EventRecordTraceReconstructionFilter.CONFIG_PROPERTY_NAME_TIMEUNIT, TimeUnit.SECONDS.name());
+		configTraceRecon.setProperty(EventRecordTraceReconstructionFilter.CONFIG_PROPERTY_NAME_MAX_TRACE_DURATION, "1");
+		configTraceRecon.setProperty(EventRecordTraceReconstructionFilter.CONFIG_PROPERTY_NAME_MAX_TRACE_TIMEOUT, "1");
+		final EventRecordTraceReconstructionFilter traceRecon = new EventRecordTraceReconstructionFilter(configTraceRecon, analysisController);
+
+		analysisController.connect(reader, TCPReader.OUTPUT_PORT_NAME_RECORDS, traceRecon, EventRecordTraceReconstructionFilter.INPUT_PORT_NAME_TRACE_RECORDS);
+		analysisController.connect(timeReader, TimeReader.OUTPUT_PORT_NAME_TIMESTAMPS, traceRecon, EventRecordTraceReconstructionFilter.INPUT_PORT_NAME_TIME_EVENT);
+
+		final Configuration configTraceAggr = new Configuration();
+		configTraceAggr.setProperty(TraceAggregationFilter.CONFIG_PROPERTY_NAME_TIMEUNIT, TimeUnit.SECONDS.name());
+		configTraceAggr.setProperty(TraceAggregationFilter.CONFIG_PROPERTY_NAME_MAX_COLLECTION_DURATION, "1");
+		final TraceAggregationFilter traceAggr = new TraceAggregationFilter(configTraceAggr, analysisController);
+
+		analysisController.connect(traceRecon, EventRecordTraceReconstructionFilter.OUTPUT_PORT_NAME_TRACE_VALID, traceAggr,
+				TraceAggregationFilter.INPUT_PORT_NAME_TRACES);
+		analysisController.connect(timeReader, TimeReader.OUTPUT_PORT_NAME_TIMESTAMPS, traceAggr, TraceAggregationFilter.INPUT_PORT_NAME_TIME_EVENT);
+
+		final Configuration confTeeFilter = new Configuration();
+		confTeeFilter.setProperty(TeeFilter.CONFIG_PROPERTY_NAME_STREAM, TeeFilter.CONFIG_PROPERTY_VALUE_STREAM_STDOUT);
+		// confTeeFilter.setProperty(TeeFilter.CONFIG_PROPERTY_NAME_STREAM, TeeFilter.CONFIG_PROPERTY_VALUE_STREAM_NULL);
+		final TeeFilter teeFilter = new TeeFilter(confTeeFilter, analysisController);
+		analysisController.connect(traceAggr, TraceAggregationFilter.OUTPUT_PORT_NAME_TRACES, teeFilter, TeeFilter.INPUT_PORT_NAME_EVENTS);
+*/
+	}
+}
diff --git a/frameworks/Kieker/src/kieker/tcp/TestExperiment0.java b/frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestExperiment0.java
similarity index 99%
rename from frameworks/Kieker/src/kieker/tcp/TestExperiment0.java
rename to frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestExperiment0.java
index f4b174b..0460b57 100644
--- a/frameworks/Kieker/src/kieker/tcp/TestExperiment0.java
+++ b/frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestExperiment0.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package kieker.tcp;
+package moobench.kieker.tcp;
 
 import java.io.IOException;
 import java.net.InetSocketAddress;
diff --git a/frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestExperiment1.java b/frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestExperiment1.java
new file mode 100644
index 0000000..b4a09a8
--- /dev/null
+++ b/frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestExperiment1.java
@@ -0,0 +1,35 @@
+/***************************************************************************
+ * Copyright 2014 Kieker Project (http://kieker-monitoring.net)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ***************************************************************************/
+
+package moobench.kieker.tcp;
+
+import teetime.framework.Execution;
+
+// Command-Line:
+// java -javaagent:lib/kieker-1.10-SNAPSHOT_aspectj.jar -Dkieker.monitoring.writer=kieker.monitoring.writer.tcp.TCPWriter -Dkieker.monitoring.writer.tcp.TCPWriter.QueueFullBehavior=1 -jar dist\OverheadEvaluationMicrobenchmark.jar --recursiondepth 10 --totalthreads 1 --methodtime 0 --output-filename raw.csv --totalcalls 10000000
+/**
+ * @author Jan Waller
+ */
+public final class TestExperiment1 {
+
+	private TestExperiment1() {}
+
+	public static void main(final String[] args) {
+		TestConfiguration1 config = new TestConfiguration1(Integer.parseInt(args[0]), 8192);
+		Execution<TestConfiguration1> execution = new Execution<TestConfiguration1>(config);
+		execution.executeBlocking();
+	}
+}
diff --git a/frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestExperiment2.java b/frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestExperiment2.java
new file mode 100644
index 0000000..663b038
--- /dev/null
+++ b/frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestExperiment2.java
@@ -0,0 +1,38 @@
+/***************************************************************************
+ * Copyright 2014 Kieker Project (http://kieker-monitoring.net)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ***************************************************************************/
+
+package moobench.kieker.tcp;
+
+import java.util.concurrent.TimeUnit;
+
+import teetime.framework.Execution;
+
+// Command-Line:
+// java -javaagent:lib/kieker-1.10-SNAPSHOT_aspectj.jar -Dkieker.monitoring.writer=kieker.monitoring.writer.tcp.TCPWriter -Dkieker.monitoring.writer.tcp.TCPWriter.QueueFullBehavior=1 -jar dist\OverheadEvaluationMicrobenchmark.jar --recursiondepth 10 --totalthreads 1 --methodtime 0 --output-filename raw.csv --totalcalls 10000000
+/**
+ * @author Jan Waller
+ */
+public final class TestExperiment2 {
+	
+	private TestExperiment2() {}
+
+	public static void main(final String[] args) {
+		TestConfiguration2 config = new TestConfiguration2(Integer.parseInt(args[0]), 8192);
+		Execution<TestConfiguration2> execution = new Execution<TestConfiguration2>(config);
+		execution.executeBlocking();
+	}
+
+}
diff --git a/frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestExperiment3.java b/frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestExperiment3.java
new file mode 100644
index 0000000..7a854fd
--- /dev/null
+++ b/frameworks/Kieker/src/main/java/moobench/kieker/tcp/TestExperiment3.java
@@ -0,0 +1,38 @@
+/***************************************************************************
+ * Copyright 2014 Kieker Project (http://kieker-monitoring.net)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ***************************************************************************/
+
+package moobench.kieker.tcp;
+
+import java.util.concurrent.TimeUnit;
+
+import teetime.framework.Execution;
+
+// Command-Line:
+// java -javaagent:lib/kieker-1.10-SNAPSHOT_aspectj.jar -Dkieker.monitoring.writer=kieker.monitoring.writer.tcp.TCPWriter -Dkieker.monitoring.writer.tcp.TCPWriter.QueueFullBehavior=1 -jar dist\OverheadEvaluationMicrobenchmark.jar --recursiondepth 10 --totalthreads 1 --methodtime 0 --output-filename raw.csv --totalcalls 10000000
+/**
+ * @author Jan Waller
+ */
+public final class TestExperiment3 {
+
+	private TestExperiment3() {}
+
+	public static void main(final String[] args) {
+		TestConfiguration3 config = new TestConfiguration3(Integer.parseInt(args[0]), 8192);
+		Execution<TestConfiguration3> execution = new Execution<TestConfiguration3>(config);
+		execution.executeBlocking();
+	}
+
+}
diff --git a/frameworks/SPASSmeter/build.gradle b/frameworks/SPASSmeter/build.gradle
new file mode 100644
index 0000000..105b078
--- /dev/null
+++ b/frameworks/SPASSmeter/build.gradle
@@ -0,0 +1,8 @@
+plugins {
+	id 'java'
+	id 'java-library'
+}
+
+dependencies {
+
+}
diff --git a/frameworks/inspectIT/build.gradle b/frameworks/inspectIT/build.gradle
new file mode 100644
index 0000000..105b078
--- /dev/null
+++ b/frameworks/inspectIT/build.gradle
@@ -0,0 +1,8 @@
+plugins {
+	id 'java'
+	id 'java-library'
+}
+
+dependencies {
+
+}
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000000000000000000000000000000000000..62d4c053550b91381bbd28b1afc82d634bf73a8a
GIT binary patch
literal 58910
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

literal 0
HcmV?d00001

diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..622ab64
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
new file mode 100755
index 0000000..fbd7c51
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,185 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+    echo "$*"
+}
+
+die () {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+  NONSTOP* )
+    nonstop=true
+    ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+    
+    JAVACMD=`cygpath --unix "$JAVACMD"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=`expr $i + 1`
+    done
+    case $i in
+        0) set -- ;;
+        1) set -- "$args0" ;;
+        2) set -- "$args0" "$args1" ;;
+        3) set -- "$args0" "$args1" "$args2" ;;
+        4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Escape application args
+save () {
+    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+    echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 0000000..5093609
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,104 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem      https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem  Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/lib/commons-cli-1.2.LICENSE b/lib/commons-cli-1.2.LICENSE
deleted file mode 100644
index 9e1db3b..0000000
--- a/lib/commons-cli-1.2.LICENSE
+++ /dev/null
@@ -1,207 +0,0 @@
-The Apache Software License - ASL - v2.0
-Project: http://commons.apache.org/cli/
-Description: Apache Commons CLI provides a simple API for working with the command line arguments and options.
-License: http://www.apache.org/licenses/LICENSE-2.0.txt
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
diff --git a/lib/commons-cli-1.2.jar b/lib/commons-cli-1.2.jar
deleted file mode 100644
index ce4b9fffe40c41669797cd806ac989471b2acd84..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 41123
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

diff --git a/moobench/build.gradle b/moobench/build.gradle
new file mode 100644
index 0000000..1dbd5d6
--- /dev/null
+++ b/moobench/build.gradle
@@ -0,0 +1,12 @@
+plugins {
+	id 'java'
+	id 'application'
+}
+
+dependencies {
+    implementation 'com.beust:jcommander:1.72'
+}
+
+application {
+    mainClass = 'moobench.benchmark.BenchmarkMain'
+}
diff --git a/src/mooBench/monitoredApplication/MonitoredClass.java b/moobench/src/main/java/moobench/application/MonitoredClass.java
similarity index 95%
rename from src/mooBench/monitoredApplication/MonitoredClass.java
rename to moobench/src/main/java/moobench/application/MonitoredClass.java
index db4be42..ce87df4 100644
--- a/src/mooBench/monitoredApplication/MonitoredClass.java
+++ b/moobench/src/main/java/moobench/application/MonitoredClass.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package mooBench.monitoredApplication;
+package moobench.application;
 
 /**
  * @author Jan Waller
diff --git a/src/mooBench/monitoredApplication/MonitoredClassSimple.java b/moobench/src/main/java/moobench/application/MonitoredClassSimple.java
similarity index 97%
rename from src/mooBench/monitoredApplication/MonitoredClassSimple.java
rename to moobench/src/main/java/moobench/application/MonitoredClassSimple.java
index 3227e38..8ea21fa 100644
--- a/src/mooBench/monitoredApplication/MonitoredClassSimple.java
+++ b/moobench/src/main/java/moobench/application/MonitoredClassSimple.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package mooBench.monitoredApplication;
+package moobench.application;
 
 /**
  * @author Jan Waller
diff --git a/src/mooBench/monitoredApplication/MonitoredClassThreaded.java b/moobench/src/main/java/moobench/application/MonitoredClassThreaded.java
similarity index 97%
rename from src/mooBench/monitoredApplication/MonitoredClassThreaded.java
rename to moobench/src/main/java/moobench/application/MonitoredClassThreaded.java
index 869e0d8..060fda2 100644
--- a/src/mooBench/monitoredApplication/MonitoredClassThreaded.java
+++ b/moobench/src/main/java/moobench/application/MonitoredClassThreaded.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package mooBench.monitoredApplication;
+package moobench.application;
 
 import java.lang.management.ManagementFactory;
 import java.lang.management.ThreadMXBean;
diff --git a/moobench/src/main/java/moobench/benchmark/BenchmarkMain.java b/moobench/src/main/java/moobench/benchmark/BenchmarkMain.java
new file mode 100644
index 0000000..ff3eebb
--- /dev/null
+++ b/moobench/src/main/java/moobench/benchmark/BenchmarkMain.java
@@ -0,0 +1,158 @@
+/***************************************************************************
+ * Copyright 2014 Kieker Project (http://kieker-monitoring.net)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ***************************************************************************/
+
+package moobench.benchmark;
+
+import java.io.BufferedOutputStream;
+import java.io.PrintStream;
+import java.nio.file.Files;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+import com.beust.jcommander.JCommander;
+import com.beust.jcommander.ParameterException;
+
+import moobench.application.MonitoredClass;
+import moobench.application.MonitoredClassThreaded;
+
+/**
+ * @author Jan Waller
+ */
+public final class BenchmarkMain {
+	private static final String ENCODING = "UTF-8";
+
+	private static PrintStream ps = null;
+	private static String outputFn = null;
+	private static int totalThreads = 0;
+	private static int totalCalls = 0;
+	private static long methodTime = 0;
+	private static int recursionDepth = 0;
+	private static boolean quickstart = false;
+	private static boolean forceTerminate = false;
+	private static MonitoredClass mc = null;
+
+	private static BenchmarkParameter parameter = new BenchmarkParameter();
+
+	private BenchmarkMain() {
+	}
+
+	public static void main(final String[] args) throws InterruptedException {
+
+		// 1. Preparations
+		BenchmarkMain.parseAndInitializeArguments(args);
+
+		System.out.println(" # Experiment run configuration:"); // NOPMD (System.out)
+		System.out.println(" # 1. Output filename " + BenchmarkMain.outputFn); // NOPMD (System.out)
+		System.out.println(" # 2. Recursion Depth " + BenchmarkMain.recursionDepth); // NOPMD (System.out)
+		System.out.println(" # 3. Threads " + BenchmarkMain.totalThreads); // NOPMD (System.out)
+		System.out.println(" # 4. Total-Calls " + BenchmarkMain.totalCalls); // NOPMD (System.out)
+		System.out.println(" # 5. Method-Time " + BenchmarkMain.methodTime); // NOPMD (System.out)
+
+		// 2. Initialize Threads and Classes
+		final CountDownLatch doneSignal = new CountDownLatch(BenchmarkMain.totalThreads);
+		final BenchmarkingThread[] benchmarkingThreads = new BenchmarkingThread[BenchmarkMain.totalThreads];
+		final Thread[] threads = new Thread[BenchmarkMain.totalThreads];
+		for (int i = 0; i < BenchmarkMain.totalThreads; i++) {
+			benchmarkingThreads[i] = new BenchmarkingThreadNano(BenchmarkMain.mc, BenchmarkMain.totalCalls,
+					BenchmarkMain.methodTime, BenchmarkMain.recursionDepth, doneSignal);
+			threads[i] = new Thread(benchmarkingThreads[i], String.valueOf(i + 1));
+		}
+		if (!quickstart) {
+			for (int l = 0; l < 4; l++) {
+				{ // NOCS (reserve mem only within the block)
+					final long freeMemChunks = Runtime.getRuntime().freeMemory() >> 27;
+					// System.out.println("Free-Mem: " + Runtime.getRuntime().freeMemory());
+					final int memSize = 128 * 1024 * 128; // memSize * 8 = total Bytes -> 128MB
+					for (int j = 0; j < freeMemChunks; j++) {
+						final long[] grabMemory = new long[memSize];
+						for (int i = 0; i < memSize; i++) {
+							grabMemory[i] = System.nanoTime();
+						}
+					}
+					// System.out.println("done grabbing memory...");
+					// System.out.println("Free-Mem: " + Runtime.getRuntime().freeMemory());
+				}
+				Thread.sleep(5000);
+			}
+		}
+		final long startTime = System.currentTimeMillis();
+		System.out.println(" # 6. Starting benchmark ..."); // NOPMD (System.out)
+		// 3. Starting Threads
+		for (int i = 0; i < BenchmarkMain.totalThreads; i++) {
+			threads[i].start();
+		}
+
+		// 4. Wait for all Threads
+		try {
+			doneSignal.await();
+		} catch (final InterruptedException e) {
+			e.printStackTrace(); // NOPMD (Stacktrace)
+			System.exit(-1);
+		}
+		final long totalTime = System.currentTimeMillis() - startTime;
+		System.out.println(" #    done (" + TimeUnit.MILLISECONDS.toSeconds(totalTime) + " s)"); // NOPMD
+																									// (System.out)
+
+		// 5. Print experiment statistics
+		System.out.print(" # 7. Writing results ... "); // NOPMD (System.out)
+		// CSV Format: configuration;order_index;Thread-ID;duration_nsec
+		for (int h = 0; h < BenchmarkMain.totalThreads; h++) {
+			final BenchmarkingThread thread = benchmarkingThreads[h];
+			for (int i = 0; i < BenchmarkMain.totalCalls; i++) {
+				final String line = threads[h].getName() + ";" + thread.print(i, ";");
+				BenchmarkMain.ps.println(line);
+			}
+		}
+		BenchmarkMain.ps.close();
+
+		System.out.println("done"); // NOPMD (System.out)
+		System.out.println(" # "); // NOPMD (System.out)
+
+		if (forceTerminate) {
+			System.exit(0);
+		}
+	}
+
+	public static void parseAndInitializeArguments(final String[] argv) {
+		JCommander commander = null;
+		try {
+			commander = JCommander.newBuilder().addObject(parameter).build();
+			commander.parse(argv);
+
+			BenchmarkMain.ps = new PrintStream(
+					new BufferedOutputStream(Files.newOutputStream(parameter.getOutputFile().toPath()), 8192 * 8),
+					false, BenchmarkMain.ENCODING);
+			if (null != parameter.getApplicationClassname()) {
+				mc = ((MonitoredClass) Class.forName(parameter.getApplicationClassname()).newInstance());
+			} else {
+				mc = new MonitoredClassThreaded();
+			}
+			if (null != parameter.getRunnableClassname()) {
+				((Runnable) Class.forName(parameter.getRunnableClassname()).newInstance()).run();
+			}
+		} catch (ParameterException ex) {
+			if (commander != null)
+				commander.usage();
+		} catch (final Exception ex) { // NOCS (e.g., IOException, ParseException,
+										// NumberFormatException)
+			if (commander != null) {
+				commander.usage();
+			}
+			System.out.println(ex.toString()); // NOPMD (Stacktrace)
+			System.exit(-1);
+		}
+	}
+}
diff --git a/moobench/src/main/java/moobench/benchmark/BenchmarkParameter.java b/moobench/src/main/java/moobench/benchmark/BenchmarkParameter.java
new file mode 100644
index 0000000..5ffe44f
--- /dev/null
+++ b/moobench/src/main/java/moobench/benchmark/BenchmarkParameter.java
@@ -0,0 +1,91 @@
+/**
+ * 
+ */
+package moobench.benchmark;
+
+import java.io.File;
+
+import com.beust.jcommander.Parameter;
+import com.beust.jcommander.converters.FileConverter;
+
+/**
+ * @author Reiner Jung
+ *
+ */
+public class BenchmarkParameter {
+	
+	@Parameter(names = { "--totalCalls", "-c" }, required = true, description = "Number of total method calls performed.")
+	long totalCalls;
+	
+	@Parameter(names = { "--methodtime", "-m" }, required = true, description = "Time a method call takes.")
+	long methodTime;
+	
+	@Parameter(names = { "--totalthreads", "-t" }, required = true, description = "Number of threads started.")
+	long totalThreads;
+			
+	@Parameter(names = { "--recursiondepth", "-d" }, required = true, description = "Depth of recursion performed.")
+	long recursionDepth;
+
+	@Parameter(names = { "--output-filename", "-o" }, required = true, converter = FileConverter.class, 
+			description = "Filename of results file. Output is appended if file exists.")
+	File outputFile;
+	
+	@Parameter(names = { "--quickstart", "-q" }, required = false, description = "Skips initial garbage collection.")
+	boolean quickstart;
+	
+	@Parameter(names = { "--forceTerminate", "-f" }, required = false, description = "Forces a termination at the end of the benchmark.")
+	boolean forceTerminate;
+    
+	@Parameter(names = { "--runnable", "-r" }, required = false,
+			description = "Class implementing the Runnable interface. run() method is executed before the benchmark starts.")
+	String runnableClassname;
+	
+    @Parameter(names = { "--application", "-a" }, required = false, description = "Class implementing the MonitoredClass interface.")
+    String applicationClassname;
+    
+    @Parameter(names = { "--benchmarkthread", "-b" }, required = false, description = "Class implementing the BenchmarkingThread interface.")
+    String benchmarkClassname;
+
+	public long getTotalCalls() {
+		return totalCalls;
+	}
+
+	public long getMethodTime() {
+		return methodTime;
+	}
+
+	public long getTotalThreads() {
+		return totalThreads;
+	}
+
+	public long getRecursionDepth() {
+		return recursionDepth;
+	}
+
+	public File getOutputFile() {
+		return outputFile;
+	}
+
+	public boolean isQuickstart() {
+		return quickstart;
+	}
+
+	public boolean isForceTerminate() {
+		return forceTerminate;
+	}
+
+	public String getRunnableClassname() {
+		return runnableClassname;
+	}
+
+	public String getApplicationClassname() {
+		return applicationClassname;
+	}
+
+	public String getBenchmarkClassname() {
+		return benchmarkClassname;
+	}
+    
+    
+    
+}
diff --git a/src/mooBench/benchmark/BenchmarkingThread.java b/moobench/src/main/java/moobench/benchmark/BenchmarkingThread.java
similarity index 97%
rename from src/mooBench/benchmark/BenchmarkingThread.java
rename to moobench/src/main/java/moobench/benchmark/BenchmarkingThread.java
index 043ad1a..97b1263 100644
--- a/src/mooBench/benchmark/BenchmarkingThread.java
+++ b/moobench/src/main/java/moobench/benchmark/BenchmarkingThread.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package mooBench.benchmark;
+package moobench.benchmark;
 
 /**
  * @author Jan Waller, Christian Wulf
diff --git a/src/mooBench/benchmark/BenchmarkingThreadMilli.java b/moobench/src/main/java/moobench/benchmark/BenchmarkingThreadMilli.java
similarity index 96%
rename from src/mooBench/benchmark/BenchmarkingThreadMilli.java
rename to moobench/src/main/java/moobench/benchmark/BenchmarkingThreadMilli.java
index 9f5e249..6fe6dde 100644
--- a/src/mooBench/benchmark/BenchmarkingThreadMilli.java
+++ b/moobench/src/main/java/moobench/benchmark/BenchmarkingThreadMilli.java
@@ -14,11 +14,11 @@
  * limitations under the License.
  ***************************************************************************/
 
-package mooBench.benchmark;
+package moobench.benchmark;
 
 import java.util.concurrent.CountDownLatch;
 
-import mooBench.monitoredApplication.MonitoredClass;
+import moobench.application.MonitoredClass;
 
 /**
  * @author Jan Waller
diff --git a/src/mooBench/benchmark/BenchmarkingThreadNano.java b/moobench/src/main/java/moobench/benchmark/BenchmarkingThreadNano.java
similarity index 97%
rename from src/mooBench/benchmark/BenchmarkingThreadNano.java
rename to moobench/src/main/java/moobench/benchmark/BenchmarkingThreadNano.java
index ad135b3..7baf0b6 100644
--- a/src/mooBench/benchmark/BenchmarkingThreadNano.java
+++ b/moobench/src/main/java/moobench/benchmark/BenchmarkingThreadNano.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  ***************************************************************************/
 
-package mooBench.benchmark;
+package moobench.benchmark;
 
 import java.lang.management.GarbageCollectorMXBean;
 import java.lang.management.ManagementFactory;
@@ -22,7 +22,7 @@ import java.lang.management.MemoryMXBean;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
 
-import mooBench.monitoredApplication.MonitoredClass;
+import moobench.application.MonitoredClass;
 
 /**
  * @author Jan Waller, Aike Sass, Christian Wulf
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 0000000..e7d9c6a
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1,16 @@
+/*
+ * This file was generated by the Gradle 'init' task.
+ *
+ * The settings file is used to specify which projects to include in your build.
+ *
+ * Detailed information about configuring a multi-project build in Gradle can be found
+ * in the user manual at https://docs.gradle.org/6.5/userguide/multi_project_builds.html
+ */
+
+rootProject.name = 'moobench'
+
+include 'moobench'
+include 'frameworks:inspectIT'
+include 'frameworks:Kieker'
+include 'frameworks:SPASSmeter'
+
diff --git a/src/META-INF/.gitignore b/src/META-INF/.gitignore
deleted file mode 100644
index 5e7d273..0000000
--- a/src/META-INF/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-# Ignore everything in this directory
-*
-# Except this file
-!.gitignore
diff --git a/src/mooBench/benchmark/Benchmark.java b/src/mooBench/benchmark/Benchmark.java
deleted file mode 100644
index b3377ea..0000000
--- a/src/mooBench/benchmark/Benchmark.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/***************************************************************************
- * Copyright 2014 Kieker Project (http://kieker-monitoring.net)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ***************************************************************************/
-
-package mooBench.benchmark;
-
-import java.io.BufferedOutputStream;
-import java.io.FileOutputStream;
-import java.io.PrintStream;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.commons.cli.BasicParser;
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.CommandLineParser;
-import org.apache.commons.cli.HelpFormatter;
-import org.apache.commons.cli.OptionBuilder;
-import org.apache.commons.cli.Options;
-
-import mooBench.monitoredApplication.MonitoredClass;
-import mooBench.monitoredApplication.MonitoredClassThreaded;
-
-/**
- * @author Jan Waller
- */
-public final class Benchmark {
-  private static final String ENCODING = "UTF-8";
-
-  private static PrintStream ps = null;
-  private static String outputFn = null;
-  private static int totalThreads = 0;
-  private static int totalCalls = 0;
-  private static long methodTime = 0;
-  private static int recursionDepth = 0;
-  private static boolean quickstart = false;
-  private static boolean forceTerminate = false;
-  private static MonitoredClass mc = null;
-
-  private Benchmark() {}
-
-  public static void main(final String[] args) throws InterruptedException {
-
-    // 1. Preparations
-    Benchmark.parseAndInitializeArguments(args);
-
-    System.out.println(" # Experiment run configuration:"); // NOPMD (System.out)
-    System.out.println(" # 1. Output filename " + Benchmark.outputFn); // NOPMD (System.out)
-    System.out.println(" # 2. Recursion Depth " + Benchmark.recursionDepth); // NOPMD (System.out)
-    System.out.println(" # 3. Threads " + Benchmark.totalThreads); // NOPMD (System.out)
-    System.out.println(" # 4. Total-Calls " + Benchmark.totalCalls); // NOPMD (System.out)
-    System.out.println(" # 5. Method-Time " + Benchmark.methodTime); // NOPMD (System.out)
-
-    // 2. Initialize Threads and Classes
-    final CountDownLatch doneSignal = new CountDownLatch(Benchmark.totalThreads);
-    final BenchmarkingThread[] benchmarkingThreads = new BenchmarkingThread[Benchmark.totalThreads];
-    final Thread[] threads = new Thread[Benchmark.totalThreads];
-    for (int i = 0; i < Benchmark.totalThreads; i++) {
-      benchmarkingThreads[i] = new BenchmarkingThreadNano(Benchmark.mc, Benchmark.totalCalls,
-          Benchmark.methodTime, Benchmark.recursionDepth, doneSignal);
-      threads[i] = new Thread(benchmarkingThreads[i], String.valueOf(i + 1));
-    }
-    if (!quickstart) {
-      for (int l = 0; l < 4; l++) {
-        { // NOCS (reserve mem only within the block)
-          final long freeMemChunks = Runtime.getRuntime().freeMemory() >> 27;
-          // System.out.println("Free-Mem: " + Runtime.getRuntime().freeMemory());
-          final int memSize = 128 * 1024 * 128; // memSize * 8 = total Bytes -> 128MB
-          for (int j = 0; j < freeMemChunks; j++) {
-            final long[] grabMemory = new long[memSize];
-            for (int i = 0; i < memSize; i++) {
-              grabMemory[i] = System.nanoTime();
-            }
-          }
-          // System.out.println("done grabbing memory...");
-          // System.out.println("Free-Mem: " + Runtime.getRuntime().freeMemory());
-        }
-        Thread.sleep(5000);
-      }
-    }
-    final long startTime = System.currentTimeMillis();
-    System.out.println(" # 6. Starting benchmark ..."); // NOPMD (System.out)
-    // 3. Starting Threads
-    for (int i = 0; i < Benchmark.totalThreads; i++) {
-      threads[i].start();
-    }
-
-    // 4. Wait for all Threads
-    try {
-      doneSignal.await();
-    } catch (final InterruptedException e) {
-      e.printStackTrace(); // NOPMD (Stacktrace)
-      System.exit(-1);
-    }
-    final long totalTime = System.currentTimeMillis() - startTime;
-    System.out.println(" #    done (" + TimeUnit.MILLISECONDS.toSeconds(totalTime) + " s)"); // NOPMD
-                                                                                             // (System.out)
-
-    // 5. Print experiment statistics
-    System.out.print(" # 7. Writing results ... "); // NOPMD (System.out)
-    // CSV Format: configuration;order_index;Thread-ID;duration_nsec
-    for (int h = 0; h < Benchmark.totalThreads; h++) {
-      final BenchmarkingThread thread = benchmarkingThreads[h];
-      for (int i = 0; i < Benchmark.totalCalls; i++) {
-        final String line = threads[h].getName() + ";" + thread.print(i, ";");
-        Benchmark.ps.println(line);
-      }
-    }
-    Benchmark.ps.close();
-
-    System.out.println("done"); // NOPMD (System.out)
-    System.out.println(" # "); // NOPMD (System.out)
-
-    if (forceTerminate) {
-      System.exit(0);
-    }
-  }
-
-  public static void parseAndInitializeArguments(final String[] args) {
-    final Options cmdlOpts = new Options();
-    OptionBuilder.withLongOpt("totalcalls");
-    OptionBuilder.withArgName("calls");
-    OptionBuilder.hasArg(true);
-    OptionBuilder.isRequired(true);
-    OptionBuilder
-        .withDescription("Number of total method calls performed.");
-    OptionBuilder.withValueSeparator('=');
-    cmdlOpts.addOption(OptionBuilder.create("t"));
-    OptionBuilder.withLongOpt("methodtime");
-    OptionBuilder.withArgName("time");
-    OptionBuilder.hasArg(true);
-    OptionBuilder.isRequired(true);
-    OptionBuilder.withDescription("Time a method call takes.");
-    OptionBuilder
-        .withValueSeparator('=');
-    cmdlOpts.addOption(OptionBuilder.create("m"));
-    OptionBuilder.withLongOpt("totalthreads");
-    OptionBuilder.withArgName("threads");
-    OptionBuilder.hasArg(true);
-    OptionBuilder.isRequired(true);
-    OptionBuilder
-        .withDescription("Number of threads started.");
-    OptionBuilder.withValueSeparator('=');
-    cmdlOpts.addOption(OptionBuilder.create("h"));
-    OptionBuilder.withLongOpt("recursiondepth");
-    OptionBuilder.withArgName("depth");
-    OptionBuilder.hasArg(true);
-    OptionBuilder.isRequired(true);
-    OptionBuilder
-        .withDescription("Depth of recursion performed.");
-    OptionBuilder.withValueSeparator('=');
-    cmdlOpts.addOption(OptionBuilder.create("d"));
-    OptionBuilder.withLongOpt("output-filename");
-    OptionBuilder.withArgName("filename");
-    OptionBuilder.hasArg(true);
-    OptionBuilder.isRequired(true);
-    OptionBuilder
-        .withDescription("Filename of results file. Output is appended if file exists.");
-    OptionBuilder.withValueSeparator('=');
-    cmdlOpts.addOption(OptionBuilder.create("o"));
-    OptionBuilder.withLongOpt("quickstart");
-    OptionBuilder.isRequired(false);
-    OptionBuilder.withDescription("Skips initial garbage collection.");
-    cmdlOpts.addOption(OptionBuilder.create("q"));
-    OptionBuilder.withLongOpt("forceTerminate");
-    OptionBuilder.isRequired(false);
-    OptionBuilder.withDescription("Forces a termination at the end of the benchmark.");
-    cmdlOpts.addOption(OptionBuilder
-        .create("f"));
-    OptionBuilder.withLongOpt("runnable");
-    OptionBuilder.withArgName("classname");
-    OptionBuilder.hasArg(true);
-    OptionBuilder.isRequired(false);
-    OptionBuilder
-        .withDescription(
-            "Class implementing the Runnable interface. run() method is executed before the benchmark starts.");
-    OptionBuilder.withValueSeparator('=');
-    cmdlOpts.addOption(OptionBuilder
-        .create("r"));
-    OptionBuilder.withLongOpt("application");
-    OptionBuilder.withArgName("classname");
-    OptionBuilder.hasArg(true);
-    OptionBuilder.isRequired(false);
-    OptionBuilder
-        .withDescription("Class implementing the MonitoredClass interface.");
-    OptionBuilder.withValueSeparator('=');
-    cmdlOpts.addOption(OptionBuilder
-        .create("a"));
-    OptionBuilder.withLongOpt("benchmarkthread");
-    OptionBuilder.withArgName("classname");
-    OptionBuilder.hasArg(true);
-    OptionBuilder.isRequired(false);
-    OptionBuilder
-        .withDescription("Class implementing the BenchmarkingThread interface.");
-    OptionBuilder.withValueSeparator('=');
-    cmdlOpts.addOption(OptionBuilder
-        .create("b"));
-    try {
-      CommandLine cmdl = null;
-      final CommandLineParser cmdlParser = new BasicParser();
-      cmdl = cmdlParser.parse(cmdlOpts, args);
-      Benchmark.outputFn = cmdl.getOptionValue("output-filename");
-      Benchmark.totalCalls = Integer.parseInt(cmdl.getOptionValue("totalcalls"));
-      Benchmark.methodTime = Integer.parseInt(cmdl.getOptionValue("methodtime"));
-      Benchmark.totalThreads = Integer.parseInt(cmdl.getOptionValue("totalthreads"));
-      Benchmark.recursionDepth = Integer.parseInt(cmdl.getOptionValue("recursiondepth"));
-      Benchmark.quickstart = cmdl.hasOption("quickstart");
-      Benchmark.forceTerminate = cmdl.hasOption("forceTerminate");
-      Benchmark.ps = new PrintStream(
-          new BufferedOutputStream(new FileOutputStream(Benchmark.outputFn, true), 8192 * 8), false,
-          Benchmark.ENCODING);
-      final String application = cmdl.getOptionValue("application");
-      if (null != application) {
-        mc = ((MonitoredClass) Class.forName(application).newInstance());
-      } else {
-        mc = new MonitoredClassThreaded();
-      }
-      final String clazzname = cmdl.getOptionValue("runnable");
-      if (null != clazzname) {
-        ((Runnable) Class.forName(clazzname).newInstance()).run();
-      }
-    } catch (final Exception ex) { // NOCS (e.g., IOException, ParseException,
-                                   // NumberFormatException)
-      new HelpFormatter().printHelp(Benchmark.class.getName(), cmdlOpts);
-      System.out.println(ex.toString()); // NOPMD (Stacktrace)
-      System.exit(-1);
-    }
-  }
-}
-- 
GitLab