summaryrefslogtreecommitdiff
path: root/opendc-harness
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 /opendc-harness
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.
Diffstat (limited to 'opendc-harness')
-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
46 files changed, 163 insertions, 38 deletions
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