summaryrefslogtreecommitdiff
path: root/opendc-experiments/opendc-experiments-base/src/main
diff options
context:
space:
mode:
authorDante Niewenhuis <d.niewenhuis@hotmail.com>2024-11-19 10:57:37 +0100
committerGitHub <noreply@github.com>2024-11-19 10:57:37 +0100
commit698a64615d0eef8994fc1eaf0a3b71da194e1dcd (patch)
treec08bdf98b50d0faf20e1a2727a2f3eb84a2b3609 /opendc-experiments/opendc-experiments-base/src/main
parent279f2a3e54c5b25b58e187a7c89bbddabe5b2724 (diff)
Small update to trace-based failure models (#271)
* Added startPoint to TraceBasedFailureModel.kt, this decides where in the trace, the model should start. Added repeat to TraceBasedFailureModel.kt. This decides if the trace should be repeated when finished * spotless applied * Fixed some issues with the failure shuffling * applied spotless
Diffstat (limited to 'opendc-experiments/opendc-experiments-base/src/main')
-rw-r--r--opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/FailureModelSpec.kt12
1 files changed, 11 insertions, 1 deletions
diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/FailureModelSpec.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/FailureModelSpec.kt
index 520d7e3d..4a1add59 100644
--- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/FailureModelSpec.kt
+++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/experiment/specs/FailureModelSpec.kt
@@ -78,6 +78,12 @@ public sealed interface FailureModelSpec {
public var name: String
}
+@Serializable
+@SerialName("no")
+public data class NoFailureModel(
+ override var name: String = "no failure model",
+) : FailureModelSpec
+
/**
* A failure model spec for failure models based on a failure trace.
*
@@ -87,11 +93,15 @@ public sealed interface FailureModelSpec {
@SerialName("trace-based")
public data class TraceBasedFailureModelSpec(
public val pathToFile: String,
+ public val startPoint: Double = 0.0,
+ public val repeat: Boolean = true,
) : FailureModelSpec {
override var name: String = File(pathToFile).nameWithoutExtension
init {
require(File(pathToFile).exists()) { "Path to file $pathToFile does not exist" }
+ require(startPoint < 1.0) { "Starting point must be smaller than 1.0" }
+ require(startPoint >= 0.0) { "Starting point must be equal or larger than 0.0" }
}
}
@@ -267,7 +277,7 @@ public fun createFailureModel(
random: java.util.random.RandomGenerator,
failureModel: TraceBasedFailureModelSpec,
): FailureModel {
- return TraceBasedFailureModel(context, clock, service, random, failureModel.pathToFile)
+ return TraceBasedFailureModel(context, clock, service, random, failureModel.pathToFile, failureModel.startPoint, failureModel.repeat)
}
/**