diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2022-10-05 14:44:43 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-10-05 14:44:43 +0200 |
| commit | c2047d09b27b0c05f5c203509dde524e17d3b729 (patch) | |
| tree | 3903d8aed5e87850c92e1b2dce8379ea99bdfa6d /opendc-experiments/opendc-experiments-capelin/src/test | |
| parent | ec3b5b462c1b8296ba18a3872f56d569fa70e45b (diff) | |
| parent | be176910eb870209576326ffaad8bf21241fccbd (diff) | |
merge: Extract scheduler from simulation coroutine dispatcher (#106)
This pull request extracts the scheduler from the `SimulationCoroutineDispatcher` into
a separate `SimulationScheduler` class which allows users to re-use the scheduler
between different coroutine dispatchers.
We implement the `SimulationScheduler` in Java, removing the explicit dependency on
Kotlin or `kotlinx-coroutines`. The scheduler uses a separate specialized priority queue
implementation that eliminates allocation in the hot path of the simulator.
## Implementation Notes :hammer_and_pick:
* Add Java-based simulator core
* Use SimulationScheduler in coroutine dispatcher
* Rename runBlockingSimulation to runSimulation
## External Dependencies :four_leaf_clover:
* N/A
## Breaking API Changes :warning:
* The Kotlin API for simulation has been moved to `org.opendc.simulator.kotlin`.
* `runBlockingSImulation` renamed to `runSimulation`
Diffstat (limited to 'opendc-experiments/opendc-experiments-capelin/src/test')
| -rw-r--r-- | opendc-experiments/opendc-experiments-capelin/src/test/kotlin/org/opendc/experiments/capelin/CapelinIntegrationTest.kt | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/opendc-experiments/opendc-experiments-capelin/src/test/kotlin/org/opendc/experiments/capelin/CapelinIntegrationTest.kt b/opendc-experiments/opendc-experiments-capelin/src/test/kotlin/org/opendc/experiments/capelin/CapelinIntegrationTest.kt index 9be2d522..238a5f87 100644 --- a/opendc-experiments/opendc-experiments-capelin/src/test/kotlin/org/opendc/experiments/capelin/CapelinIntegrationTest.kt +++ b/opendc-experiments/opendc-experiments-capelin/src/test/kotlin/org/opendc/experiments/capelin/CapelinIntegrationTest.kt @@ -39,7 +39,7 @@ import org.opendc.experiments.compute.telemetry.table.HostTableReader import org.opendc.experiments.compute.telemetry.table.ServiceTableReader import org.opendc.experiments.compute.topology.HostSpec import org.opendc.experiments.provisioner.Provisioner -import org.opendc.simulator.core.runBlockingSimulation +import org.opendc.simulator.kotlin.runSimulation import java.io.File import java.time.Duration import java.util.* @@ -80,7 +80,7 @@ class CapelinIntegrationTest { * Test a large simulation setup. */ @Test - fun testLarge() = runBlockingSimulation { + fun testLarge() = runSimulation { val seed = 0L val workload = createTestWorkload(1.0, seed) val topology = createTopology() @@ -124,7 +124,7 @@ class CapelinIntegrationTest { * Test a small simulation setup. */ @Test - fun testSmall() = runBlockingSimulation { + fun testSmall() = runSimulation { val seed = 1L val workload = createTestWorkload(0.25, seed) val topology = createTopology("single") @@ -164,7 +164,7 @@ class CapelinIntegrationTest { * Test a small simulation setup with interference. */ @Test - fun testInterference() = runBlockingSimulation { + fun testInterference() = runSimulation { val seed = 0L val workload = createTestWorkload(1.0, seed) val topology = createTopology("single") @@ -202,7 +202,7 @@ class CapelinIntegrationTest { * Test a small simulation setup with failures. */ @Test - fun testFailures() = runBlockingSimulation { + fun testFailures() = runSimulation { val seed = 0L val topology = createTopology("single") val workload = createTestWorkload(0.25, seed) |
