summaryrefslogtreecommitdiff
path: root/opendc-experiments/opendc-experiments-serverless20/src/main/kotlin
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-05-04 21:43:46 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2021-05-05 12:12:30 +0200
commitad65a05e3f41850807f95f7d643496a4d39a6197 (patch)
tree238b0fc83a5836d3fc08e3e888cec298eb8e8cd1 /opendc-experiments/opendc-experiments-serverless20/src/main/kotlin
parent6466d5e1b8da4582434f02dff2ab56e8f736ef85 (diff)
exp: Add support for experiment configuration
This change adds support for configuring the experiments via configuration files using the TypeSafe config library. In the future, we will also integrate support for configuration into the harness.
Diffstat (limited to 'opendc-experiments/opendc-experiments-serverless20/src/main/kotlin')
-rw-r--r--opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/ServerlessExperiment.kt14
1 files changed, 4 insertions, 10 deletions
diff --git a/opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/ServerlessExperiment.kt b/opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/ServerlessExperiment.kt
index 67b5ea54..3ff01e39 100644
--- a/opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/ServerlessExperiment.kt
+++ b/opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/ServerlessExperiment.kt
@@ -22,9 +22,9 @@
package org.opendc.experiments.serverless
+import com.typesafe.config.ConfigFactory
import io.opentelemetry.api.metrics.MeterProvider
import io.opentelemetry.sdk.metrics.SdkMeterProvider
-import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
@@ -59,14 +59,9 @@ public class ServerlessExperiment : Experiment("Serverless") {
private val logger = KotlinLogging.logger {}
/**
- * The path to where the traces are located.
+ * The configuration to use.
*/
- private val tracePath by anyOf(File("../../input/traces/serverless"))
-
- /**
- * The path to where the output results should be written.
- */
- private val outputPath by anyOf(File("output/"))
+ private val config = ConfigFactory.load().getConfig("opendc.experiments.serverless20")
/**
* The routing policy to test.
@@ -78,14 +73,13 @@ public class ServerlessExperiment : Experiment("Serverless") {
*/
private val coldStartModel by anyOf(ColdStartModel.LAMBDA, ColdStartModel.AZURE, ColdStartModel.GOOGLE)
- @OptIn(ExperimentalCoroutinesApi::class)
override fun doRun(repeat: Int): Unit = runBlockingSimulation {
val meterProvider: MeterProvider = SdkMeterProvider
.builder()
.setClock(clock.toOtelClock())
.build()
- val trace = ServerlessTraceReader().parse(tracePath)
+ val trace = ServerlessTraceReader().parse(File(config.getString("trace-path")))
val traceById = trace.associateBy { it.id }
val delayInjector = StochasticDelayInjector(coldStartModel, Random())
val deployer = SimFunctionDeployer(clock, this, createMachineModel(), delayInjector) { FunctionTraceWorkload(traceById.getValue(it.name)) }