summaryrefslogtreecommitdiff
path: root/simulator/opendc-harness
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-01-12 14:21:26 +0100
committerGitHub <noreply@github.com>2021-01-12 14:21:26 +0100
commitb1a9f17feb6c6068c1c8f0162a516e29ac48a35a (patch)
treede5f4f0d2ee1571facea6b5319853b189aa35c0a /simulator/opendc-harness
parente9278df42673deaeace0d85337ac1434ec6c081d (diff)
parent6e4a9dd6af6b768468194b5a2aeffd60836e6407 (diff)
Merge pull request #73 from atlarge-research/feat/harness-sc18
Update SC18 experiments to use experiment harness
Diffstat (limited to 'simulator/opendc-harness')
-rw-r--r--simulator/opendc-harness/src/main/kotlin/org/opendc/harness/engine/ExperimentEngine.kt21
1 files changed, 4 insertions, 17 deletions
diff --git a/simulator/opendc-harness/src/main/kotlin/org/opendc/harness/engine/ExperimentEngine.kt b/simulator/opendc-harness/src/main/kotlin/org/opendc/harness/engine/ExperimentEngine.kt
index db2cd191..65a0604d 100644
--- a/simulator/opendc-harness/src/main/kotlin/org/opendc/harness/engine/ExperimentEngine.kt
+++ b/simulator/opendc-harness/src/main/kotlin/org/opendc/harness/engine/ExperimentEngine.kt
@@ -22,13 +22,11 @@
package org.opendc.harness.engine
-import kotlinx.coroutines.CancellationException
+import kotlinx.coroutines.*
import kotlinx.coroutines.flow.asFlow
import kotlinx.coroutines.flow.buffer
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.supervisorScope
import org.opendc.harness.api.ExperimentDefinition
import org.opendc.harness.api.Trial
import org.opendc.harness.engine.scheduler.ExperimentScheduler
@@ -53,6 +51,7 @@ public class ExperimentEngine(
*
* @param root The experiment to execute.
*/
+ @OptIn(InternalCoroutinesApi::class)
public suspend fun execute(root: ExperimentDefinition): Unit = supervisorScope {
listener.experimentStarted(root)
@@ -75,25 +74,13 @@ public class ExperimentEngine(
listener.trialFinished(trial, null)
} catch (e: Throwable) {
listener.trialFinished(trial, e)
- throw e
}
}
}
launch {
- var error: Throwable? = null
- for (job in jobs) {
- try {
- job.join()
- } catch (e: CancellationException) {
- // Propagate cancellation
- throw e
- } catch (e: Throwable) {
- error = e
- }
- }
-
- listener.scenarioFinished(scenario, error)
+ jobs.joinAll()
+ listener.scenarioFinished(scenario, null)
}
}
listener.experimentFinished(root, null)