diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2022-11-02 17:20:00 +0100 |
|---|---|---|
| committer | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2022-11-27 20:50:13 +0000 |
| commit | 4dfae28c5bd656806a7baf7855c95770f4ad0ed8 (patch) | |
| tree | 52e2de58503714cc6510db614b4a654af2fdda3c /opendc-compute/opendc-compute-service/src/test | |
| parent | e0856b26c3e1961e7ff4bb3ca038adc4892bbc22 (diff) | |
refactor(compute/service): Do not split interface and implementation
This change inlines the implementation of the compute service into the
`ComputeService` interface. We do not intend to provide multiple
implementations of the service. In addition, this approach makes more
sense for a Java implementation.
Diffstat (limited to 'opendc-compute/opendc-compute-service/src/test')
| -rw-r--r-- | opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ComputeServiceTest.kt | 22 | ||||
| -rw-r--r-- | opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ServiceFlavorTest.kt (renamed from opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/InternalFlavorTest.kt) | 32 | ||||
| -rw-r--r-- | opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ServiceImageTest.kt (renamed from opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/InternalImageTest.kt) | 33 | ||||
| -rw-r--r-- | opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ServiceServerTest.kt (renamed from opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/InternalServerTest.kt) | 121 | ||||
| -rw-r--r-- | opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/scheduler/FilterSchedulerTest.kt | 2 |
5 files changed, 72 insertions, 138 deletions
diff --git a/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ComputeServiceTest.kt b/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ComputeServiceTest.kt index a64c0885..4dc1cfa8 100644 --- a/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ComputeServiceTest.kt +++ b/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ComputeServiceTest.kt @@ -50,6 +50,7 @@ import org.opendc.compute.service.scheduler.filters.VCpuFilter import org.opendc.compute.service.scheduler.weights.RamWeigher import org.opendc.simulator.kotlin.SimulationCoroutineScope import org.opendc.simulator.kotlin.runSimulation +import java.time.Duration import java.util.UUID /** @@ -66,7 +67,7 @@ internal class ComputeServiceTest { filters = listOf(ComputeFilter(), VCpuFilter(allocationRatio = 1.0), RamFilter(allocationRatio = 1.0)), weighers = listOf(RamWeigher()) ) - service = ComputeService(scope.dispatcher, computeScheduler) + service = ComputeService(scope.dispatcher, computeScheduler, Duration.ofMinutes(5)) } @Test @@ -300,25 +301,6 @@ internal class ComputeServiceTest { } @Test - fun testServerInvalidType() = scope.runSimulation { - val host = mockk<Host>(relaxUnitFun = true) - val server = mockk<Server>(relaxUnitFun = true) - val listeners = mutableListOf<HostListener>() - - every { host.uid } returns UUID.randomUUID() - every { host.model } returns HostModel(4 * 2600.0, 4, 2048) - every { host.state } returns HostState.UP - every { host.canFit(any()) } returns true - every { host.addListener(any()) } answers { listeners.add(it.invocation.args[0] as HostListener) } - - service.addHost(host) - - assertThrows<IllegalArgumentException> { - listeners.forEach { it.onStateChanged(host, server, ServerState.RUNNING) } - } - } - - @Test fun testServerDeploy() = scope.runSimulation { val host = mockk<Host>(relaxUnitFun = true) val listeners = mutableListOf<HostListener>() diff --git a/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/InternalFlavorTest.kt b/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ServiceFlavorTest.kt index fe92f7f2..7938f789 100644 --- a/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/InternalFlavorTest.kt +++ b/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ServiceFlavorTest.kt @@ -28,41 +28,27 @@ import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNotEquals import org.junit.jupiter.api.Test import org.opendc.compute.api.Flavor -import org.opendc.compute.service.internal.ComputeServiceImpl -import org.opendc.compute.service.internal.InternalFlavor import java.util.UUID /** - * Test suite for the [InternalFlavor] implementation. + * Test suite for the [ServiceFlavor] implementation. */ -class InternalFlavorTest { +class ServiceFlavorTest { @Test fun testEquality() { - val service = mockk<ComputeServiceImpl>() + val service = mockk<ComputeService>() val uid = UUID.randomUUID() - val a = InternalFlavor(service, uid, "test", 1, 1024, mutableMapOf(), mutableMapOf()) - val b = InternalFlavor(service, uid, "test", 1, 1024, mutableMapOf(), mutableMapOf()) - - assertEquals(a, b) - } - - @Test - fun testEqualityWithDifferentType() { - val service = mockk<ComputeServiceImpl>() - val uid = UUID.randomUUID() - val a = InternalFlavor(service, uid, "test", 1, 1024, mutableMapOf(), mutableMapOf()) - - val b = mockk<Flavor>(relaxUnitFun = true) - every { b.uid } returns uid + val a = ServiceFlavor(service, uid, "test", 1, 1024, mutableMapOf(), mutableMapOf<String, Any>()) + val b = ServiceFlavor(service, uid, "test", 1, 1024, mutableMapOf(), mutableMapOf<String, Any>()) assertEquals(a, b) } @Test fun testInequalityWithDifferentType() { - val service = mockk<ComputeServiceImpl>() + val service = mockk<ComputeService>() val uid = UUID.randomUUID() - val a = InternalFlavor(service, uid, "test", 1, 1024, mutableMapOf(), mutableMapOf()) + val a = ServiceFlavor(service, uid, "test", 1, 1024, mutableMapOf(), mutableMapOf<String, Any>()) val b = mockk<Flavor>(relaxUnitFun = true) every { b.uid } returns UUID.randomUUID() @@ -72,9 +58,9 @@ class InternalFlavorTest { @Test fun testInequalityWithIncorrectType() { - val service = mockk<ComputeServiceImpl>() + val service = mockk<ComputeService>() val uid = UUID.randomUUID() - val a = InternalFlavor(service, uid, "test", 1, 1024, mutableMapOf(), mutableMapOf()) + val a = ServiceFlavor(service, uid, "test", 1, 1024, mutableMapOf(), mutableMapOf<String, Any>()) assertNotEquals(a, Unit) } diff --git a/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/InternalImageTest.kt b/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ServiceImageTest.kt index d60aa628..c36d75f4 100644 --- a/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/InternalImageTest.kt +++ b/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ServiceImageTest.kt @@ -28,42 +28,27 @@ import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNotEquals import org.junit.jupiter.api.Test import org.opendc.compute.api.Image -import org.opendc.compute.service.internal.ComputeServiceImpl -import org.opendc.compute.service.internal.InternalFlavor -import org.opendc.compute.service.internal.InternalImage import java.util.UUID /** - * Test suite for the [InternalFlavor] implementation. + * Test suite for the [ServiceFlavor] implementation. */ -class InternalImageTest { +class ServiceImageTest { @Test fun testEquality() { - val service = mockk<ComputeServiceImpl>() + val service = mockk<ComputeService>() val uid = UUID.randomUUID() - val a = InternalImage(service, uid, "test", mutableMapOf(), mutableMapOf()) - val b = InternalImage(service, uid, "test", mutableMapOf(), mutableMapOf()) - - assertEquals(a, b) - } - - @Test - fun testEqualityWithDifferentType() { - val service = mockk<ComputeServiceImpl>() - val uid = UUID.randomUUID() - val a = InternalImage(service, uid, "test", mutableMapOf(), mutableMapOf()) - - val b = mockk<Image>(relaxUnitFun = true) - every { b.uid } returns uid + val a = ServiceImage(service, uid, "test", mutableMapOf(), mutableMapOf<String, Any>()) + val b = ServiceImage(service, uid, "test", mutableMapOf(), mutableMapOf<String, Any>()) assertEquals(a, b) } @Test fun testInequalityWithDifferentType() { - val service = mockk<ComputeServiceImpl>() + val service = mockk<ComputeService>() val uid = UUID.randomUUID() - val a = InternalImage(service, uid, "test", mutableMapOf(), mutableMapOf()) + val a = ServiceImage(service, uid, "test", mutableMapOf(), mutableMapOf<String, Any>()) val b = mockk<Image>(relaxUnitFun = true) every { b.uid } returns UUID.randomUUID() @@ -73,9 +58,9 @@ class InternalImageTest { @Test fun testInequalityWithIncorrectType() { - val service = mockk<ComputeServiceImpl>() + val service = mockk<ComputeService>() val uid = UUID.randomUUID() - val a = InternalImage(service, uid, "test", mutableMapOf(), mutableMapOf()) + val a = ServiceImage(service, uid, "test", mutableMapOf(), mutableMapOf<String, Any>()) assertNotEquals(a, Unit) } diff --git a/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/InternalServerTest.kt b/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ServiceServerTest.kt index 05a8160e..f9fcd27b 100644 --- a/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/InternalServerTest.kt +++ b/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/ServiceServerTest.kt @@ -22,7 +22,6 @@ package org.opendc.compute.service -import io.mockk.coVerify import io.mockk.every import io.mockk.mockk import io.mockk.verify @@ -35,51 +34,33 @@ import org.junit.jupiter.api.assertThrows import org.opendc.compute.api.Server import org.opendc.compute.api.ServerState import org.opendc.compute.service.driver.Host -import org.opendc.compute.service.internal.ComputeServiceImpl -import org.opendc.compute.service.internal.InternalFlavor -import org.opendc.compute.service.internal.InternalImage -import org.opendc.compute.service.internal.InternalServer import org.opendc.simulator.kotlin.runSimulation import java.util.UUID /** - * Test suite for the [InternalServer] implementation. + * Test suite for the [ServiceServer] implementation. */ -class InternalServerTest { +class ServiceServerTest { @Test fun testEquality() { - val service = mockk<ComputeServiceImpl>() + val service = mockk<ComputeService>() val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val a = InternalServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf()) - val b = InternalServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf()) - - assertEquals(a, b) - } - - @Test - fun testEqualityWithDifferentType() { - val service = mockk<ComputeServiceImpl>() - val uid = UUID.randomUUID() - val flavor = mockFlavor() - val image = mockImage() - val a = InternalServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf()) - - val b = mockk<Server>(relaxUnitFun = true) - every { b.uid } returns uid + val a = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) + val b = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) assertEquals(a, b) } @Test fun testInequalityWithDifferentType() { - val service = mockk<ComputeServiceImpl>() + val service = mockk<ComputeService>() val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val a = InternalServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf()) + val a = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) val b = mockk<Server>(relaxUnitFun = true) every { b.uid } returns UUID.randomUUID() @@ -89,24 +70,24 @@ class InternalServerTest { @Test fun testInequalityWithIncorrectType() { - val service = mockk<ComputeServiceImpl>() + val service = mockk<ComputeService>() val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val a = InternalServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf()) + val a = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) assertNotEquals(a, Unit) } @Test fun testStartTerminatedServer() = runSimulation { - val service = mockk<ComputeServiceImpl>() + val service = mockk<ComputeService>() val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = InternalServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf()) + val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) - every { service.schedule(any()) } answers { ComputeServiceImpl.SchedulingRequest(it.invocation.args[0] as InternalServer, 0) } + every { service.schedule(any()) } answers { ComputeService.SchedulingRequest(it.invocation.args[0] as ServiceServer, 0) } server.start() @@ -116,26 +97,26 @@ class InternalServerTest { @Test fun testStartDeletedServer() = runSimulation { - val service = mockk<ComputeServiceImpl>() + val service = mockk<ComputeService>() val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = InternalServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf()) + val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) - server.state = ServerState.DELETED + server.setState(ServerState.DELETED) assertThrows<IllegalStateException> { server.start() } } @Test fun testStartProvisioningServer() = runSimulation { - val service = mockk<ComputeServiceImpl>() + val service = mockk<ComputeService>() val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = InternalServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf()) + val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) - server.state = ServerState.PROVISIONING + server.setState(ServerState.PROVISIONING) server.start() @@ -144,13 +125,13 @@ class InternalServerTest { @Test fun testStartRunningServer() = runSimulation { - val service = mockk<ComputeServiceImpl>() + val service = mockk<ComputeService>() val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = InternalServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf()) + val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) - server.state = ServerState.RUNNING + server.setState(ServerState.RUNNING) server.start() @@ -159,12 +140,12 @@ class InternalServerTest { @Test fun testStopProvisioningServer() = runSimulation { - val service = mockk<ComputeServiceImpl>() + val service = mockk<ComputeService>() val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = InternalServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf()) - val request = ComputeServiceImpl.SchedulingRequest(server, 0) + val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) + val request = ComputeService.SchedulingRequest(server, 0) every { service.schedule(any()) } returns request @@ -177,13 +158,13 @@ class InternalServerTest { @Test fun testStopTerminatedServer() = runSimulation { - val service = mockk<ComputeServiceImpl>() + val service = mockk<ComputeService>() val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = InternalServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf()) + val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) - server.state = ServerState.TERMINATED + server.setState(ServerState.TERMINATED) server.stop() assertEquals(ServerState.TERMINATED, server.state) @@ -191,13 +172,13 @@ class InternalServerTest { @Test fun testStopDeletedServer() = runSimulation { - val service = mockk<ComputeServiceImpl>() + val service = mockk<ComputeService>() val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = InternalServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf()) + val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) - server.state = ServerState.DELETED + server.setState(ServerState.DELETED) server.stop() assertEquals(ServerState.DELETED, server.state) @@ -205,29 +186,29 @@ class InternalServerTest { @Test fun testStopRunningServer() = runSimulation { - val service = mockk<ComputeServiceImpl>() + val service = mockk<ComputeService>() val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = InternalServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf()) + val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) val host = mockk<Host>(relaxUnitFun = true) - server.state = ServerState.RUNNING + server.setState(ServerState.RUNNING) server.host = host server.stop() yield() - coVerify { host.stop(server) } + verify { host.stop(server) } } @Test fun testDeleteProvisioningServer() = runSimulation { - val service = mockk<ComputeServiceImpl>(relaxUnitFun = true) + val service = mockk<ComputeService>(relaxUnitFun = true) val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = InternalServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf()) - val request = ComputeServiceImpl.SchedulingRequest(server, 0) + val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) + val request = ComputeService.SchedulingRequest(server, 0) every { service.schedule(any()) } returns request @@ -241,13 +222,13 @@ class InternalServerTest { @Test fun testDeleteTerminatedServer() = runSimulation { - val service = mockk<ComputeServiceImpl>(relaxUnitFun = true) + val service = mockk<ComputeService>(relaxUnitFun = true) val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = InternalServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf()) + val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) - server.state = ServerState.TERMINATED + server.setState(ServerState.TERMINATED) server.delete() assertEquals(ServerState.DELETED, server.state) @@ -257,13 +238,13 @@ class InternalServerTest { @Test fun testDeleteDeletedServer() = runSimulation { - val service = mockk<ComputeServiceImpl>(relaxUnitFun = true) + val service = mockk<ComputeService>(relaxUnitFun = true) val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = InternalServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf()) + val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) - server.state = ServerState.DELETED + server.setState(ServerState.DELETED) server.delete() assertEquals(ServerState.DELETED, server.state) @@ -271,24 +252,24 @@ class InternalServerTest { @Test fun testDeleteRunningServer() = runSimulation { - val service = mockk<ComputeServiceImpl>(relaxUnitFun = true) + val service = mockk<ComputeService>(relaxUnitFun = true) val uid = UUID.randomUUID() val flavor = mockFlavor() val image = mockImage() - val server = InternalServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf()) + val server = ServiceServer(service, uid, "test", flavor, image, mutableMapOf(), mutableMapOf<String, Any>()) val host = mockk<Host>(relaxUnitFun = true) - server.state = ServerState.RUNNING + server.setState(ServerState.RUNNING) server.host = host server.delete() yield() - coVerify { host.delete(server) } + verify { host.delete(server) } verify { service.delete(server) } } - private fun mockFlavor(): InternalFlavor { - val flavor = mockk<InternalFlavor>() + private fun mockFlavor(): ServiceFlavor { + val flavor = mockk<ServiceFlavor>() every { flavor.name } returns "c5.large" every { flavor.uid } returns UUID.randomUUID() every { flavor.cpuCount } returns 2 @@ -296,8 +277,8 @@ class InternalServerTest { return flavor } - private fun mockImage(): InternalImage { - val image = mockk<InternalImage>() + private fun mockImage(): ServiceImage { + val image = mockk<ServiceImage>() every { image.name } returns "ubuntu-20.04" every { image.uid } returns UUID.randomUUID() return image diff --git a/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/scheduler/FilterSchedulerTest.kt b/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/scheduler/FilterSchedulerTest.kt index 4608bf37..4af6f7ec 100644 --- a/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/scheduler/FilterSchedulerTest.kt +++ b/opendc-compute/opendc-compute-service/src/test/kotlin/org/opendc/compute/service/scheduler/FilterSchedulerTest.kt @@ -30,9 +30,9 @@ import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertAll import org.junit.jupiter.api.assertThrows import org.opendc.compute.api.Server +import org.opendc.compute.service.HostView import org.opendc.compute.service.driver.HostModel import org.opendc.compute.service.driver.HostState -import org.opendc.compute.service.internal.HostView import org.opendc.compute.service.scheduler.filters.ComputeFilter import org.opendc.compute.service.scheduler.filters.DifferentHostFilter import org.opendc.compute.service.scheduler.filters.InstanceCountFilter |
