summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-05-04 19:19:47 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2021-05-05 10:03:15 +0200
commit4a8b32d288ba3ee986ecef7933fa77554d34e762 (patch)
tree97b9be67e51c82b9c959efc5e464aaa8c53a57bf
parente021d46ab1601d0c3a00724358164483608f6297 (diff)
harness: Split harness into separate modules
This change splits the OpenDC Experiment Harness into separate modules. This prevents users from pulling in unnecessary dependencies when depending on the harness API.
-rw-r--r--buildSrc/src/main/kotlin/experiment-conventions.gradle.kts3
-rw-r--r--opendc-experiments/opendc-experiments-capelin/build.gradle.kts2
-rw-r--r--opendc-experiments/opendc-experiments-energy21/build.gradle.kts4
-rw-r--r--opendc-experiments/opendc-experiments-serverless20/build.gradle.kts4
-rw-r--r--opendc-harness/build.gradle.kts22
-rw-r--r--opendc-harness/opendc-harness-api/build.gradle.kts35
-rw-r--r--opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/api/ExperimentDefinition.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/api/ExperimentDefinition.kt)2
-rw-r--r--opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/api/Parameter.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/api/Parameter.kt)2
-rw-r--r--opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/api/Scenario.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/api/Scenario.kt)0
-rw-r--r--opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/api/Trial.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/api/Trial.kt)0
-rw-r--r--opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/dsl/Experiment.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/dsl/Experiment.kt)0
-rw-r--r--opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/dsl/ParameterProvider.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/dsl/ParameterProvider.kt)0
-rw-r--r--opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/dsl/Parameters.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/dsl/Parameters.kt)0
-rw-r--r--opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/internal/ParameterDelegate.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/internal/ParameterDelegate.kt)0
-rw-r--r--opendc-harness/opendc-harness-cli/build.gradle.kts39
-rw-r--r--opendc-harness/opendc-harness-cli/src/main/kotlin/org/opendc/harness/runner/cli/ConsoleExperimentReporter.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/runner/console/ConsoleExperimentReporter.kt)2
-rw-r--r--opendc-harness/opendc-harness-cli/src/main/kotlin/org/opendc/harness/runner/cli/ConsoleRunner.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/runner/console/ConsoleRunner.kt)2
-rw-r--r--opendc-harness/opendc-harness-cli/src/main/resources/log4j2.xml (renamed from opendc-harness/src/main/resources/log4j2.xml)4
-rw-r--r--opendc-harness/opendc-harness-engine/build.gradle.kts39
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/ExperimentEngine.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/engine/ExperimentEngine.kt)0
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/ExperimentEngineLauncher.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/engine/ExperimentEngineLauncher.kt)2
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/ExperimentExecutionListener.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/engine/ExperimentExecutionListener.kt)0
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/discovery/Discovery.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/engine/discovery/Discovery.kt)0
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoveryFilter.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoveryFilter.kt)0
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoveryProvider.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoveryProvider.kt)2
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoveryRequest.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoveryRequest.kt)0
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoverySelector.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoverySelector.kt)0
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/internal/CompositeDiscovery.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/internal/CompositeDiscovery.kt)2
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/internal/CompositeExperimentExecutionListener.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/internal/CompositeExperimentExecutionListener.kt)2
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/internal/DslDiscovery.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/internal/DslDiscovery.kt)2
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/internal/DslDiscoveryProvider.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/internal/DslDiscoveryProvider.kt)2
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/internal/ScenarioImpl.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/internal/ScenarioImpl.kt)2
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/scheduler/ExperimentScheduler.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/engine/scheduler/ExperimentScheduler.kt)0
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/scheduler/ExperimentSchedulerProvider.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/engine/scheduler/ExperimentSchedulerProvider.kt)0
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/scheduler/ThreadPoolExperimentScheduler.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/engine/scheduler/ThreadPoolExperimentScheduler.kt)0
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/scheduler/ThreadPoolExperimentSchedulerProvider.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/engine/scheduler/ThreadPoolExperimentSchedulerProvider.kt)0
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/strategy/CartesianExperimentStrategy.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/engine/strategy/CartesianExperimentStrategy.kt)2
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/strategy/CartesianExperimentStrategyProvider.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/engine/strategy/CartesianExperimentStrategyProvider.kt)0
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/strategy/ExperimentStrategy.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/engine/strategy/ExperimentStrategy.kt)0
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/strategy/ExperimentStrategyProvider.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/engine/strategy/ExperimentStrategyProvider.kt)0
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/resources/META-INF/services/org.opendc.harness.engine.discovery.DiscoveryProvider1
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/resources/META-INF/services/org.opendc.harness.engine.scheduler.ExperimentSchedulerProvider (renamed from opendc-harness/src/main/resources/META-INF/services/org.opendc.harness.engine.scheduler.ExperimentSchedulerProvider)0
-rw-r--r--opendc-harness/opendc-harness-engine/src/main/resources/META-INF/services/org.opendc.harness.engine.strategy.ExperimentStrategyProvider (renamed from opendc-harness/src/main/resources/META-INF/services/org.opendc.harness.engine.strategy.ExperimentStrategyProvider)0
-rw-r--r--opendc-harness/opendc-harness-engine/src/test/kotlin/org/opendc/harness/EngineTest.kt (renamed from opendc-harness/src/test/kotlin/org/opendc/harness/EngineTest.kt)0
-rw-r--r--opendc-harness/opendc-harness-engine/src/test/kotlin/org/opendc/harness/TestExperiment.kt (renamed from opendc-harness/src/test/kotlin/org/opendc/harness/TestExperiment.kt)0
-rw-r--r--opendc-harness/opendc-harness-junit5/build.gradle.kts36
-rw-r--r--opendc-harness/opendc-harness-junit5/src/main/kotlin/org/opendc/harness/runner/junit5/JUnitExperimentExecutionListener.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/runner/junit5/JUnitExperimentExecutionListener.kt)0
-rw-r--r--opendc-harness/opendc-harness-junit5/src/main/kotlin/org/opendc/harness/runner/junit5/OpenDCTestEngine.kt (renamed from opendc-harness/src/main/kotlin/org/opendc/harness/runner/junit5/OpenDCTestEngine.kt)0
-rw-r--r--opendc-harness/opendc-harness-junit5/src/main/resources/META-INF/services/org.junit.platform.engine.TestEngine (renamed from opendc-harness/src/main/resources/META-INF/services/org.junit.platform.engine.TestEngine)0
-rw-r--r--opendc-harness/src/main/resources/META-INF/services/org.opendc.harness.engine.discovery.DiscoveryProvider1
-rw-r--r--settings.gradle.kts5
51 files changed, 174 insertions, 45 deletions
diff --git a/buildSrc/src/main/kotlin/experiment-conventions.gradle.kts b/buildSrc/src/main/kotlin/experiment-conventions.gradle.kts
index 4745ff1a..ae256a62 100644
--- a/buildSrc/src/main/kotlin/experiment-conventions.gradle.kts
+++ b/buildSrc/src/main/kotlin/experiment-conventions.gradle.kts
@@ -25,7 +25,8 @@ plugins {
}
dependencies {
- implementation(project(":opendc-harness"))
+ implementation(project(":opendc-harness:opendc-harness-engine"))
+ runtimeOnly(project(":opendc-harness:opendc-harness-junit5"))
}
tasks.register<Test>("experiment") {
diff --git a/opendc-experiments/opendc-experiments-capelin/build.gradle.kts b/opendc-experiments/opendc-experiments-capelin/build.gradle.kts
index b2d7cc30..83d89574 100644
--- a/opendc-experiments/opendc-experiments-capelin/build.gradle.kts
+++ b/opendc-experiments/opendc-experiments-capelin/build.gradle.kts
@@ -31,7 +31,7 @@ plugins {
dependencies {
api(platform(project(":opendc-platform")))
- api(project(":opendc-harness"))
+ api(project(":opendc-harness:opendc-harness-engine"))
implementation(project(":opendc-format"))
implementation(project(":opendc-simulator:opendc-simulator-core"))
implementation(project(":opendc-simulator:opendc-simulator-compute"))
diff --git a/opendc-experiments/opendc-experiments-energy21/build.gradle.kts b/opendc-experiments/opendc-experiments-energy21/build.gradle.kts
index 32b1086d..618c525e 100644
--- a/opendc-experiments/opendc-experiments-energy21/build.gradle.kts
+++ b/opendc-experiments/opendc-experiments-energy21/build.gradle.kts
@@ -31,13 +31,13 @@ plugins {
}
application {
- mainClass.set("org.opendc.harness.runner.console.ConsoleRunnerKt")
+ mainClass.set("org.opendc.harness.runner.cli.ConsoleRunnerKt")
applicationDefaultJvmArgs = listOf("-Xms2500M")
}
dependencies {
api(platform(project(":opendc-platform")))
- api(project(":opendc-harness"))
+ api(project(":opendc-harness:opendc-harness-engine"))
implementation(project(":opendc-format"))
implementation(project(":opendc-simulator:opendc-simulator-core"))
implementation(project(":opendc-simulator:opendc-simulator-compute"))
diff --git a/opendc-experiments/opendc-experiments-serverless20/build.gradle.kts b/opendc-experiments/opendc-experiments-serverless20/build.gradle.kts
index 40b15af4..2dfa2d3f 100644
--- a/opendc-experiments/opendc-experiments-serverless20/build.gradle.kts
+++ b/opendc-experiments/opendc-experiments-serverless20/build.gradle.kts
@@ -31,11 +31,11 @@ plugins {
dependencies {
api(platform(project(":opendc-platform")))
- api(project(":opendc-harness"))
+ api(project(":opendc-harness:opendc-harness-engine"))
implementation(project(":opendc-serverless:opendc-serverless-service"))
implementation(project(":opendc-serverless:opendc-serverless-simulator"))
implementation(project(":opendc-telemetry:opendc-telemetry-sdk"))
-
+ implementation(project(":opendc-harness:opendc-harness-cli"))
implementation("io.github.microutils:kotlin-logging")
implementation("org.apache.parquet:parquet-avro:${versions["parquet-avro"]}")
diff --git a/opendc-harness/build.gradle.kts b/opendc-harness/build.gradle.kts
index 01b4ecd6..7a9a8463 100644
--- a/opendc-harness/build.gradle.kts
+++ b/opendc-harness/build.gradle.kts
@@ -21,25 +21,3 @@
*/
description = "Harness for defining repeatable experiments using OpenDC"
-
-/* Build configuration */
-plugins {
- `kotlin-library-conventions`
- `testing-conventions`
- `jacoco-conventions`
-}
-
-dependencies {
- api(platform(project(":opendc-platform")))
- api("org.jetbrains.kotlinx:kotlinx-coroutines-core")
- api("org.junit.platform:junit-platform-commons:${versions.junitPlatform}")
-
- implementation("org.junit.platform:junit-platform-engine:${versions.junitPlatform}")
- implementation("io.github.classgraph:classgraph:${versions["classgraph"]}")
- implementation("io.github.microutils:kotlin-logging")
-
- implementation("com.github.ajalt.clikt:clikt:${versions["clikt"]}")
- implementation("me.tongfei:progressbar:${versions["progressbar"]}")
-
- runtimeOnly("org.apache.logging.log4j:log4j-slf4j-impl:${versions.log4j}")
-}
diff --git a/opendc-harness/opendc-harness-api/build.gradle.kts b/opendc-harness/opendc-harness-api/build.gradle.kts
new file mode 100644
index 00000000..67b1ce11
--- /dev/null
+++ b/opendc-harness/opendc-harness-api/build.gradle.kts
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2021 AtLarge Research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+description = "API for OpenDC Experiment Harness"
+
+/* Build configuration */
+plugins {
+ `kotlin-library-conventions`
+}
+
+dependencies {
+ api(platform(project(":opendc-platform")))
+ api("org.junit.platform:junit-platform-commons:${versions.junitPlatform}")
+
+ implementation("io.github.microutils:kotlin-logging")
+}
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/api/ExperimentDefinition.kt b/opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/api/ExperimentDefinition.kt
index 88b26ee1..c90717d2 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/api/ExperimentDefinition.kt
+++ b/opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/api/ExperimentDefinition.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020 AtLarge Research
+ * Copyright (c) 2021 AtLarge Research
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/api/Parameter.kt b/opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/api/Parameter.kt
index bb5c8c2b..1f4fdde1 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/api/Parameter.kt
+++ b/opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/api/Parameter.kt
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020 AtLarge Research
+ * Copyright (c) 2021 AtLarge Research
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/api/Scenario.kt b/opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/api/Scenario.kt
index a8dbf01e..a8dbf01e 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/api/Scenario.kt
+++ b/opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/api/Scenario.kt
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/api/Trial.kt b/opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/api/Trial.kt
index 2d6ecd19..2d6ecd19 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/api/Trial.kt
+++ b/opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/api/Trial.kt
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/dsl/Experiment.kt b/opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/dsl/Experiment.kt
index 41d4207a..41d4207a 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/dsl/Experiment.kt
+++ b/opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/dsl/Experiment.kt
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/dsl/ParameterProvider.kt b/opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/dsl/ParameterProvider.kt
index e4bb9c64..e4bb9c64 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/dsl/ParameterProvider.kt
+++ b/opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/dsl/ParameterProvider.kt
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/dsl/Parameters.kt b/opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/dsl/Parameters.kt
index 7d269ba1..7d269ba1 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/dsl/Parameters.kt
+++ b/opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/dsl/Parameters.kt
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/internal/ParameterDelegate.kt b/opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/internal/ParameterDelegate.kt
index aaf90b99..aaf90b99 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/internal/ParameterDelegate.kt
+++ b/opendc-harness/opendc-harness-api/src/main/kotlin/org/opendc/harness/internal/ParameterDelegate.kt
diff --git a/opendc-harness/opendc-harness-cli/build.gradle.kts b/opendc-harness/opendc-harness-cli/build.gradle.kts
new file mode 100644
index 00000000..26f02f55
--- /dev/null
+++ b/opendc-harness/opendc-harness-cli/build.gradle.kts
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2021 AtLarge Research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+description = "Command line interface of OpenDC Harness"
+
+/* Build configuration */
+plugins {
+ `kotlin-library-conventions`
+}
+
+dependencies {
+ api(platform(project(":opendc-platform")))
+ api(project(":opendc-harness:opendc-harness-engine"))
+
+ implementation("io.github.microutils:kotlin-logging")
+ implementation("com.github.ajalt.clikt:clikt:${versions["clikt"]}")
+ implementation("me.tongfei:progressbar:${versions["progressbar"]}")
+
+ runtimeOnly("org.apache.logging.log4j:log4j-slf4j-impl:${versions.log4j}")
+}
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/runner/console/ConsoleExperimentReporter.kt b/opendc-harness/opendc-harness-cli/src/main/kotlin/org/opendc/harness/runner/cli/ConsoleExperimentReporter.kt
index 2db74ef4..7177467a 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/runner/console/ConsoleExperimentReporter.kt
+++ b/opendc-harness/opendc-harness-cli/src/main/kotlin/org/opendc/harness/runner/cli/ConsoleExperimentReporter.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.harness.runner.console
+package org.opendc.harness.runner.cli
import me.tongfei.progressbar.ProgressBar
import me.tongfei.progressbar.ProgressBarBuilder
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/runner/console/ConsoleRunner.kt b/opendc-harness/opendc-harness-cli/src/main/kotlin/org/opendc/harness/runner/cli/ConsoleRunner.kt
index ae221c7f..c59e623c 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/runner/console/ConsoleRunner.kt
+++ b/opendc-harness/opendc-harness-cli/src/main/kotlin/org/opendc/harness/runner/cli/ConsoleRunner.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.harness.runner.console
+package org.opendc.harness.runner.cli
import com.github.ajalt.clikt.core.CliktCommand
import com.github.ajalt.clikt.parameters.options.default
diff --git a/opendc-harness/src/main/resources/log4j2.xml b/opendc-harness/opendc-harness-cli/src/main/resources/log4j2.xml
index 9553d964..32d81416 100644
--- a/opendc-harness/src/main/resources/log4j2.xml
+++ b/opendc-harness/opendc-harness-cli/src/main/resources/log4j2.xml
@@ -1,8 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
- ~ MIT License
- ~
- ~ Copyright (c) 2020 atlarge-research
+ ~ Copyright (c) 2021 AtLarge Research
~
~ Permission is hereby granted, free of charge, to any person obtaining a copy
~ of this software and associated documentation files (the "Software"), to deal
diff --git a/opendc-harness/opendc-harness-engine/build.gradle.kts b/opendc-harness/opendc-harness-engine/build.gradle.kts
new file mode 100644
index 00000000..bffafdac
--- /dev/null
+++ b/opendc-harness/opendc-harness-engine/build.gradle.kts
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2021 AtLarge Research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+description = "Engine for running experiments using the OpenDC Harness"
+
+/* Build configuration */
+plugins {
+ `kotlin-library-conventions`
+ `testing-conventions`
+ `jacoco-conventions`
+}
+
+dependencies {
+ api(platform(project(":opendc-platform")))
+ api(project(":opendc-harness:opendc-harness-api"))
+ api("org.jetbrains.kotlinx:kotlinx-coroutines-core")
+
+ implementation("io.github.classgraph:classgraph:${versions["classgraph"]}")
+ implementation("io.github.microutils:kotlin-logging")
+}
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/ExperimentEngine.kt b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/ExperimentEngine.kt
index a36f1f9b..a36f1f9b 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/ExperimentEngine.kt
+++ b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/ExperimentEngine.kt
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/ExperimentEngineLauncher.kt b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/ExperimentEngineLauncher.kt
index ddd30483..759e96f8 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/ExperimentEngineLauncher.kt
+++ b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/ExperimentEngineLauncher.kt
@@ -26,11 +26,11 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.runBlocking
import org.opendc.harness.api.ExperimentDefinition
+import org.opendc.harness.engine.internal.CompositeExperimentExecutionListener
import org.opendc.harness.engine.scheduler.ExperimentScheduler
import org.opendc.harness.engine.scheduler.ThreadPoolExperimentScheduler
import org.opendc.harness.engine.strategy.CartesianExperimentStrategy
import org.opendc.harness.engine.strategy.ExperimentStrategy
-import org.opendc.harness.internal.CompositeExperimentExecutionListener
/**
* A builder class for conducting experiments via the [ExperimentEngine].
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/ExperimentExecutionListener.kt b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/ExperimentExecutionListener.kt
index 9ef71863..9ef71863 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/ExperimentExecutionListener.kt
+++ b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/ExperimentExecutionListener.kt
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/discovery/Discovery.kt b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/discovery/Discovery.kt
index f7f73b38..f7f73b38 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/discovery/Discovery.kt
+++ b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/discovery/Discovery.kt
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoveryFilter.kt b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoveryFilter.kt
index 219d09cd..219d09cd 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoveryFilter.kt
+++ b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoveryFilter.kt
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoveryProvider.kt b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoveryProvider.kt
index fad255de..204de3fc 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoveryProvider.kt
+++ b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoveryProvider.kt
@@ -22,7 +22,7 @@
package org.opendc.harness.engine.discovery
-import org.opendc.harness.internal.CompositeDiscovery
+import org.opendc.harness.engine.internal.CompositeDiscovery
import java.util.*
/**
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoveryRequest.kt b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoveryRequest.kt
index 5bc08dac..5bc08dac 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoveryRequest.kt
+++ b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoveryRequest.kt
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoverySelector.kt b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoverySelector.kt
index 67681303..67681303 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoverySelector.kt
+++ b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/discovery/DiscoverySelector.kt
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/internal/CompositeDiscovery.kt b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/internal/CompositeDiscovery.kt
index 67a895e4..8ebc485a 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/internal/CompositeDiscovery.kt
+++ b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/internal/CompositeDiscovery.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.harness.internal
+package org.opendc.harness.engine.internal
import kotlinx.coroutines.FlowPreview
import kotlinx.coroutines.flow.*
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/internal/CompositeExperimentExecutionListener.kt b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/internal/CompositeExperimentExecutionListener.kt
index a3cd6bd2..62b4ca8b 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/internal/CompositeExperimentExecutionListener.kt
+++ b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/internal/CompositeExperimentExecutionListener.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.harness.internal
+package org.opendc.harness.engine.internal
import org.opendc.harness.api.ExperimentDefinition
import org.opendc.harness.api.Scenario
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/internal/DslDiscovery.kt b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/internal/DslDiscovery.kt
index eb6303d6..20708230 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/internal/DslDiscovery.kt
+++ b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/internal/DslDiscovery.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.harness.internal
+package org.opendc.harness.engine.internal
import io.github.classgraph.ClassGraph
import io.github.classgraph.ScanResult
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/internal/DslDiscoveryProvider.kt b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/internal/DslDiscoveryProvider.kt
index 752ba4bb..987bc889 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/internal/DslDiscoveryProvider.kt
+++ b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/internal/DslDiscoveryProvider.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.harness.internal
+package org.opendc.harness.engine.internal
import org.opendc.harness.dsl.Experiment
import org.opendc.harness.engine.discovery.Discovery
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/internal/ScenarioImpl.kt b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/internal/ScenarioImpl.kt
index d255004d..65d19e87 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/internal/ScenarioImpl.kt
+++ b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/internal/ScenarioImpl.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.harness.internal
+package org.opendc.harness.engine.internal
import org.opendc.harness.api.ExperimentDefinition
import org.opendc.harness.api.Parameter
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/scheduler/ExperimentScheduler.kt b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/scheduler/ExperimentScheduler.kt
index 0265554a..0265554a 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/scheduler/ExperimentScheduler.kt
+++ b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/scheduler/ExperimentScheduler.kt
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/scheduler/ExperimentSchedulerProvider.kt b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/scheduler/ExperimentSchedulerProvider.kt
index a93d4bf6..a93d4bf6 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/scheduler/ExperimentSchedulerProvider.kt
+++ b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/scheduler/ExperimentSchedulerProvider.kt
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/scheduler/ThreadPoolExperimentScheduler.kt b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/scheduler/ThreadPoolExperimentScheduler.kt
index 1ae533cf..1ae533cf 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/scheduler/ThreadPoolExperimentScheduler.kt
+++ b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/scheduler/ThreadPoolExperimentScheduler.kt
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/scheduler/ThreadPoolExperimentSchedulerProvider.kt b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/scheduler/ThreadPoolExperimentSchedulerProvider.kt
index cf9a132f..cf9a132f 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/scheduler/ThreadPoolExperimentSchedulerProvider.kt
+++ b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/scheduler/ThreadPoolExperimentSchedulerProvider.kt
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/strategy/CartesianExperimentStrategy.kt b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/strategy/CartesianExperimentStrategy.kt
index e5e08003..733eca8f 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/strategy/CartesianExperimentStrategy.kt
+++ b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/strategy/CartesianExperimentStrategy.kt
@@ -25,7 +25,7 @@ package org.opendc.harness.engine.strategy
import org.opendc.harness.api.ExperimentDefinition
import org.opendc.harness.api.Parameter
import org.opendc.harness.api.Scenario
-import org.opendc.harness.internal.ScenarioImpl
+import org.opendc.harness.engine.internal.ScenarioImpl
/**
* An [ExperimentStrategy] that takes the cartesian product of the parameters and evaluates every combination.
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/strategy/CartesianExperimentStrategyProvider.kt b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/strategy/CartesianExperimentStrategyProvider.kt
index f18795a3..f18795a3 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/strategy/CartesianExperimentStrategyProvider.kt
+++ b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/strategy/CartesianExperimentStrategyProvider.kt
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/strategy/ExperimentStrategy.kt b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/strategy/ExperimentStrategy.kt
index 3a0148ad..3a0148ad 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/strategy/ExperimentStrategy.kt
+++ b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/strategy/ExperimentStrategy.kt
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/strategy/ExperimentStrategyProvider.kt b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/strategy/ExperimentStrategyProvider.kt
index 7fa05f34..7fa05f34 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/engine/strategy/ExperimentStrategyProvider.kt
+++ b/opendc-harness/opendc-harness-engine/src/main/kotlin/org/opendc/harness/engine/strategy/ExperimentStrategyProvider.kt
diff --git a/opendc-harness/opendc-harness-engine/src/main/resources/META-INF/services/org.opendc.harness.engine.discovery.DiscoveryProvider b/opendc-harness/opendc-harness-engine/src/main/resources/META-INF/services/org.opendc.harness.engine.discovery.DiscoveryProvider
new file mode 100644
index 00000000..83ac5015
--- /dev/null
+++ b/opendc-harness/opendc-harness-engine/src/main/resources/META-INF/services/org.opendc.harness.engine.discovery.DiscoveryProvider
@@ -0,0 +1 @@
+org.opendc.harness.engine.internal.DslDiscoveryProvider
diff --git a/opendc-harness/src/main/resources/META-INF/services/org.opendc.harness.engine.scheduler.ExperimentSchedulerProvider b/opendc-harness/opendc-harness-engine/src/main/resources/META-INF/services/org.opendc.harness.engine.scheduler.ExperimentSchedulerProvider
index 2ba3a7cb..2ba3a7cb 100644
--- a/opendc-harness/src/main/resources/META-INF/services/org.opendc.harness.engine.scheduler.ExperimentSchedulerProvider
+++ b/opendc-harness/opendc-harness-engine/src/main/resources/META-INF/services/org.opendc.harness.engine.scheduler.ExperimentSchedulerProvider
diff --git a/opendc-harness/src/main/resources/META-INF/services/org.opendc.harness.engine.strategy.ExperimentStrategyProvider b/opendc-harness/opendc-harness-engine/src/main/resources/META-INF/services/org.opendc.harness.engine.strategy.ExperimentStrategyProvider
index cb1c70ac..cb1c70ac 100644
--- a/opendc-harness/src/main/resources/META-INF/services/org.opendc.harness.engine.strategy.ExperimentStrategyProvider
+++ b/opendc-harness/opendc-harness-engine/src/main/resources/META-INF/services/org.opendc.harness.engine.strategy.ExperimentStrategyProvider
diff --git a/opendc-harness/src/test/kotlin/org/opendc/harness/EngineTest.kt b/opendc-harness/opendc-harness-engine/src/test/kotlin/org/opendc/harness/EngineTest.kt
index 6f2989db..6f2989db 100644
--- a/opendc-harness/src/test/kotlin/org/opendc/harness/EngineTest.kt
+++ b/opendc-harness/opendc-harness-engine/src/test/kotlin/org/opendc/harness/EngineTest.kt
diff --git a/opendc-harness/src/test/kotlin/org/opendc/harness/TestExperiment.kt b/opendc-harness/opendc-harness-engine/src/test/kotlin/org/opendc/harness/TestExperiment.kt
index bedd1c76..bedd1c76 100644
--- a/opendc-harness/src/test/kotlin/org/opendc/harness/TestExperiment.kt
+++ b/opendc-harness/opendc-harness-engine/src/test/kotlin/org/opendc/harness/TestExperiment.kt
diff --git a/opendc-harness/opendc-harness-junit5/build.gradle.kts b/opendc-harness/opendc-harness-junit5/build.gradle.kts
new file mode 100644
index 00000000..aa0b78d5
--- /dev/null
+++ b/opendc-harness/opendc-harness-junit5/build.gradle.kts
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2021 AtLarge Research
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+description = "JUnit Platform interface to the OpenDC Harness"
+
+/* Build configuration */
+plugins {
+ `kotlin-library-conventions`
+}
+
+dependencies {
+ api(platform(project(":opendc-platform")))
+ api(project(":opendc-harness:opendc-harness-engine"))
+
+ implementation("io.github.microutils:kotlin-logging")
+ implementation("org.junit.platform:junit-platform-engine:${versions.junitPlatform}")
+}
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/runner/junit5/JUnitExperimentExecutionListener.kt b/opendc-harness/opendc-harness-junit5/src/main/kotlin/org/opendc/harness/runner/junit5/JUnitExperimentExecutionListener.kt
index 9e2b629d..9e2b629d 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/runner/junit5/JUnitExperimentExecutionListener.kt
+++ b/opendc-harness/opendc-harness-junit5/src/main/kotlin/org/opendc/harness/runner/junit5/JUnitExperimentExecutionListener.kt
diff --git a/opendc-harness/src/main/kotlin/org/opendc/harness/runner/junit5/OpenDCTestEngine.kt b/opendc-harness/opendc-harness-junit5/src/main/kotlin/org/opendc/harness/runner/junit5/OpenDCTestEngine.kt
index ab7367b8..ab7367b8 100644
--- a/opendc-harness/src/main/kotlin/org/opendc/harness/runner/junit5/OpenDCTestEngine.kt
+++ b/opendc-harness/opendc-harness-junit5/src/main/kotlin/org/opendc/harness/runner/junit5/OpenDCTestEngine.kt
diff --git a/opendc-harness/src/main/resources/META-INF/services/org.junit.platform.engine.TestEngine b/opendc-harness/opendc-harness-junit5/src/main/resources/META-INF/services/org.junit.platform.engine.TestEngine
index b83eec0c..b83eec0c 100644
--- a/opendc-harness/src/main/resources/META-INF/services/org.junit.platform.engine.TestEngine
+++ b/opendc-harness/opendc-harness-junit5/src/main/resources/META-INF/services/org.junit.platform.engine.TestEngine
diff --git a/opendc-harness/src/main/resources/META-INF/services/org.opendc.harness.engine.discovery.DiscoveryProvider b/opendc-harness/src/main/resources/META-INF/services/org.opendc.harness.engine.discovery.DiscoveryProvider
deleted file mode 100644
index d6a73ded..00000000
--- a/opendc-harness/src/main/resources/META-INF/services/org.opendc.harness.engine.discovery.DiscoveryProvider
+++ /dev/null
@@ -1 +0,0 @@
-org.opendc.harness.internal.DslDiscoveryProvider
diff --git a/settings.gradle.kts b/settings.gradle.kts
index cd0c8be5..1372f0dc 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -43,5 +43,8 @@ include(":opendc-simulator:opendc-simulator-compute")
include(":opendc-simulator:opendc-simulator-failures")
include(":opendc-telemetry:opendc-telemetry-api")
include(":opendc-telemetry:opendc-telemetry-sdk")
-include(":opendc-harness")
+include(":opendc-harness:opendc-harness-api")
+include(":opendc-harness:opendc-harness-engine")
+include(":opendc-harness:opendc-harness-cli")
+include(":opendc-harness:opendc-harness-junit5")
include(":opendc-utils")