From 698a64615d0eef8994fc1eaf0a3b71da194e1dcd Mon Sep 17 00:00:00 2001 From: Dante Niewenhuis Date: Tue, 19 Nov 2024 10:57:37 +0100 Subject: 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 --- .../experiments/base/experiment/specs/FailureModelSpec.kt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'opendc-experiments/opendc-experiments-base/src/main') 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) } /** -- cgit v1.2.3