diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2021-01-11 22:28:31 +0100 |
|---|---|---|
| committer | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2021-01-12 13:15:52 +0100 |
| commit | 6e4a9dd6af6b768468194b5a2aeffd60836e6407 (patch) | |
| tree | de5f4f0d2ee1571facea6b5319853b189aa35c0a /simulator/opendc-harness | |
| parent | ce4b9bd28d9cb24b112a3a4723252c5bbca2fe5b (diff) | |
Refactor SC18 experiments to use new experiment harness
Diffstat (limited to 'simulator/opendc-harness')
| -rw-r--r-- | simulator/opendc-harness/src/main/kotlin/org/opendc/harness/engine/ExperimentEngine.kt | 21 |
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) |
