diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2021-04-08 19:56:47 +0200 |
|---|---|---|
| committer | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2021-04-08 19:56:47 +0200 |
| commit | d0f5200cf378a0d7f9397526f0db0695bdc34dd2 (patch) | |
| tree | 3b65ff4c39e3217b259c8705196c04d7d2859b6c /simulator/opendc-compute/opendc-compute-service/src/test | |
| parent | 3fd45fc5befb1fc9a67d4494e8a3786a5dceae3a (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')
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 |
