summaryrefslogtreecommitdiff
path: root/simulator/opendc-compute/opendc-compute-service/src/test
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-04-08 19:56:47 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2021-04-08 19:56:47 +0200
commitd0f5200cf378a0d7f9397526f0db0695bdc34dd2 (patch)
tree3b65ff4c39e3217b259c8705196c04d7d2859b6c /simulator/opendc-compute/opendc-compute-service/src/test
parent3fd45fc5befb1fc9a67d4494e8a3786a5dceae3a (diff)
compute: Implement filter scheduler
This change adds an implementation of the filter scheduler to the OpenDC Compute module. This is modeled after the filter scheduler implementation in OpenStack and should allow for more flexible scheduling policies. See: https://docs.openstack.org/nova/latest/user/filter-scheduler.html
Diffstat (limited to 'simulator/opendc-compute/opendc-compute-service/src/test')
-rw-r--r--simulator/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ComputeServiceTest.kt14
-rw-r--r--simulator/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/scheduler/AllocationPolicyTest.kt10
2 files changed, 16 insertions, 8 deletions
diff --git a/simulator/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ComputeServiceTest.kt b/simulator/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ComputeServiceTest.kt
index 45a306aa..c6e24346 100644
--- a/simulator/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ComputeServiceTest.kt
+++ b/simulator/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ComputeServiceTest.kt
@@ -39,7 +39,10 @@ import org.opendc.compute.service.driver.Host
import org.opendc.compute.service.driver.HostListener
import org.opendc.compute.service.driver.HostModel
import org.opendc.compute.service.driver.HostState
-import org.opendc.compute.service.scheduler.AvailableMemoryAllocationPolicy
+import org.opendc.compute.service.scheduler.FilterScheduler
+import org.opendc.compute.service.scheduler.filters.ComputeCapabilitiesFilter
+import org.opendc.compute.service.scheduler.filters.ComputeFilter
+import org.opendc.compute.service.scheduler.weights.MemoryWeigher
import org.opendc.simulator.utils.DelayControllerClockAdapter
import java.util.*
@@ -55,9 +58,12 @@ internal class ComputeServiceTest {
fun setUp() {
scope = TestCoroutineScope()
val clock = DelayControllerClockAdapter(scope)
- val policy = AvailableMemoryAllocationPolicy()
+ val computeScheduler = FilterScheduler(
+ filters = listOf(ComputeFilter(), ComputeCapabilitiesFilter()),
+ weighers = listOf(MemoryWeigher() to -1.0)
+ )
val meter = MeterProvider.noop().get("opendc-compute")
- service = ComputeService(scope.coroutineContext, clock, meter, policy)
+ service = ComputeService(scope.coroutineContext, clock, meter, computeScheduler)
}
@AfterEach
@@ -257,6 +263,7 @@ internal class ComputeServiceTest {
server.start()
delay(5 * 60 * 1000)
+ every { host.state } returns HostState.UP
listeners.forEach { it.onStateChanged(host, HostState.UP) }
delay(5 * 60 * 1000)
@@ -286,6 +293,7 @@ internal class ComputeServiceTest {
delay(5 * 60 * 1000)
+ every { host.state } returns HostState.DOWN
listeners.forEach { it.onStateChanged(host, HostState.DOWN) }
server.start()
diff --git a/simulator/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/scheduler/AllocationPolicyTest.kt b/simulator/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/scheduler/AllocationPolicyTest.kt
index db377914..7227d225 100644
--- a/simulator/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/scheduler/AllocationPolicyTest.kt
+++ b/simulator/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/scheduler/AllocationPolicyTest.kt
@@ -100,9 +100,9 @@ internal class AllocationPolicyTest {
every { view.host.model.cpuCount } returns random.nextInt(1, 16)
every { view.host.model.memorySize } returns random.nextLong(1024, 1024 * 1024)
every { view.availableMemory } returns random.nextLong(0, view.host.model.memorySize)
- every { view.numberOfActiveServers } returns random.nextInt(0, 6)
+ every { view.instanceCount } returns random.nextInt(0, 6)
every { view.provisionedCores } returns random.nextInt(0, view.host.model.cpuCount)
- every { view.toString() } returns "HostView[$i,numberOfActiveServers=${view.numberOfActiveServers}]"
+ every { view.toString() } returns "HostView[$i,numberOfActiveServers=${view.instanceCount}]"
view
}
@@ -132,7 +132,7 @@ internal class AllocationPolicyTest {
every { view.host.model.cpuCount } returns random.nextInt(1, 16)
every { view.host.model.memorySize } returns random.nextLong(1024, 1024 * 1024)
every { view.availableMemory } returns random.nextLong(0, view.host.model.memorySize)
- every { view.numberOfActiveServers } returns random.nextInt(0, 6)
+ every { view.instanceCount } returns random.nextInt(0, 6)
every { view.provisionedCores } returns random.nextInt(0, view.host.model.cpuCount)
every { view.toString() } returns "HostView[$i,availableMemory=${view.availableMemory}]"
view
@@ -164,7 +164,7 @@ internal class AllocationPolicyTest {
every { view.host.model.cpuCount } returns random.nextInt(1, 16)
every { view.host.model.memorySize } returns random.nextLong(1024, 1024 * 1024)
every { view.availableMemory } returns random.nextLong(0, view.host.model.memorySize)
- every { view.numberOfActiveServers } returns random.nextInt(0, 6)
+ every { view.instanceCount } returns random.nextInt(0, 6)
every { view.provisionedCores } returns random.nextInt(0, view.host.model.cpuCount)
every { view.toString() } returns "HostView[$i,availableMemory=${view.availableMemory}]"
view
@@ -196,7 +196,7 @@ internal class AllocationPolicyTest {
every { view.host.model.cpuCount } returns random.nextInt(1, 16)
every { view.host.model.memorySize } returns random.nextLong(1024, 1024 * 1024)
every { view.availableMemory } returns random.nextLong(0, view.host.model.memorySize)
- every { view.numberOfActiveServers } returns random.nextInt(0, 6)
+ every { view.instanceCount } returns random.nextInt(0, 6)
every { view.provisionedCores } returns random.nextInt(0, view.host.model.cpuCount)
every { view.toString() } returns "HostView[$i,provisionedCores=${view.provisionedCores}]"
view