summaryrefslogtreecommitdiff
path: root/opendc-compute/opendc-compute-failure/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-compute/opendc-compute-failure/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-compute/opendc-compute-failure/src/main')
-rw-r--r--opendc-compute/opendc-compute-failure/src/main/kotlin/org/opendc/compute/failure/models/TraceBasedFailureModel.kt14
1 files changed, 10 insertions, 4 deletions
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<Failure> {
+ private fun loadTrace(
+ pathToFile: String,
+ startPoint: Double,
+ ): List<Failure> {
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