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 --- .../compute/failure/models/TraceBasedFailureModel.kt | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'opendc-compute/opendc-compute-failure') diff --git a/opendc-compute/opendc-compute-failure/src/main/kotlin/org/opendc/compute/failure/models/TraceBasedFailureModel.kt b/opendc-compute/opendc-compute-failure/src/main/kotlin/org/opendc/compute/failure/models/TraceBasedFailureModel.kt index cab96cd8..3bd253da 100644 --- a/opendc-compute/opendc-compute-failure/src/main/kotlin/org/opendc/compute/failure/models/TraceBasedFailureModel.kt +++ b/opendc-compute/opendc-compute-failure/src/main/kotlin/org/opendc/compute/failure/models/TraceBasedFailureModel.kt @@ -33,6 +33,7 @@ import java.io.File import java.time.InstantSource import java.util.random.RandomGenerator import kotlin.coroutines.CoroutineContext +import kotlin.time.times /** * A definition of a Failure @@ -71,9 +72,10 @@ public class TraceBasedFailureModel( service: ComputeService, random: RandomGenerator, pathToTrace: String, - private val repeat: Boolean = false, + startPoint: Double, + private val repeat: Boolean = true, ) : FailureModel(context, clock, service, random) { - private val failureList = loadTrace(pathToTrace) + private val failureList = loadTrace(pathToTrace, startPoint) override suspend fun runInjector() { do { @@ -92,7 +94,10 @@ public class TraceBasedFailureModel( * * @param pathToFile */ - private fun loadTrace(pathToFile: String): List { + private fun loadTrace( + pathToFile: String, + startPoint: Double, + ): List { val trace = Trace.open(File(pathToFile), "failure") val reader = checkNotNull(trace.getTable(TABLE_FAILURES)).newReader() @@ -112,7 +117,8 @@ public class TraceBasedFailureModel( entries.add(Failure(failureStartTime, failureDuration, failureIntensity)) } - return entries + val startIndex: Int = (entries.size * startPoint).toInt() + return entries.subList(startIndex, entries.size) + entries.subList(0, startIndex) } catch (e: Exception) { e.printStackTrace() throw e -- cgit v1.2.3