summaryrefslogtreecommitdiff
path: root/opendc/opendc-compute/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'opendc/opendc-compute/src/test')
-rw-r--r--opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriverTest.kt27
-rw-r--r--opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/metal/service/SimpleProvisioningServiceTest.kt13
-rw-r--r--opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/virt/driver/hypervisor/HypervisorTest.kt34
3 files changed, 22 insertions, 52 deletions
diff --git a/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriverTest.kt b/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriverTest.kt
index c5c0441c..e0d8799f 100644
--- a/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriverTest.kt
+++ b/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/metal/driver/SimpleBareMetalDriverTest.kt
@@ -25,15 +25,12 @@
package com.atlarge.opendc.compute.metal.driver
import com.atlarge.odcsim.SimulationEngineProvider
-import com.atlarge.odcsim.simulationContext
import com.atlarge.opendc.compute.core.ProcessingNode
import com.atlarge.opendc.compute.core.ProcessingUnit
-import com.atlarge.opendc.compute.core.Server
+import com.atlarge.opendc.compute.core.ServerEvent
import com.atlarge.opendc.compute.core.ServerState
import com.atlarge.opendc.compute.core.image.FlopsApplicationImage
-import com.atlarge.opendc.compute.metal.Node
-import com.atlarge.opendc.compute.metal.NodeState
-import com.atlarge.opendc.compute.metal.monitor.NodeMonitor
+import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
@@ -57,24 +54,18 @@ internal class SimpleBareMetalDriverTest {
val cpuNode = ProcessingNode("Intel", "Xeon", "amd64", 4)
val cpus = List(4) { ProcessingUnit(cpuNode, it, 2400.0) }
val driver = SimpleBareMetalDriver(dom, UUID.randomUUID(), "test", cpus, emptyList())
-
- val monitor = object : NodeMonitor {
- override fun stateChanged(node: Node, previousState: NodeState) {
- println(node)
- }
-
- override fun stateChanged(server: Server, previousState: ServerState) {
- println("$server")
- finalState = server.state
- }
- }
val image = FlopsApplicationImage(UUID.randomUUID(), "<unnamed>", emptyMap(), 1_000, 2)
// Batch driver commands
withContext(dom.coroutineContext) {
- driver.init(monitor)
+ driver.init()
driver.setImage(image)
- driver.start()
+ val server = driver.start().server!!
+ server.events.collect { event ->
+ when (event) {
+ is ServerEvent.StateChanged -> finalState = event.server.state
+ }
+ }
}
}
diff --git a/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/metal/service/SimpleProvisioningServiceTest.kt b/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/metal/service/SimpleProvisioningServiceTest.kt
index 9cbb9baa..8e07c09c 100644
--- a/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/metal/service/SimpleProvisioningServiceTest.kt
+++ b/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/metal/service/SimpleProvisioningServiceTest.kt
@@ -27,12 +27,10 @@ package com.atlarge.opendc.compute.metal.service
import com.atlarge.odcsim.SimulationEngineProvider
import com.atlarge.opendc.compute.core.ProcessingNode
import com.atlarge.opendc.compute.core.ProcessingUnit
-import com.atlarge.opendc.compute.core.Server
-import com.atlarge.opendc.compute.core.ServerState
import com.atlarge.opendc.compute.core.image.FlopsApplicationImage
-import com.atlarge.opendc.compute.core.monitor.ServerMonitor
import com.atlarge.opendc.compute.metal.driver.SimpleBareMetalDriver
import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import org.junit.jupiter.api.Test
@@ -53,12 +51,6 @@ internal class SimpleProvisioningServiceTest {
val root = system.newDomain(name = "root")
root.launch {
val image = FlopsApplicationImage(UUID.randomUUID(), "<unnamed>", emptyMap(), 1000, 2)
- val monitor = object : ServerMonitor {
- override fun stateChanged(server: Server, previousState: ServerState) {
- println(server)
- }
- }
-
val dom = root.newDomain("provisioner")
val cpuNode = ProcessingNode("Intel", "Xeon", "amd64", 4)
@@ -69,7 +61,8 @@ internal class SimpleProvisioningServiceTest {
provisioner.create(driver)
delay(5)
val nodes = provisioner.nodes()
- provisioner.deploy(nodes.first(), image, monitor)
+ val node = provisioner.deploy(nodes.first(), image)
+ node.server!!.events.collect { println(it) }
}
runBlocking {
diff --git a/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/virt/driver/hypervisor/HypervisorTest.kt b/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/virt/driver/hypervisor/HypervisorTest.kt
index 9ceaf704..d86045c0 100644
--- a/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/virt/driver/hypervisor/HypervisorTest.kt
+++ b/opendc/opendc-compute/src/test/kotlin/com/atlarge/opendc/compute/virt/driver/hypervisor/HypervisorTest.kt
@@ -26,16 +26,15 @@ package com.atlarge.opendc.compute.virt.driver.hypervisor
import com.atlarge.odcsim.SimulationEngineProvider
import com.atlarge.opendc.compute.core.ProcessingUnit
-import com.atlarge.opendc.compute.core.Server
import com.atlarge.opendc.compute.core.Flavor
import com.atlarge.opendc.compute.core.ProcessingNode
-import com.atlarge.opendc.compute.core.ServerState
import com.atlarge.opendc.compute.core.image.FlopsApplicationImage
import com.atlarge.opendc.compute.metal.driver.SimpleBareMetalDriver
-import com.atlarge.opendc.compute.metal.monitor.NodeMonitor
import com.atlarge.opendc.compute.virt.driver.VirtDriver
-import com.atlarge.opendc.compute.virt.monitor.HypervisorMonitor
+import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.delay
+import kotlinx.coroutines.flow.launchIn
+import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import org.junit.jupiter.api.Test
@@ -49,6 +48,7 @@ internal class HypervisorTest {
/**
* A smoke test for the bare-metal driver.
*/
+ @OptIn(ExperimentalCoroutinesApi::class)
@Test
fun smoke() {
val provider = ServiceLoader.load(SimulationEngineProvider::class.java).first()
@@ -56,24 +56,9 @@ internal class HypervisorTest {
val root = system.newDomain("root")
root.launch {
- val vmm = HypervisorImage(object : HypervisorMonitor {
- override suspend fun onSliceFinish(
- time: Long,
- requestedBurst: Long,
- grantedBurst: Long,
- numberOfDeployedImages: Int,
- hostServer: Server
- ) {
- println("Hello World!")
- }
- })
+ val vmm = HypervisorImage
val workloadA = FlopsApplicationImage(UUID.randomUUID(), "<unnamed>", emptyMap(), 1_000, 1)
val workloadB = FlopsApplicationImage(UUID.randomUUID(), "<unnamed>", emptyMap(), 2_000, 1)
- val monitor = object : NodeMonitor {
- override fun stateChanged(server: Server, previousState: ServerState) {
- println("$server")
- }
- }
val driverDom = root.newDomain("driver")
@@ -81,16 +66,17 @@ internal class HypervisorTest {
val cpus = List(2) { ProcessingUnit(cpuNode, it, 2000.0) }
val metalDriver = SimpleBareMetalDriver(driverDom, UUID.randomUUID(), "test", cpus, emptyList())
- metalDriver.init(monitor)
+ metalDriver.init()
metalDriver.setImage(vmm)
- metalDriver.start()
+ val node = metalDriver.start()
+ node.server?.events?.onEach { println(it) }?.launchIn(this)
delay(5)
val flavor = Flavor(1, 0)
val vmDriver = metalDriver.refresh().server!!.services[VirtDriver]
- vmDriver.spawn(workloadA, monitor, flavor)
- vmDriver.spawn(workloadB, monitor, flavor)
+ vmDriver.spawn(workloadA, flavor).events.onEach { println(it) }.launchIn(this)
+ vmDriver.spawn(workloadB, flavor)
}
runBlocking {