summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--simulator/.gitignore3
-rw-r--r--simulator/build.gradle.kts2
-rw-r--r--simulator/buildSrc/build.gradle.kts25
-rw-r--r--simulator/buildSrc/settings.gradle.kts4
-rw-r--r--simulator/buildSrc/src/main/kotlin/ProjectExtensions.kt34
-rw-r--r--simulator/buildSrc/src/main/kotlin/Versions.kt (renamed from simulator/buildSrc/src/main/kotlin/library.kt)42
-rw-r--r--simulator/buildSrc/src/main/kotlin/dokka-conventions.gradle.kts (renamed from simulator/buildSrc/src/main/kotlin/dokka-convention.gradle.kts)0
-rw-r--r--simulator/buildSrc/src/main/kotlin/experiment-conventions.gradle.kts40
-rw-r--r--simulator/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts58
-rw-r--r--simulator/buildSrc/src/main/kotlin/kotlin-library-conventions.gradle.kts (renamed from simulator/buildSrc/src/main/kotlin/kotlin-library-convention.gradle.kts)21
-rw-r--r--simulator/buildSrc/src/main/kotlin/testing-conventions.gradle.kts38
-rw-r--r--simulator/gradle.properties47
-rw-r--r--simulator/gradle/wrapper/gradle-wrapper.properties2
-rw-r--r--simulator/opendc-compute/opendc-compute-core/build.gradle.kts11
-rw-r--r--simulator/opendc-compute/opendc-compute-simulator/build.gradle.kts11
-rw-r--r--simulator/opendc-core/build.gradle.kts9
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/.gitignore2
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/build.gradle.kts (renamed from simulator/opendc-experiments/opendc-experiments-sc20/build.gradle.kts)27
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/CompositeWorkloadPortfolio.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/CompositeWorkloadPortfolio.kt)10
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/ExperimentHelpers.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/ExperimentHelpers.kt)8
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/HorVerPortfolio.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/HorVerPortfolio.kt)8
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/MoreHpcPortfolio.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/MoreHpcPortfolio.kt)9
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/MoreVelocityPortfolio.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/MoreVelocityPortfolio.kt)8
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/OperationalPhenomenaPortfolio.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/OperationalPhenomenaPortfolio.kt)8
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/Portfolio.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/Portfolio.kt)28
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/ReplayPortfolio.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/ReplayPortfolio.kt)8
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/TestPortfolio.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/TestPortfolio.kt)8
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/model/OperationalPhenomena.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/model/OperationalPhenomena.kt)6
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/model/Topology.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/model/Topology.kt)6
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/model/Workload.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/model/Workload.kt)4
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/monitor/ExperimentMonitor.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/monitor/ExperimentMonitor.kt)4
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/monitor/ParquetExperimentMonitor.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/monitor/ParquetExperimentMonitor.kt)12
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/Event.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/Event.kt)2
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/HostEvent.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/HostEvent.kt)2
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/ProvisionerEvent.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/ProvisionerEvent.kt)2
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/RunEvent.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/RunEvent.kt)4
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/VmEvent.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/VmEvent.kt)2
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/parquet/ParquetEventWriter.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/parquet/ParquetEventWriter.kt)4
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/parquet/ParquetHostEventWriter.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/parquet/ParquetHostEventWriter.kt)4
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/parquet/ParquetProvisionerEventWriter.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/parquet/ParquetProvisionerEventWriter.kt)4
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/parquet/ParquetRunEventWriter.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/parquet/ParquetRunEventWriter.kt)4
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/trace/Sc20ParquetTraceReader.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/trace/Sc20ParquetTraceReader.kt)6
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/trace/Sc20RawParquetTraceReader.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/trace/Sc20RawParquetTraceReader.kt)2
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/trace/Sc20StreamingParquetTraceReader.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/trace/Sc20StreamingParquetTraceReader.kt)2
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/trace/Sc20TraceConverter.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/trace/Sc20TraceConverter.kt)2
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/trace/WorkloadSampler.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/trace/WorkloadSampler.kt)8
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/main/resources/log4j2.xml (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/main/resources/log4j2.xml)4
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/test/kotlin/org/opendc/experiments/capelin/CapelinIntegrationTest.kt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/test/kotlin/org/opendc/experiments/sc20/Sc20IntegrationTest.kt)20
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/test/resources/env/single.txt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/test/resources/env/single.txt)0
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/test/resources/env/topology.txt (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/test/resources/env/topology.txt)0
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/test/resources/trace/meta.parquet (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/test/resources/trace/meta.parquet)bin2148 -> 2148 bytes
-rw-r--r--simulator/opendc-experiments/opendc-experiments-capelin/src/test/resources/trace/trace.parquet (renamed from simulator/opendc-experiments/opendc-experiments-sc20/src/test/resources/trace/trace.parquet)bin1672463 -> 1672463 bytes
-rw-r--r--simulator/opendc-experiments/opendc-experiments-sc18/.gitignore2
-rw-r--r--simulator/opendc-experiments/opendc-experiments-sc18/build.gradle.kts19
-rw-r--r--simulator/opendc-experiments/opendc-experiments-sc18/src/main/kotlin/org/opendc/experiments/sc18/UnderspecificationExperiment.kt6
-rw-r--r--simulator/opendc-format/build.gradle.kts17
-rw-r--r--simulator/opendc-harness/build.gradle.kts25
-rw-r--r--simulator/opendc-harness/src/main/kotlin/org/opendc/harness/engine/ExperimentEngine.kt54
-rw-r--r--simulator/opendc-harness/src/main/kotlin/org/opendc/harness/runner/junit5/JUnitExperimentExecutionListener.kt10
-rw-r--r--simulator/opendc-harness/src/main/kotlin/org/opendc/harness/runner/junit5/OpenDCTestEngine.kt14
-rw-r--r--simulator/opendc-platform/build.gradle.kts37
-rw-r--r--simulator/opendc-runner-web/build.gradle.kts21
-rw-r--r--simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/Main.kt14
-rw-r--r--simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/WebExperimentMonitor.kt4
-rw-r--r--simulator/opendc-simulator/opendc-simulator-compute/build.gradle.kts8
-rw-r--r--simulator/opendc-simulator/opendc-simulator-core/build.gradle.kts5
-rw-r--r--simulator/opendc-simulator/opendc-simulator-failures/build.gradle.kts5
-rw-r--r--simulator/opendc-trace/opendc-trace-core/build.gradle.kts5
-rw-r--r--simulator/opendc-utils/build.gradle.kts9
-rw-r--r--simulator/opendc-workflows/build.gradle.kts15
-rw-r--r--simulator/settings.gradle.kts3
71 files changed, 543 insertions, 305 deletions
diff --git a/simulator/.gitignore b/simulator/.gitignore
index 917f2e6a..992d060f 100644
--- a/simulator/.gitignore
+++ b/simulator/.gitignore
@@ -99,6 +99,3 @@ gradle-app.setting
# Cache of project
.gradletasknamecache
-
-# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
-# gradle/wrapper/gradle-wrapper.properties
diff --git a/simulator/build.gradle.kts b/simulator/build.gradle.kts
index b104654b..6b0a9bf1 100644
--- a/simulator/build.gradle.kts
+++ b/simulator/build.gradle.kts
@@ -21,7 +21,7 @@
*/
plugins {
- `dokka-convention`
+ `dokka-conventions`
}
allprojects {
diff --git a/simulator/buildSrc/build.gradle.kts b/simulator/buildSrc/build.gradle.kts
index e1f538fe..4cc1958a 100644
--- a/simulator/buildSrc/build.gradle.kts
+++ b/simulator/buildSrc/build.gradle.kts
@@ -1,7 +1,5 @@
/*
- * MIT License
- *
- * Copyright (c) 2019 atlarge-research
+ * Copyright (c) 2019 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
@@ -22,21 +20,16 @@
* SOFTWARE.
*/
+import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
+
plugins {
`kotlin-dsl`
}
-kotlinDslPluginOptions {
- experimentalWarning.set(false)
-}
-
-
/* Project configuration */
repositories {
jcenter()
- maven {
- url = uri("https://plugins.gradle.org/m2/")
- }
+ gradlePluginPortal()
}
dependencies {
@@ -44,3 +37,13 @@ dependencies {
implementation("org.jlleitschuh.gradle:ktlint-gradle:10.0.0")
implementation("org.jetbrains.dokka:dokka-gradle-plugin:0.10.1")
}
+
+kotlinDslPluginOptions {
+ experimentalWarning.set(false)
+}
+
+tasks.withType<KotlinCompile>().configureEach {
+ kotlinOptions {
+ allWarningsAsErrors = true
+ }
+}
diff --git a/simulator/buildSrc/settings.gradle.kts b/simulator/buildSrc/settings.gradle.kts
index cc3f3add..5337ee96 100644
--- a/simulator/buildSrc/settings.gradle.kts
+++ b/simulator/buildSrc/settings.gradle.kts
@@ -1,7 +1,7 @@
/*
* MIT License
*
- * Copyright (c) 2019 atlarge-research
+ * Copyright (c) 2019 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
@@ -21,3 +21,5 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
+
+/* Intentionally left blank */
diff --git a/simulator/buildSrc/src/main/kotlin/ProjectExtensions.kt b/simulator/buildSrc/src/main/kotlin/ProjectExtensions.kt
new file mode 100644
index 00000000..ddf643f6
--- /dev/null
+++ b/simulator/buildSrc/src/main/kotlin/ProjectExtensions.kt
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+import org.gradle.api.Project
+import org.gradle.kotlin.dsl.extra
+import org.gradle.kotlin.dsl.provideDelegate
+
+/**
+ * Obtain the [Versions] object for the specified [Project] instance.
+ */
+val Project.versions: Versions
+ get() {
+ var versions: Versions? by rootProject.extra
+ return versions ?: Versions(rootProject).also { versions = it }
+ }
diff --git a/simulator/buildSrc/src/main/kotlin/library.kt b/simulator/buildSrc/src/main/kotlin/Versions.kt
index a66e5f46..fcf3c778 100644
--- a/simulator/buildSrc/src/main/kotlin/library.kt
+++ b/simulator/buildSrc/src/main/kotlin/Versions.kt
@@ -22,28 +22,42 @@
* SOFTWARE.
*/
+import org.gradle.api.JavaVersion
+import org.gradle.api.Project
+import org.gradle.kotlin.dsl.extra
+import kotlin.properties.ReadOnlyProperty
+import kotlin.reflect.KProperty
+
/**
- * This object contains the versions of the dependencies shared by the different
+ * This class contains the versions of the dependencies shared by the different
* subprojects.
*/
-object Library {
+public class Versions(private val project: Project) {
/**
- * The library for testing the projects.
+ * A delegate for obtaining configuration values from a [Project] instance.
*/
- val JUNIT_JUPITER = "5.7.1"
+ private fun version(name: String? = null): ReadOnlyProperty<Versions, String> =
+ ReadOnlyProperty { _, property -> get(name ?: property.name) }
- /**
- * The library for hosting the tests.
- */
- val JUNIT_PLATFORM = "1.7.1"
+ val junitJupiter by version(name = "junit-jupiter")
+ val junitPlatform by version(name = "junit-platform")
+
+ val slf4j by version()
+ val kotlinLogging by version(name = "kotlin-logging")
+ val log4j by version()
+
+ val kotlinxCoroutines by version(name = "kotlinx-coroutines")
- /**
- * Logging facade.
- */
- val SLF4J = "1.7.30"
/**
- * Kotlin coroutines support
+ * Obtain the version for the specified [dependency][name].
*/
- val KOTLINX_COROUTINES = "1.4.2"
+ operator fun get(name: String) = project.extra.get("$name.version") as String
+
+ companion object {
+ /**
+ * The JVM version to target.
+ */
+ val jvmTarget = JavaVersion.VERSION_1_8
+ }
}
diff --git a/simulator/buildSrc/src/main/kotlin/dokka-convention.gradle.kts b/simulator/buildSrc/src/main/kotlin/dokka-conventions.gradle.kts
index 95183df2..95183df2 100644
--- a/simulator/buildSrc/src/main/kotlin/dokka-convention.gradle.kts
+++ b/simulator/buildSrc/src/main/kotlin/dokka-conventions.gradle.kts
diff --git a/simulator/buildSrc/src/main/kotlin/experiment-conventions.gradle.kts b/simulator/buildSrc/src/main/kotlin/experiment-conventions.gradle.kts
new file mode 100644
index 00000000..4745ff1a
--- /dev/null
+++ b/simulator/buildSrc/src/main/kotlin/experiment-conventions.gradle.kts
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+
+plugins {
+ `java-library`
+}
+
+dependencies {
+ implementation(project(":opendc-harness"))
+}
+
+tasks.register<Test>("experiment") {
+ // Ensure JUnit Platform is used for resolving tests
+ useJUnitPlatform()
+
+ description = "Runs OpenDC experiments"
+ group = "application"
+
+ testClassesDirs = sourceSets["main"].output.classesDirs
+ classpath = sourceSets["main"].runtimeClasspath
+}
diff --git a/simulator/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts b/simulator/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts
new file mode 100644
index 00000000..544e34bf
--- /dev/null
+++ b/simulator/buildSrc/src/main/kotlin/jacoco-conventions.gradle.kts
@@ -0,0 +1,58 @@
+import org.gradle.kotlin.dsl.`java-library`
+import org.gradle.kotlin.dsl.jacoco
+import org.gradle.kotlin.dsl.kotlin
+
+/*
+ * 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.
+ */
+
+/*
+ * 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.
+ */
+
+plugins {
+ `java-library`
+ jacoco
+}
+
+tasks.jacocoTestReport {
+ reports {
+ html.isEnabled = true
+ }
+}
diff --git a/simulator/buildSrc/src/main/kotlin/kotlin-library-convention.gradle.kts b/simulator/buildSrc/src/main/kotlin/kotlin-library-conventions.gradle.kts
index f9d8a966..8d6420be 100644
--- a/simulator/buildSrc/src/main/kotlin/kotlin-library-convention.gradle.kts
+++ b/simulator/buildSrc/src/main/kotlin/kotlin-library-conventions.gradle.kts
@@ -28,7 +28,6 @@ plugins {
`java-library`
kotlin("jvm")
id("org.jlleitschuh.gradle.ktlint")
- jacoco
}
/* Project configuration */
@@ -38,30 +37,14 @@ repositories {
}
java {
- sourceCompatibility = JavaVersion.VERSION_1_8
+ sourceCompatibility = Versions.jvmTarget
}
kotlin {
explicitApi()
}
-jacoco {
- toolVersion = "0.8.6"
-}
-
tasks.withType<KotlinCompile>().configureEach {
- kotlinOptions.jvmTarget = "1.8"
+ kotlinOptions.jvmTarget = Versions.jvmTarget.toString()
kotlinOptions.freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn"
}
-
-tasks.test {
- useJUnitPlatform()
- reports.html.isEnabled = true
-}
-
-
-tasks.jacocoTestReport {
- reports {
- html.isEnabled = true
- }
-}
diff --git a/simulator/buildSrc/src/main/kotlin/testing-conventions.gradle.kts b/simulator/buildSrc/src/main/kotlin/testing-conventions.gradle.kts
new file mode 100644
index 00000000..22ea7905
--- /dev/null
+++ b/simulator/buildSrc/src/main/kotlin/testing-conventions.gradle.kts
@@ -0,0 +1,38 @@
+import org.gradle.kotlin.dsl.`java-library`
+import org.gradle.kotlin.dsl.kotlin
+import org.gradle.platform.base.Library
+
+/*
+ * 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.
+ */
+
+plugins {
+ `java-library`
+}
+
+tasks.test {
+ useJUnitPlatform()
+}
+
+dependencies {
+ testImplementation("org.junit.jupiter:junit-jupiter-api:${versions.junitJupiter}")
+ testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${versions.junitJupiter}")
+}
diff --git a/simulator/gradle.properties b/simulator/gradle.properties
new file mode 100644
index 00000000..fb007dde
--- /dev/null
+++ b/simulator/gradle.properties
@@ -0,0 +1,47 @@
+#
+# 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.
+#
+
+# Dependencies
+kotlinx-coroutines.version = 1.4.2
+
+# Dependencies (Logging)
+kotlin-logging.version = 2.0.4
+slf4j.version = 1.7.30
+log4j.version = 2.14.0
+
+# Dependencies (CLI)
+clikt.version = 3.1.0
+progressbar.version = 0.9.0
+
+# Dependencies (Format)
+jackson-module-kotlin.version = 2.12.0
+parquet-avro.version = 1.11.1
+hadoop-client.version = 3.2.1
+
+# Dependencies (Other)
+sentry-log4j2.version = 4.2.0
+mongodb-driver-sync.version = 4.2.1
+classgraph.version = 4.8.102
+
+# Dependencies (Testing)
+junit-jupiter.version = 5.7.1
+junit-platform.version = 1.7.1
diff --git a/simulator/gradle/wrapper/gradle-wrapper.properties b/simulator/gradle/wrapper/gradle-wrapper.properties
index 2a563242..442d9132 100644
--- a/simulator/gradle/wrapper/gradle-wrapper.properties
+++ b/simulator/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/simulator/opendc-compute/opendc-compute-core/build.gradle.kts b/simulator/opendc-compute/opendc-compute-core/build.gradle.kts
index ac2dc78d..a1b6ec0f 100644
--- a/simulator/opendc-compute/opendc-compute-core/build.gradle.kts
+++ b/simulator/opendc-compute/opendc-compute-core/build.gradle.kts
@@ -24,19 +24,14 @@ description = "Core implementation of the OpenDC Compute service"
/* Build configuration */
plugins {
- `kotlin-library-convention`
+ `kotlin-library-conventions`
}
dependencies {
+ api(platform(project(":opendc-platform")))
api(project(":opendc-core"))
api(project(":opendc-trace:opendc-trace-core"))
implementation(project(":opendc-utils"))
- implementation("io.github.microutils:kotlin-logging:1.7.9")
- testImplementation(project(":opendc-simulator:opendc-simulator-core"))
- testImplementation(project(":opendc-compute:opendc-compute-simulator"))
- testRuntimeOnly("org.slf4j:slf4j-simple:${Library.SLF4J}")
- testImplementation("org.junit.jupiter:junit-jupiter-api:${Library.JUNIT_JUPITER}")
- testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${Library.JUNIT_JUPITER}")
- testImplementation("org.junit.platform:junit-platform-launcher:${Library.JUNIT_PLATFORM}")
+ implementation("io.github.microutils:kotlin-logging")
}
diff --git a/simulator/opendc-compute/opendc-compute-simulator/build.gradle.kts b/simulator/opendc-compute/opendc-compute-simulator/build.gradle.kts
index dc93e956..f52d0f97 100644
--- a/simulator/opendc-compute/opendc-compute-simulator/build.gradle.kts
+++ b/simulator/opendc-compute/opendc-compute-simulator/build.gradle.kts
@@ -24,19 +24,18 @@ description = "Simulator for OpenDC Compute"
/* Build configuration */
plugins {
- `kotlin-library-convention`
+ `kotlin-library-conventions`
+ `testing-conventions`
}
dependencies {
+ api(platform(project(":opendc-platform")))
api(project(":opendc-compute:opendc-compute-core"))
api(project(":opendc-simulator:opendc-simulator-compute"))
api(project(":opendc-simulator:opendc-simulator-failures"))
implementation(project(":opendc-utils"))
- implementation("io.github.microutils:kotlin-logging:1.7.9")
+ implementation("io.github.microutils:kotlin-logging")
testImplementation(project(":opendc-simulator:opendc-simulator-core"))
- testRuntimeOnly("org.slf4j:slf4j-simple:${Library.SLF4J}")
- testImplementation("org.junit.jupiter:junit-jupiter-api:${Library.JUNIT_JUPITER}")
- testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${Library.JUNIT_JUPITER}")
- testImplementation("org.junit.platform:junit-platform-launcher:${Library.JUNIT_PLATFORM}")
+ testRuntimeOnly("org.slf4j:slf4j-simple:${versions.slf4j}")
}
diff --git a/simulator/opendc-core/build.gradle.kts b/simulator/opendc-core/build.gradle.kts
index b1c2678b..7e1a4b97 100644
--- a/simulator/opendc-core/build.gradle.kts
+++ b/simulator/opendc-core/build.gradle.kts
@@ -24,13 +24,10 @@ description = "Base model for datacenter simulation"
/* Build configuration */
plugins {
- `kotlin-library-convention`
+ `kotlin-library-conventions`
}
dependencies {
- api("org.jetbrains.kotlinx:kotlinx-coroutines-core:${Library.KOTLINX_COROUTINES}")
-
- testImplementation("org.junit.jupiter:junit-jupiter-api:${Library.JUNIT_JUPITER}")
- testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${Library.JUNIT_JUPITER}")
- testImplementation("org.junit.platform:junit-platform-launcher:${Library.JUNIT_PLATFORM}")
+ api(platform(project(":opendc-platform")))
+ api("org.jetbrains.kotlinx:kotlinx-coroutines-core")
}
diff --git a/simulator/opendc-experiments/opendc-experiments-capelin/.gitignore b/simulator/opendc-experiments/opendc-experiments-capelin/.gitignore
new file mode 100644
index 00000000..ba64707c
--- /dev/null
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/.gitignore
@@ -0,0 +1,2 @@
+input/
+output/
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/build.gradle.kts b/simulator/opendc-experiments/opendc-experiments-capelin/build.gradle.kts
index b94207ba..636f291c 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/build.gradle.kts
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/build.gradle.kts
@@ -20,20 +20,17 @@
* SOFTWARE.
*/
-description = "Experiments for the SC20 paper"
+description = "Experiments for the Capelin work"
/* Build configuration */
plugins {
- `kotlin-library-convention`
- application
-}
-
-application {
- mainClass.set("org.opendc.harness.runner.console.ConsoleRunnerKt")
- applicationDefaultJvmArgs = listOf("-Xms2500M")
+ `kotlin-library-conventions`
+ `experiment-conventions`
+ `testing-conventions`
}
dependencies {
+ api(platform(project(":opendc-platform")))
api(project(":opendc-core"))
api(project(":opendc-harness"))
implementation(project(":opendc-format"))
@@ -42,17 +39,13 @@ dependencies {
implementation(project(":opendc-simulator:opendc-simulator-failures"))
implementation(project(":opendc-compute:opendc-compute-simulator"))
- implementation("io.github.microutils:kotlin-logging:2.0.4")
- implementation("me.tongfei:progressbar:0.9.0")
- implementation("com.github.ajalt.clikt:clikt:3.1.0")
+ implementation("io.github.microutils:kotlin-logging")
+ implementation("me.tongfei:progressbar:${versions["progressbar"]}")
+ implementation("com.github.ajalt.clikt:clikt:${versions["clikt"]}")
- implementation("org.apache.parquet:parquet-avro:1.11.0")
- implementation("org.apache.hadoop:hadoop-client:3.2.1") {
+ implementation("org.apache.parquet:parquet-avro:${versions["parquet-avro"]}")
+ implementation("org.apache.hadoop:hadoop-client:${versions["hadoop-client"]}") {
exclude(group = "org.slf4j", module = "slf4j-log4j12")
exclude(group = "log4j")
}
-
- testImplementation("org.junit.jupiter:junit-jupiter-api:${Library.JUNIT_JUPITER}")
- testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${Library.JUNIT_JUPITER}")
- testImplementation("org.junit.platform:junit-platform-launcher:${Library.JUNIT_PLATFORM}")
}
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/CompositeWorkloadPortfolio.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/CompositeWorkloadPortfolio.kt
index f4242456..faabe5cb 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/CompositeWorkloadPortfolio.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/CompositeWorkloadPortfolio.kt
@@ -20,12 +20,12 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.experiment
+package org.opendc.experiments.capelin
-import org.opendc.experiments.sc20.experiment.model.CompositeWorkload
-import org.opendc.experiments.sc20.experiment.model.OperationalPhenomena
-import org.opendc.experiments.sc20.experiment.model.Topology
-import org.opendc.experiments.sc20.experiment.model.Workload
+import org.opendc.experiments.capelin.model.CompositeWorkload
+import org.opendc.experiments.capelin.model.OperationalPhenomena
+import org.opendc.experiments.capelin.model.Topology
+import org.opendc.experiments.capelin.model.Workload
import org.opendc.harness.dsl.anyOf
/**
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/ExperimentHelpers.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/ExperimentHelpers.kt
index 1e01e892..8f3e686a 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/ExperimentHelpers.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/ExperimentHelpers.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
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.experiment
+package org.opendc.experiments.capelin.experiment
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -44,8 +44,8 @@ import org.opendc.compute.simulator.SimBareMetalDriver
import org.opendc.compute.simulator.SimVirtDriver
import org.opendc.compute.simulator.SimVirtProvisioningService
import org.opendc.compute.simulator.allocation.AllocationPolicy
-import org.opendc.experiments.sc20.experiment.monitor.ExperimentMonitor
-import org.opendc.experiments.sc20.trace.Sc20StreamingParquetTraceReader
+import org.opendc.experiments.capelin.monitor.ExperimentMonitor
+import org.opendc.experiments.capelin.trace.Sc20StreamingParquetTraceReader
import org.opendc.format.environment.EnvironmentReader
import org.opendc.format.trace.TraceReader
import org.opendc.simulator.compute.SimFairShareHypervisorProvider
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/HorVerPortfolio.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/HorVerPortfolio.kt
index aa97b808..e1cf8517 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/HorVerPortfolio.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/HorVerPortfolio.kt
@@ -20,11 +20,11 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.experiment
+package org.opendc.experiments.capelin
-import org.opendc.experiments.sc20.experiment.model.OperationalPhenomena
-import org.opendc.experiments.sc20.experiment.model.Topology
-import org.opendc.experiments.sc20.experiment.model.Workload
+import org.opendc.experiments.capelin.model.OperationalPhenomena
+import org.opendc.experiments.capelin.model.Topology
+import org.opendc.experiments.capelin.model.Workload
import org.opendc.harness.dsl.anyOf
/**
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/MoreHpcPortfolio.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/MoreHpcPortfolio.kt
index bdb33f59..a995e467 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/MoreHpcPortfolio.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/MoreHpcPortfolio.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
@@ -20,9 +20,12 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.experiment
+package org.opendc.experiments.capelin
-import org.opendc.experiments.sc20.experiment.model.*
+import org.opendc.experiments.capelin.model.OperationalPhenomena
+import org.opendc.experiments.capelin.model.SamplingStrategy
+import org.opendc.experiments.capelin.model.Topology
+import org.opendc.experiments.capelin.model.Workload
import org.opendc.harness.dsl.anyOf
/**
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/MoreVelocityPortfolio.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/MoreVelocityPortfolio.kt
index 733dabf6..49559e0e 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/MoreVelocityPortfolio.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/MoreVelocityPortfolio.kt
@@ -20,11 +20,11 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.experiment
+package org.opendc.experiments.capelin
-import org.opendc.experiments.sc20.experiment.model.OperationalPhenomena
-import org.opendc.experiments.sc20.experiment.model.Topology
-import org.opendc.experiments.sc20.experiment.model.Workload
+import org.opendc.experiments.capelin.model.OperationalPhenomena
+import org.opendc.experiments.capelin.model.Topology
+import org.opendc.experiments.capelin.model.Workload
import org.opendc.harness.dsl.anyOf
/**
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/OperationalPhenomenaPortfolio.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/OperationalPhenomenaPortfolio.kt
index 66b94faf..1aac4f9e 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/OperationalPhenomenaPortfolio.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/OperationalPhenomenaPortfolio.kt
@@ -20,11 +20,11 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.experiment
+package org.opendc.experiments.capelin
-import org.opendc.experiments.sc20.experiment.model.OperationalPhenomena
-import org.opendc.experiments.sc20.experiment.model.Topology
-import org.opendc.experiments.sc20.experiment.model.Workload
+import org.opendc.experiments.capelin.model.OperationalPhenomena
+import org.opendc.experiments.capelin.model.Topology
+import org.opendc.experiments.capelin.model.Workload
import org.opendc.harness.dsl.anyOf
/**
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/Portfolio.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/Portfolio.kt
index 4a82ad56..75b0d735 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/Portfolio.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/Portfolio.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
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.experiment
+package org.opendc.experiments.capelin
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.cancel
@@ -29,13 +29,17 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.test.TestCoroutineScope
import mu.KotlinLogging
import org.opendc.compute.simulator.allocation.*
-import org.opendc.experiments.sc20.experiment.model.CompositeWorkload
-import org.opendc.experiments.sc20.experiment.model.OperationalPhenomena
-import org.opendc.experiments.sc20.experiment.model.Topology
-import org.opendc.experiments.sc20.experiment.model.Workload
-import org.opendc.experiments.sc20.experiment.monitor.ParquetExperimentMonitor
-import org.opendc.experiments.sc20.trace.Sc20ParquetTraceReader
-import org.opendc.experiments.sc20.trace.Sc20RawParquetTraceReader
+import org.opendc.experiments.capelin.experiment.attachMonitor
+import org.opendc.experiments.capelin.experiment.createFailureDomain
+import org.opendc.experiments.capelin.experiment.createProvisioner
+import org.opendc.experiments.capelin.experiment.processTrace
+import org.opendc.experiments.capelin.model.CompositeWorkload
+import org.opendc.experiments.capelin.model.OperationalPhenomena
+import org.opendc.experiments.capelin.model.Topology
+import org.opendc.experiments.capelin.model.Workload
+import org.opendc.experiments.capelin.monitor.ParquetExperimentMonitor
+import org.opendc.experiments.capelin.trace.Sc20ParquetTraceReader
+import org.opendc.experiments.capelin.trace.Sc20RawParquetTraceReader
import org.opendc.format.environment.sc20.Sc20ClusterEnvironmentReader
import org.opendc.format.trace.PerformanceInterferenceModelReader
import org.opendc.harness.dsl.Experiment
@@ -60,17 +64,17 @@ public abstract class Portfolio(name: String) : Experiment(name) {
/**
* The path to where the environments are located.
*/
- private val environmentPath by anyOf(File("environments/"))
+ private val environmentPath by anyOf(File("input/environments/"))
/**
* The path to where the traces are located.
*/
- private val tracePath by anyOf(File("traces/"))
+ private val tracePath by anyOf(File("input/traces/"))
/**
* The path to where the output results should be written.
*/
- private val outputPath by anyOf(File("results/"))
+ private val outputPath by anyOf(File("output/"))
/**
* The path to the original VM placements file.
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/ReplayPortfolio.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/ReplayPortfolio.kt
index 8a42a3b4..b6d3b30c 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/ReplayPortfolio.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/ReplayPortfolio.kt
@@ -20,11 +20,11 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.experiment
+package org.opendc.experiments.capelin
-import org.opendc.experiments.sc20.experiment.model.OperationalPhenomena
-import org.opendc.experiments.sc20.experiment.model.Topology
-import org.opendc.experiments.sc20.experiment.model.Workload
+import org.opendc.experiments.capelin.model.OperationalPhenomena
+import org.opendc.experiments.capelin.model.Topology
+import org.opendc.experiments.capelin.model.Workload
import org.opendc.harness.dsl.anyOf
/**
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/TestPortfolio.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/TestPortfolio.kt
index 2210fc97..90840db8 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/TestPortfolio.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/TestPortfolio.kt
@@ -20,11 +20,11 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.experiment
+package org.opendc.experiments.capelin
-import org.opendc.experiments.sc20.experiment.model.OperationalPhenomena
-import org.opendc.experiments.sc20.experiment.model.Topology
-import org.opendc.experiments.sc20.experiment.model.Workload
+import org.opendc.experiments.capelin.model.OperationalPhenomena
+import org.opendc.experiments.capelin.model.Topology
+import org.opendc.experiments.capelin.model.Workload
import org.opendc.harness.dsl.anyOf
/**
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/model/OperationalPhenomena.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/model/OperationalPhenomena.kt
index b22f4c9e..b53b3617 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/model/OperationalPhenomena.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/model/OperationalPhenomena.kt
@@ -1,7 +1,5 @@
/*
- * 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
@@ -22,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.experiment.model
+package org.opendc.experiments.capelin.model
/**
* Operation phenomena during experiments.
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/model/Topology.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/model/Topology.kt
index 95062fda..fe16a294 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/model/Topology.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/model/Topology.kt
@@ -1,7 +1,5 @@
/*
- * 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
@@ -22,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.experiment.model
+package org.opendc.experiments.capelin.model
/**
* The topology topology on which we test the workload.
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/model/Workload.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/model/Workload.kt
index ba95f544..c4ddd158 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/model/Workload.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/model/Workload.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
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.experiment.model
+package org.opendc.experiments.capelin.model
public enum class SamplingStrategy {
REGULAR,
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/monitor/ExperimentMonitor.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/monitor/ExperimentMonitor.kt
index 18ba2c33..3c6637bf 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/monitor/ExperimentMonitor.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/monitor/ExperimentMonitor.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
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.experiment.monitor
+package org.opendc.experiments.capelin.monitor
import org.opendc.compute.core.Server
import org.opendc.compute.core.virt.driver.VirtDriver
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/monitor/ParquetExperimentMonitor.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/monitor/ParquetExperimentMonitor.kt
index 3eb9362c..a0d57656 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/experiment/monitor/ParquetExperimentMonitor.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/monitor/ParquetExperimentMonitor.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
@@ -20,16 +20,16 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.experiment.monitor
+package org.opendc.experiments.capelin.monitor
import mu.KotlinLogging
import org.opendc.compute.core.Server
import org.opendc.compute.core.virt.driver.VirtDriver
import org.opendc.compute.core.virt.service.VirtProvisioningEvent
-import org.opendc.experiments.sc20.telemetry.HostEvent
-import org.opendc.experiments.sc20.telemetry.ProvisionerEvent
-import org.opendc.experiments.sc20.telemetry.parquet.ParquetHostEventWriter
-import org.opendc.experiments.sc20.telemetry.parquet.ParquetProvisionerEventWriter
+import org.opendc.experiments.capelin.telemetry.HostEvent
+import org.opendc.experiments.capelin.telemetry.ProvisionerEvent
+import org.opendc.experiments.capelin.telemetry.parquet.ParquetHostEventWriter
+import org.opendc.experiments.capelin.telemetry.parquet.ParquetProvisionerEventWriter
import java.io.File
/**
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/Event.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/Event.kt
index 38a4a227..c29e116e 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/Event.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/Event.kt
@@ -22,7 +22,7 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.telemetry
+package org.opendc.experiments.capelin.telemetry
/**
* An event that occurs within the system.
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/HostEvent.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/HostEvent.kt
index 042d204e..e5e9d520 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/HostEvent.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/HostEvent.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.telemetry
+package org.opendc.experiments.capelin.telemetry
import org.opendc.compute.core.Server
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/ProvisionerEvent.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/ProvisionerEvent.kt
index d063bc54..539c9bc9 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/ProvisionerEvent.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/ProvisionerEvent.kt
@@ -22,7 +22,7 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.telemetry
+package org.opendc.experiments.capelin.telemetry
/**
* A periodic report of the provisioner's metrics.
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/RunEvent.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/RunEvent.kt
index 4f4706f0..6c8fc941 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/RunEvent.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/RunEvent.kt
@@ -20,9 +20,9 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.telemetry
+package org.opendc.experiments.capelin.telemetry
-import org.opendc.experiments.sc20.experiment.Portfolio
+import org.opendc.experiments.capelin.Portfolio
/**
* A periodic report of the host machine metrics.
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/VmEvent.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/VmEvent.kt
index c18069c9..427c453a 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/VmEvent.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/VmEvent.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.telemetry
+package org.opendc.experiments.capelin.telemetry
import org.opendc.compute.core.Server
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/parquet/ParquetEventWriter.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/parquet/ParquetEventWriter.kt
index 79bc23db..38930ee5 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/parquet/ParquetEventWriter.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/parquet/ParquetEventWriter.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.telemetry.parquet
+package org.opendc.experiments.capelin.telemetry.parquet
import mu.KotlinLogging
import org.apache.avro.Schema
@@ -28,7 +28,7 @@ import org.apache.avro.generic.GenericData
import org.apache.hadoop.fs.Path
import org.apache.parquet.avro.AvroParquetWriter
import org.apache.parquet.hadoop.metadata.CompressionCodecName
-import org.opendc.experiments.sc20.telemetry.Event
+import org.opendc.experiments.capelin.telemetry.Event
import java.io.Closeable
import java.io.File
import java.util.concurrent.ArrayBlockingQueue
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/parquet/ParquetHostEventWriter.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/parquet/ParquetHostEventWriter.kt
index bd4eae37..4a3e7963 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/parquet/ParquetHostEventWriter.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/parquet/ParquetHostEventWriter.kt
@@ -20,12 +20,12 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.telemetry.parquet
+package org.opendc.experiments.capelin.telemetry.parquet
import org.apache.avro.Schema
import org.apache.avro.SchemaBuilder
import org.apache.avro.generic.GenericData
-import org.opendc.experiments.sc20.telemetry.HostEvent
+import org.opendc.experiments.capelin.telemetry.HostEvent
import java.io.File
/**
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/parquet/ParquetProvisionerEventWriter.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/parquet/ParquetProvisionerEventWriter.kt
index 5d53a7bb..8feff8d9 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/parquet/ParquetProvisionerEventWriter.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/parquet/ParquetProvisionerEventWriter.kt
@@ -20,12 +20,12 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.telemetry.parquet
+package org.opendc.experiments.capelin.telemetry.parquet
import org.apache.avro.Schema
import org.apache.avro.SchemaBuilder
import org.apache.avro.generic.GenericData
-import org.opendc.experiments.sc20.telemetry.ProvisionerEvent
+import org.opendc.experiments.capelin.telemetry.ProvisionerEvent
import java.io.File
/**
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/parquet/ParquetRunEventWriter.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/parquet/ParquetRunEventWriter.kt
index b50a698c..946410eb 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/telemetry/parquet/ParquetRunEventWriter.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/telemetry/parquet/ParquetRunEventWriter.kt
@@ -20,12 +20,12 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.telemetry.parquet
+package org.opendc.experiments.capelin.telemetry.parquet
import org.apache.avro.Schema
import org.apache.avro.SchemaBuilder
import org.apache.avro.generic.GenericData
-import org.opendc.experiments.sc20.telemetry.RunEvent
+import org.opendc.experiments.capelin.telemetry.RunEvent
import java.io.File
/**
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/trace/Sc20ParquetTraceReader.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/trace/Sc20ParquetTraceReader.kt
index d735ea4b..6cfdae40 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/trace/Sc20ParquetTraceReader.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/trace/Sc20ParquetTraceReader.kt
@@ -20,12 +20,12 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.trace
+package org.opendc.experiments.capelin.trace
import org.opendc.compute.core.workload.VmWorkload
import org.opendc.compute.simulator.SimWorkloadImage
-import org.opendc.experiments.sc20.experiment.model.CompositeWorkload
-import org.opendc.experiments.sc20.experiment.model.Workload
+import org.opendc.experiments.capelin.model.CompositeWorkload
+import org.opendc.experiments.capelin.model.Workload
import org.opendc.format.trace.TraceEntry
import org.opendc.format.trace.TraceReader
import org.opendc.simulator.compute.interference.IMAGE_PERF_INTERFERENCE_MODEL
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/trace/Sc20RawParquetTraceReader.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/trace/Sc20RawParquetTraceReader.kt
index 4a318df4..d2560d62 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/trace/Sc20RawParquetTraceReader.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/trace/Sc20RawParquetTraceReader.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.trace
+package org.opendc.experiments.capelin.trace
import mu.KotlinLogging
import org.apache.avro.generic.GenericData
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/trace/Sc20StreamingParquetTraceReader.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/trace/Sc20StreamingParquetTraceReader.kt
index ba22ae15..12705c80 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/trace/Sc20StreamingParquetTraceReader.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/trace/Sc20StreamingParquetTraceReader.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.trace
+package org.opendc.experiments.capelin.trace
import mu.KotlinLogging
import org.apache.avro.generic.GenericData
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/trace/Sc20TraceConverter.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/trace/Sc20TraceConverter.kt
index 9a9598e7..7713c06f 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/trace/Sc20TraceConverter.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/trace/Sc20TraceConverter.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.trace
+package org.opendc.experiments.capelin.trace
import com.github.ajalt.clikt.core.CliktCommand
import com.github.ajalt.clikt.parameters.arguments.argument
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/trace/WorkloadSampler.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/trace/WorkloadSampler.kt
index a8b83aef..4d9b9df1 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/kotlin/org/opendc/experiments/sc20/trace/WorkloadSampler.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/trace/WorkloadSampler.kt
@@ -20,14 +20,14 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20.trace
+package org.opendc.experiments.capelin.trace
import mu.KotlinLogging
import org.opendc.compute.core.workload.VmWorkload
import org.opendc.compute.simulator.SimWorkloadImage
-import org.opendc.experiments.sc20.experiment.model.CompositeWorkload
-import org.opendc.experiments.sc20.experiment.model.SamplingStrategy
-import org.opendc.experiments.sc20.experiment.model.Workload
+import org.opendc.experiments.capelin.model.CompositeWorkload
+import org.opendc.experiments.capelin.model.SamplingStrategy
+import org.opendc.experiments.capelin.model.Workload
import org.opendc.format.trace.TraceEntry
import java.util.*
import kotlin.random.Random
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/resources/log4j2.xml b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/resources/log4j2.xml
index 8029092e..d1c01b8e 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/main/resources/log4j2.xml
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/main/resources/log4j2.xml
@@ -33,10 +33,10 @@
<Logger name="org.opendc" level="debug" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
- <Logger name="org.opendc.experiments.sc20" level="info" additivity="false">
+ <Logger name="org.opendc.experiments.capelin" level="info" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
- <Logger name="org.opendc.experiments.sc20.trace" level="debug" additivity="false">
+ <Logger name="org.opendc.experiments.capelin.trace" level="debug" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
<Logger name="org.apache.hadoop" level="warn" additivity="false">
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/test/kotlin/org/opendc/experiments/sc20/Sc20IntegrationTest.kt b/simulator/opendc-experiments/opendc-experiments-capelin/src/test/kotlin/org/opendc/experiments/capelin/CapelinIntegrationTest.kt
index c5ad345d..6a0796f6 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/test/kotlin/org/opendc/experiments/sc20/Sc20IntegrationTest.kt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/test/kotlin/org/opendc/experiments/capelin/CapelinIntegrationTest.kt
@@ -20,7 +20,7 @@
* SOFTWARE.
*/
-package org.opendc.experiments.sc20
+package org.opendc.experiments.capelin
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.cancel
@@ -36,14 +36,14 @@ import org.opendc.compute.core.Server
import org.opendc.compute.core.workload.VmWorkload
import org.opendc.compute.simulator.SimVirtProvisioningService
import org.opendc.compute.simulator.allocation.AvailableCoreMemoryAllocationPolicy
-import org.opendc.experiments.sc20.experiment.attachMonitor
-import org.opendc.experiments.sc20.experiment.createFailureDomain
-import org.opendc.experiments.sc20.experiment.createProvisioner
-import org.opendc.experiments.sc20.experiment.model.Workload
-import org.opendc.experiments.sc20.experiment.monitor.ExperimentMonitor
-import org.opendc.experiments.sc20.experiment.processTrace
-import org.opendc.experiments.sc20.trace.Sc20ParquetTraceReader
-import org.opendc.experiments.sc20.trace.Sc20RawParquetTraceReader
+import org.opendc.experiments.capelin.experiment.attachMonitor
+import org.opendc.experiments.capelin.experiment.createFailureDomain
+import org.opendc.experiments.capelin.experiment.createProvisioner
+import org.opendc.experiments.capelin.experiment.processTrace
+import org.opendc.experiments.capelin.model.Workload
+import org.opendc.experiments.capelin.monitor.ExperimentMonitor
+import org.opendc.experiments.capelin.trace.Sc20ParquetTraceReader
+import org.opendc.experiments.capelin.trace.Sc20RawParquetTraceReader
import org.opendc.format.environment.EnvironmentReader
import org.opendc.format.environment.sc20.Sc20ClusterEnvironmentReader
import org.opendc.format.trace.TraceReader
@@ -56,7 +56,7 @@ import java.time.Clock
* An integration test suite for the SC20 experiments.
*/
@OptIn(ExperimentalCoroutinesApi::class)
-class Sc20IntegrationTest {
+class CapelinIntegrationTest {
/**
* The [TestCoroutineScope] to use.
*/
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/test/resources/env/single.txt b/simulator/opendc-experiments/opendc-experiments-capelin/src/test/resources/env/single.txt
index 53b3c2d7..53b3c2d7 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/test/resources/env/single.txt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/test/resources/env/single.txt
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/test/resources/env/topology.txt b/simulator/opendc-experiments/opendc-experiments-capelin/src/test/resources/env/topology.txt
index 6b347bff..6b347bff 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/test/resources/env/topology.txt
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/test/resources/env/topology.txt
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/test/resources/trace/meta.parquet b/simulator/opendc-experiments/opendc-experiments-capelin/src/test/resources/trace/meta.parquet
index ce7a812c..ce7a812c 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/test/resources/trace/meta.parquet
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/test/resources/trace/meta.parquet
Binary files differ
diff --git a/simulator/opendc-experiments/opendc-experiments-sc20/src/test/resources/trace/trace.parquet b/simulator/opendc-experiments/opendc-experiments-capelin/src/test/resources/trace/trace.parquet
index 1d7ce882..1d7ce882 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc20/src/test/resources/trace/trace.parquet
+++ b/simulator/opendc-experiments/opendc-experiments-capelin/src/test/resources/trace/trace.parquet
Binary files differ
diff --git a/simulator/opendc-experiments/opendc-experiments-sc18/.gitignore b/simulator/opendc-experiments/opendc-experiments-sc18/.gitignore
new file mode 100644
index 00000000..ba64707c
--- /dev/null
+++ b/simulator/opendc-experiments/opendc-experiments-sc18/.gitignore
@@ -0,0 +1,2 @@
+input/
+output/
diff --git a/simulator/opendc-experiments/opendc-experiments-sc18/build.gradle.kts b/simulator/opendc-experiments/opendc-experiments-sc18/build.gradle.kts
index b6b35694..00aa0395 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc18/build.gradle.kts
+++ b/simulator/opendc-experiments/opendc-experiments-sc18/build.gradle.kts
@@ -20,31 +20,20 @@
* SOFTWARE.
*/
-description = "Experiments for the TPDS paper"
+description = "Experiments for the SC18 article"
/* Build configuration */
plugins {
- `kotlin-library-convention`
- application
-}
-
-application {
- mainClass.set("org.opendc.harness.runner.console.ConsoleRunnerKt")
+ `kotlin-library-conventions`
+ `experiment-conventions`
}
dependencies {
+ api(platform(project(":opendc-platform")))
api(project(":opendc-core"))
api(project(":opendc-harness"))
implementation(project(":opendc-format"))
implementation(project(":opendc-workflows"))
implementation(project(":opendc-simulator:opendc-simulator-core"))
implementation(project(":opendc-compute:opendc-compute-simulator"))
- implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.9.8") {
- exclude("org.jetbrains.kotlin", module = "kotlin-reflect")
- }
- implementation(kotlin("reflect"))
-
- testImplementation("org.junit.jupiter:junit-jupiter-api:${Library.JUNIT_JUPITER}")
- testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${Library.JUNIT_JUPITER}")
- testImplementation("org.junit.platform:junit-platform-launcher:${Library.JUNIT_PLATFORM}")
}
diff --git a/simulator/opendc-experiments/opendc-experiments-sc18/src/main/kotlin/org/opendc/experiments/sc18/UnderspecificationExperiment.kt b/simulator/opendc-experiments/opendc-experiments-sc18/src/main/kotlin/org/opendc/experiments/sc18/UnderspecificationExperiment.kt
index 6d2c0ec7..fc979363 100644
--- a/simulator/opendc-experiments/opendc-experiments-sc18/src/main/kotlin/org/opendc/experiments/sc18/UnderspecificationExperiment.kt
+++ b/simulator/opendc-experiments/opendc-experiments-sc18/src/main/kotlin/org/opendc/experiments/sc18/UnderspecificationExperiment.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
@@ -55,12 +55,12 @@ public class UnderspecificationExperiment : Experiment("underspecification") {
/**
* The workflow traces to test.
*/
- private val trace: String by anyOf("traces/chronos_exp_noscaler_ca.gwf")
+ private val trace: String by anyOf("input/traces/chronos_exp_noscaler_ca.gwf")
/**
* The datacenter environments to test.
*/
- private val environment: String by anyOf("environments/base.json")
+ private val environment: String by anyOf("input/environments/base.json")
@OptIn(ExperimentalCoroutinesApi::class)
override fun doRun(repeat: Int) {
diff --git a/simulator/opendc-format/build.gradle.kts b/simulator/opendc-format/build.gradle.kts
index 30aafc90..cd26c077 100644
--- a/simulator/opendc-format/build.gradle.kts
+++ b/simulator/opendc-format/build.gradle.kts
@@ -24,27 +24,22 @@ description = "Library for reading common data formats for topology simulation"
/* Build configuration */
plugins {
- `kotlin-library-convention`
+ `kotlin-library-conventions`
+ `testing-conventions`
}
dependencies {
+ api(platform(project(":opendc-platform")))
api(project(":opendc-core"))
api(project(":opendc-compute:opendc-compute-core"))
api(project(":opendc-workflows"))
implementation(project(":opendc-simulator:opendc-simulator-compute"))
implementation(project(":opendc-compute:opendc-compute-simulator"))
- implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.9.8") {
- exclude("org.jetbrains.kotlin", module = "kotlin-reflect")
- }
- implementation(kotlin("reflect"))
+ api("com.fasterxml.jackson.module:jackson-module-kotlin:${versions["jackson-module-kotlin"]}")
- implementation("org.apache.parquet:parquet-avro:1.11.0")
- implementation("org.apache.hadoop:hadoop-client:3.2.1") {
+ implementation("org.apache.parquet:parquet-avro:${versions["parquet-avro"]}")
+ implementation("org.apache.hadoop:hadoop-client:${versions["hadoop-client"]}") {
exclude(group = "org.slf4j", module = "slf4j-log4j12")
exclude(group = "log4j")
}
-
- testImplementation("org.junit.jupiter:junit-jupiter-api:${Library.JUNIT_JUPITER}")
- testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${Library.JUNIT_JUPITER}")
- testImplementation("org.junit.platform:junit-platform-launcher:${Library.JUNIT_PLATFORM}")
}
diff --git a/simulator/opendc-harness/build.gradle.kts b/simulator/opendc-harness/build.gradle.kts
index 359d2384..f980853c 100644
--- a/simulator/opendc-harness/build.gradle.kts
+++ b/simulator/opendc-harness/build.gradle.kts
@@ -24,24 +24,21 @@ description = "Harness for defining repeatable experiments using OpenDC"
/* Build configuration */
plugins {
- `kotlin-library-convention`
+ `kotlin-library-conventions`
+ `testing-conventions`
}
dependencies {
- api("org.jetbrains.kotlinx:kotlinx-coroutines-core:${Library.KOTLINX_COROUTINES}")
- api("org.junit.platform:junit-platform-commons:${Library.JUNIT_PLATFORM}")
+ api(platform(project(":opendc-platform")))
+ api("org.jetbrains.kotlinx:kotlinx-coroutines-core")
+ api("org.junit.platform:junit-platform-commons:${versions.junitPlatform}")
- implementation("io.github.classgraph:classgraph:4.8.98")
- implementation("me.tongfei:progressbar:0.9.0")
- implementation("io.github.microutils:kotlin-logging:2.0.4")
- implementation("com.github.ajalt.clikt:clikt:3.1.0")
+ implementation("org.junit.platform:junit-platform-engine:${versions.junitPlatform}")
+ implementation("io.github.classgraph:classgraph:${versions["classgraph"]}")
+ implementation("io.github.microutils:kotlin-logging")
- api("org.junit.platform:junit-platform-engine:${Library.JUNIT_PLATFORM}")
- api("org.junit.platform:junit-platform-suite-api:${Library.JUNIT_PLATFORM}")
- api("org.junit.platform:junit-platform-launcher:${Library.JUNIT_PLATFORM}")
+ implementation("com.github.ajalt.clikt:clikt:${versions["clikt"]}")
+ implementation("me.tongfei:progressbar:${versions["progressbar"]}")
- runtimeOnly("org.apache.logging.log4j:log4j-slf4j-impl:2.14.0")
-
- testImplementation("org.junit.jupiter:junit-jupiter-api:${Library.JUNIT_JUPITER}")
- testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${Library.JUNIT_JUPITER}")
+ runtimeOnly("org.apache.logging.log4j:log4j-slf4j-impl:${versions.log4j}")
}
diff --git a/simulator/opendc-harness/src/main/kotlin/org/opendc/harness/engine/ExperimentEngine.kt b/simulator/opendc-harness/src/main/kotlin/org/opendc/harness/engine/ExperimentEngine.kt
index 65a0604d..a36f1f9b 100644
--- a/simulator/opendc-harness/src/main/kotlin/org/opendc/harness/engine/ExperimentEngine.kt
+++ b/simulator/opendc-harness/src/main/kotlin/org/opendc/harness/engine/ExperimentEngine.kt
@@ -51,38 +51,48 @@ public class ExperimentEngine(
*
* @param root The experiment to execute.
*/
- @OptIn(InternalCoroutinesApi::class)
- public suspend fun execute(root: ExperimentDefinition): Unit = supervisorScope {
+ public suspend fun execute(root: ExperimentDefinition) {
listener.experimentStarted(root)
try {
- strategy.generate(root)
- .asFlow()
- .map { scenario ->
- listener.scenarioStarted(scenario)
- scenario
- }
- .buffer(100)
- .collect { scenario ->
- val jobs = (0 until repeats).map { repeat ->
- val worker = scheduler.allocate()
+ supervisorScope {
+ strategy.generate(root)
+ .asFlow()
+ .map { scenario ->
+ listener.scenarioStarted(scenario)
+ scenario
+ }
+ .buffer(100)
+ .collect { scenario ->
launch {
- val trial = Trial(scenario, repeat)
+ val jobs = (0 until repeats).map { repeat ->
+ val worker = scheduler.allocate()
+ launch {
+ val trial = Trial(scenario, repeat)
+ try {
+ listener.trialStarted(trial)
+ worker.dispatch(trial)
+ listener.trialFinished(trial, null)
+ } catch (e: Throwable) {
+ listener.trialFinished(trial, e)
+ throw e
+ }
+ }
+ }
+
try {
- listener.trialStarted(trial)
- worker.dispatch(trial)
- listener.trialFinished(trial, null)
+ jobs.joinAll()
+ listener.scenarioFinished(scenario, null)
+ } catch (e: CancellationException) {
+ listener.scenarioFinished(scenario, null)
+ throw e
} catch (e: Throwable) {
- listener.trialFinished(trial, e)
+ listener.scenarioFinished(scenario, e)
}
}
}
+ }
- launch {
- jobs.joinAll()
- listener.scenarioFinished(scenario, null)
- }
- }
listener.experimentFinished(root, null)
} catch (e: Throwable) {
listener.experimentFinished(root, e)
diff --git a/simulator/opendc-harness/src/main/kotlin/org/opendc/harness/runner/junit5/JUnitExperimentExecutionListener.kt b/simulator/opendc-harness/src/main/kotlin/org/opendc/harness/runner/junit5/JUnitExperimentExecutionListener.kt
index 58791549..9e2b629d 100644
--- a/simulator/opendc-harness/src/main/kotlin/org/opendc/harness/runner/junit5/JUnitExperimentExecutionListener.kt
+++ b/simulator/opendc-harness/src/main/kotlin/org/opendc/harness/runner/junit5/JUnitExperimentExecutionListener.kt
@@ -24,11 +24,13 @@ package org.opendc.harness.runner.junit5
import org.junit.platform.engine.*
import org.junit.platform.engine.support.descriptor.AbstractTestDescriptor
+import org.junit.platform.engine.support.descriptor.ClassSource
import org.junit.platform.engine.support.descriptor.EngineDescriptor
import org.opendc.harness.api.ExperimentDefinition
import org.opendc.harness.api.Scenario
import org.opendc.harness.api.Trial
import org.opendc.harness.engine.ExperimentExecutionListener
+import java.util.*
/**
* An [ExperimentExecutionListener] that notifies JUnit platform of the progress of the experiment trials.
@@ -121,6 +123,14 @@ public class JUnitExperimentExecutionListener(
override fun mayRegisterTests(): Boolean = true
override fun toString(): String = "ExperimentDescriptor"
+
+ override fun getSource(): Optional<TestSource> {
+ val cls = meta["class.name"] as? String
+ return if (cls != null)
+ Optional.of(ClassSource.from(cls))
+ else
+ Optional.empty()
+ }
}
}
diff --git a/simulator/opendc-harness/src/main/kotlin/org/opendc/harness/runner/junit5/OpenDCTestEngine.kt b/simulator/opendc-harness/src/main/kotlin/org/opendc/harness/runner/junit5/OpenDCTestEngine.kt
index 685cd41a..ab7367b8 100644
--- a/simulator/opendc-harness/src/main/kotlin/org/opendc/harness/runner/junit5/OpenDCTestEngine.kt
+++ b/simulator/opendc-harness/src/main/kotlin/org/opendc/harness/runner/junit5/OpenDCTestEngine.kt
@@ -30,13 +30,13 @@ import org.junit.platform.engine.discovery.ClassNameFilter
import org.junit.platform.engine.discovery.ClassSelector
import org.junit.platform.engine.discovery.MethodSelector
import org.junit.platform.engine.support.descriptor.EngineDescriptor
-import org.junit.platform.launcher.LauncherDiscoveryRequest
import org.opendc.harness.api.ExperimentDefinition
import org.opendc.harness.engine.ExperimentEngineLauncher
import org.opendc.harness.engine.discovery.DiscoveryFilter
import org.opendc.harness.engine.discovery.DiscoveryProvider
import org.opendc.harness.engine.discovery.DiscoveryRequest
import org.opendc.harness.engine.discovery.DiscoverySelector
+import java.util.*
/**
* A [TestEngine] implementation that is able to run experiments defined using the harness.
@@ -47,15 +47,13 @@ public class OpenDCTestEngine : TestEngine {
*/
private val logger = KotlinLogging.logger {}
- override fun getId(): String = "opendc"
+ override fun getId(): String = "opendc-harness"
- override fun discover(request: EngineDiscoveryRequest, uniqueId: UniqueId): TestDescriptor {
- // Test whether are excluded from the engines
- val isEnabled = (request as? LauncherDiscoveryRequest)?.engineFilters?.all { it.toPredicate().test(this) } ?: true
- if (!isEnabled) {
- return ExperimentEngineDescriptor(uniqueId, emptyFlow())
- }
+ override fun getGroupId(): Optional<String> = Optional.of("org.opendc")
+ override fun getArtifactId(): Optional<String> = Optional.of("opendc-harness")
+
+ override fun discover(request: EngineDiscoveryRequest, uniqueId: UniqueId): TestDescriptor {
// IntelliJ will pass a [MethodSelector] to run just a single method inside a file. In that
// case, no experiments should be discovered, since we support only experiments by class.
if (request.getSelectorsByType(MethodSelector::class.java).isNotEmpty()) {
diff --git a/simulator/opendc-platform/build.gradle.kts b/simulator/opendc-platform/build.gradle.kts
new file mode 100644
index 00000000..0ae1c72a
--- /dev/null
+++ b/simulator/opendc-platform/build.gradle.kts
@@ -0,0 +1,37 @@
+/*
+ * 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.
+ */
+
+plugins {
+ `java-platform`
+}
+
+description = "Java platform for the OpenDC project"
+
+dependencies {
+ constraints {
+ api("org.jetbrains.kotlinx:kotlinx-coroutines-core:${versions.kotlinxCoroutines}")
+ api("org.jetbrains.kotlinx:kotlinx-coroutines-test:${versions.kotlinxCoroutines}")
+
+ api("io.github.microutils:kotlin-logging:${versions.kotlinLogging}")
+ runtime("org.slf4j:slf4j-simple:${versions.slf4j}")
+ }
+}
diff --git a/simulator/opendc-runner-web/build.gradle.kts b/simulator/opendc-runner-web/build.gradle.kts
index 7ae3c641..d0b80cc7 100644
--- a/simulator/opendc-runner-web/build.gradle.kts
+++ b/simulator/opendc-runner-web/build.gradle.kts
@@ -24,7 +24,7 @@ description = "Experiment runner for OpenDC"
/* Build configuration */
plugins {
- `kotlin-library-convention`
+ `kotlin-library-conventions`
application
}
@@ -33,21 +33,20 @@ application {
}
dependencies {
+ api(platform(project(":opendc-platform")))
api(project(":opendc-core"))
implementation(project(":opendc-compute:opendc-compute-simulator"))
implementation(project(":opendc-format"))
- implementation(project(":opendc-experiments:opendc-experiments-sc20"))
+ implementation(project(":opendc-experiments:opendc-experiments-capelin"))
implementation(project(":opendc-simulator:opendc-simulator-core"))
implementation(project(":opendc-simulator:opendc-simulator-compute"))
- implementation("com.github.ajalt:clikt:2.8.0")
- implementation("io.github.microutils:kotlin-logging:1.7.10")
- implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.9.8") {
- exclude("org.jetbrains.kotlin", module = "kotlin-reflect")
- }
- implementation("io.sentry:sentry-log4j2:3.1.1")
- implementation("org.mongodb:mongodb-driver-sync:4.0.5")
+ implementation("io.github.microutils:kotlin-logging")
+ implementation("com.github.ajalt.clikt:clikt:${versions["clikt"]}")
+ implementation("com.fasterxml.jackson.module:jackson-module-kotlin:${versions["jackson-module-kotlin"]}")
+ implementation("io.sentry:sentry-log4j2:${versions["sentry-log4j2"]}")
+ implementation("org.mongodb:mongodb-driver-sync:${versions["mongodb-driver-sync"]}")
- runtimeOnly("org.apache.logging.log4j:log4j-slf4j-impl:2.13.1")
- runtimeOnly("org.apache.logging.log4j:log4j-1.2-api:2.13.1")
+ runtimeOnly("org.apache.logging.log4j:log4j-slf4j-impl:${versions.log4j}")
+ runtimeOnly("org.apache.logging.log4j:log4j-1.2-api:${versions.log4j}")
}
diff --git a/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/Main.kt b/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/Main.kt
index 7796019a..533bf321 100644
--- a/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/Main.kt
+++ b/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/Main.kt
@@ -41,13 +41,13 @@ import mu.KotlinLogging
import org.bson.Document
import org.bson.types.ObjectId
import org.opendc.compute.simulator.allocation.*
-import org.opendc.experiments.sc20.experiment.attachMonitor
-import org.opendc.experiments.sc20.experiment.createFailureDomain
-import org.opendc.experiments.sc20.experiment.createProvisioner
-import org.opendc.experiments.sc20.experiment.model.Workload
-import org.opendc.experiments.sc20.experiment.processTrace
-import org.opendc.experiments.sc20.trace.Sc20ParquetTraceReader
-import org.opendc.experiments.sc20.trace.Sc20RawParquetTraceReader
+import org.opendc.experiments.capelin.experiment.attachMonitor
+import org.opendc.experiments.capelin.experiment.createFailureDomain
+import org.opendc.experiments.capelin.experiment.createProvisioner
+import org.opendc.experiments.capelin.experiment.processTrace
+import org.opendc.experiments.capelin.model.Workload
+import org.opendc.experiments.capelin.trace.Sc20ParquetTraceReader
+import org.opendc.experiments.capelin.trace.Sc20RawParquetTraceReader
import org.opendc.format.trace.sc20.Sc20PerformanceInterferenceReader
import org.opendc.simulator.utils.DelayControllerClockAdapter
import org.opendc.trace.core.EventTracer
diff --git a/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/WebExperimentMonitor.kt b/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/WebExperimentMonitor.kt
index 7ef25552..f16f9b90 100644
--- a/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/WebExperimentMonitor.kt
+++ b/simulator/opendc-runner-web/src/main/kotlin/org/opendc/runner/web/WebExperimentMonitor.kt
@@ -27,8 +27,8 @@ import org.opendc.compute.core.Server
import org.opendc.compute.core.ServerState
import org.opendc.compute.core.virt.driver.VirtDriver
import org.opendc.compute.core.virt.service.VirtProvisioningEvent
-import org.opendc.experiments.sc20.experiment.monitor.ExperimentMonitor
-import org.opendc.experiments.sc20.telemetry.HostEvent
+import org.opendc.experiments.capelin.monitor.ExperimentMonitor
+import org.opendc.experiments.capelin.telemetry.HostEvent
import kotlin.math.max
/**
diff --git a/simulator/opendc-simulator/opendc-simulator-compute/build.gradle.kts b/simulator/opendc-simulator/opendc-simulator-compute/build.gradle.kts
index 844a7c6d..19af6fe8 100644
--- a/simulator/opendc-simulator/opendc-simulator-compute/build.gradle.kts
+++ b/simulator/opendc-simulator/opendc-simulator-compute/build.gradle.kts
@@ -23,14 +23,12 @@
description = "Library for simulation of cloud computing components"
plugins {
- `kotlin-library-convention`
+ `kotlin-library-conventions`
+ `testing-conventions`
}
dependencies {
+ api(platform(project(":opendc-platform")))
api(project(":opendc-simulator:opendc-simulator-core"))
implementation(project(":opendc-utils"))
-
- testImplementation("org.junit.jupiter:junit-jupiter-api:${Library.JUNIT_JUPITER}")
- testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${Library.JUNIT_JUPITER}")
- testImplementation("org.junit.platform:junit-platform-launcher:${Library.JUNIT_PLATFORM}")
}
diff --git a/simulator/opendc-simulator/opendc-simulator-core/build.gradle.kts b/simulator/opendc-simulator/opendc-simulator-core/build.gradle.kts
index a740dcf3..309afb19 100644
--- a/simulator/opendc-simulator/opendc-simulator-core/build.gradle.kts
+++ b/simulator/opendc-simulator/opendc-simulator-core/build.gradle.kts
@@ -24,9 +24,10 @@ description = "Simulation-specific code for use in OpenDC"
/* Build configuration */
plugins {
- `kotlin-library-convention`
+ `kotlin-library-conventions`
}
dependencies {
- api("org.jetbrains.kotlinx:kotlinx-coroutines-test:${Library.KOTLINX_COROUTINES}")
+ api(platform(project(":opendc-platform")))
+ api("org.jetbrains.kotlinx:kotlinx-coroutines-test")
}
diff --git a/simulator/opendc-simulator/opendc-simulator-failures/build.gradle.kts b/simulator/opendc-simulator/opendc-simulator-failures/build.gradle.kts
index 1c30506f..0f6b2de2 100644
--- a/simulator/opendc-simulator/opendc-simulator-failures/build.gradle.kts
+++ b/simulator/opendc-simulator/opendc-simulator-failures/build.gradle.kts
@@ -23,9 +23,10 @@
description = "Failure models for OpenDC"
plugins {
- `kotlin-library-convention`
+ `kotlin-library-conventions`
}
dependencies {
- api("org.jetbrains.kotlinx:kotlinx-coroutines-core:${Library.KOTLINX_COROUTINES}")
+ api(platform(project(":opendc-platform")))
+ api("org.jetbrains.kotlinx:kotlinx-coroutines-core")
}
diff --git a/simulator/opendc-trace/opendc-trace-core/build.gradle.kts b/simulator/opendc-trace/opendc-trace-core/build.gradle.kts
index 3db6669a..3051f733 100644
--- a/simulator/opendc-trace/opendc-trace-core/build.gradle.kts
+++ b/simulator/opendc-trace/opendc-trace-core/build.gradle.kts
@@ -24,9 +24,10 @@ description = "Event tracing library for OpenDC"
/* Build configuration */
plugins {
- `kotlin-library-convention`
+ `kotlin-library-conventions`
}
dependencies {
- api("org.jetbrains.kotlinx:kotlinx-coroutines-core:${Library.KOTLINX_COROUTINES}")
+ api(platform(project(":opendc-platform")))
+ api("org.jetbrains.kotlinx:kotlinx-coroutines-core")
}
diff --git a/simulator/opendc-utils/build.gradle.kts b/simulator/opendc-utils/build.gradle.kts
index d4b8c514..48214665 100644
--- a/simulator/opendc-utils/build.gradle.kts
+++ b/simulator/opendc-utils/build.gradle.kts
@@ -24,14 +24,13 @@ description = "Utilities used across OpenDC modules"
/* Build configuration */
plugins {
- `kotlin-library-convention`
+ `kotlin-library-conventions`
+ `testing-conventions`
}
dependencies {
- api("org.jetbrains.kotlinx:kotlinx-coroutines-core:${Library.KOTLINX_COROUTINES}")
+ api(platform(project(":opendc-platform")))
+ api("org.jetbrains.kotlinx:kotlinx-coroutines-core")
testImplementation(project(":opendc-simulator:opendc-simulator-core"))
- testImplementation("org.junit.jupiter:junit-jupiter-api:${Library.JUNIT_JUPITER}")
- testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${Library.JUNIT_JUPITER}")
- testImplementation("org.junit.platform:junit-platform-launcher:${Library.JUNIT_PLATFORM}")
}
diff --git a/simulator/opendc-workflows/build.gradle.kts b/simulator/opendc-workflows/build.gradle.kts
index e9c85de5..b4ffac7d 100644
--- a/simulator/opendc-workflows/build.gradle.kts
+++ b/simulator/opendc-workflows/build.gradle.kts
@@ -24,7 +24,8 @@ description = "Workflow service for OpenDC"
/* Build configuration */
plugins {
- `kotlin-library-convention`
+ `kotlin-library-conventions`
+ `testing-conventions`
}
dependencies {
@@ -32,17 +33,11 @@ dependencies {
api(project(":opendc-compute:opendc-compute-core"))
api(project(":opendc-trace:opendc-trace-core"))
implementation(project(":opendc-utils"))
- implementation("io.github.microutils:kotlin-logging:1.7.9")
+ implementation("io.github.microutils:kotlin-logging:${versions.kotlinLogging}")
testImplementation(project(":opendc-simulator:opendc-simulator-core"))
testImplementation(project(":opendc-compute:opendc-compute-simulator"))
testImplementation(project(":opendc-format"))
- testImplementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.9.8") {
- exclude("org.jetbrains.kotlin", module = "kotlin-reflect")
- }
- testImplementation(kotlin("reflect"))
- testRuntimeOnly("org.slf4j:slf4j-simple:${Library.SLF4J}")
- testImplementation("org.junit.jupiter:junit-jupiter-api:${Library.JUNIT_JUPITER}")
- testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${Library.JUNIT_JUPITER}")
- testImplementation("org.junit.platform:junit-platform-launcher:${Library.JUNIT_PLATFORM}")
+ testImplementation("com.fasterxml.jackson.module:jackson-module-kotlin:${versions["jackson-module-kotlin"]}")
+ testRuntimeOnly("org.slf4j:slf4j-simple:${versions.slf4j}")
}
diff --git a/simulator/settings.gradle.kts b/simulator/settings.gradle.kts
index 470303f4..77d78318 100644
--- a/simulator/settings.gradle.kts
+++ b/simulator/settings.gradle.kts
@@ -21,13 +21,14 @@
*/
rootProject.name = "opendc-simulator"
+include(":opendc-platform")
include(":opendc-core")
include(":opendc-compute:opendc-compute-core")
include(":opendc-compute:opendc-compute-simulator")
include(":opendc-workflows")
include(":opendc-format")
include(":opendc-experiments:opendc-experiments-sc18")
-include(":opendc-experiments:opendc-experiments-sc20")
+include(":opendc-experiments:opendc-experiments-capelin")
include(":opendc-runner-web")
include(":opendc-simulator:opendc-simulator-core")
include(":opendc-simulator:opendc-simulator-compute")