summaryrefslogtreecommitdiff
path: root/opendc-simulator/opendc-simulator-compute/src/test
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-08-18 12:18:08 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2021-08-24 11:20:19 +0200
commita9539a3e444c1bd4fb7090dad38f3b568afe092a (patch)
treed708f12e7769ebda31e73d47556e4fd300e45eda /opendc-simulator/opendc-simulator-compute/src/test
parent484848e2e0bfdaf46f10112e358d3475dbf8e725 (diff)
fix(simulator): Support trace fragments with zero cores available
This change fixes an issue with the simulator where trace fragments with zero cores to execute would give a NaN amount of work.
Diffstat (limited to 'opendc-simulator/opendc-simulator-compute/src/test')
-rw-r--r--opendc-simulator/opendc-simulator-compute/src/test/kotlin/org/opendc/simulator/compute/workload/SimTraceWorkloadTest.kt27
1 files changed, 27 insertions, 0 deletions
diff --git a/opendc-simulator/opendc-simulator-compute/src/test/kotlin/org/opendc/simulator/compute/workload/SimTraceWorkloadTest.kt b/opendc-simulator/opendc-simulator-compute/src/test/kotlin/org/opendc/simulator/compute/workload/SimTraceWorkloadTest.kt
index 39c1eb5a..78019c2e 100644
--- a/opendc-simulator/opendc-simulator-compute/src/test/kotlin/org/opendc/simulator/compute/workload/SimTraceWorkloadTest.kt
+++ b/opendc-simulator/opendc-simulator-compute/src/test/kotlin/org/opendc/simulator/compute/workload/SimTraceWorkloadTest.kt
@@ -130,4 +130,31 @@ class SimTraceWorkloadTest {
machine.close()
}
}
+
+ @Test
+ fun testZeroCores() = runBlockingSimulation {
+ val machine = SimBareMetalMachine(
+ SimResourceInterpreter(coroutineContext, clock),
+ machineModel,
+ SimplePowerDriver(ConstantPowerModel(0.0))
+ )
+
+ val workload = SimTraceWorkload(
+ sequenceOf(
+ SimTraceWorkload.Fragment(0, 1000, 2 * 28.0, 2),
+ SimTraceWorkload.Fragment(1000, 1000, 2 * 3100.0, 2),
+ SimTraceWorkload.Fragment(2000, 1000, 0.0, 0),
+ SimTraceWorkload.Fragment(3000, 1000, 2 * 73.0, 2)
+ ),
+ offset = 0
+ )
+
+ try {
+ machine.run(workload)
+
+ assertEquals(4000, clock.millis())
+ } finally {
+ machine.close()
+ }
+ }
}