summaryrefslogtreecommitdiff
path: root/simulator/opendc-serverless/opendc-serverless-simulator/src/test/kotlin/org
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-04-08 20:44:30 +0200
committerGitHub <noreply@github.com>2021-04-08 20:44:30 +0200
commit5fdbfbe7d340bc10f8b9eebd5aa23bdfd7dc4e18 (patch)
tree21020cd0451664006a5bf291a5c27dd74f6129d0 /simulator/opendc-serverless/opendc-serverless-simulator/src/test/kotlin/org
parent3fd45fc5befb1fc9a67d4494e8a3786a5dceae3a (diff)
parent831ba3d882a46dad2abe6ac281b736b729dc7080 (diff)
exp: Add serverless experiments (v1)
This pull request is the first in a series of pull request to add the serverless experiments from Soufiane Jounaid's BSc thesis to the main OpenDC repository. In this pull request, we add the serverless experiment and trace reader. * Add `opendc-experiments-serverless20` which will contain the serverless experiments. * Add `ServerlessTraceReader` which reads the traces from Soufiane's work. * Add support for cold start delays * Expose metrics per function.
Diffstat (limited to 'simulator/opendc-serverless/opendc-serverless-simulator/src/test/kotlin/org')
-rw-r--r--simulator/opendc-serverless/opendc-serverless-simulator/src/test/kotlin/org/opendc/serverless/simulator/SimServerlessServiceTest.kt19
1 files changed, 10 insertions, 9 deletions
diff --git a/simulator/opendc-serverless/opendc-serverless-simulator/src/test/kotlin/org/opendc/serverless/simulator/SimServerlessServiceTest.kt b/simulator/opendc-serverless/opendc-serverless-simulator/src/test/kotlin/org/opendc/serverless/simulator/SimServerlessServiceTest.kt
index f68e206a..3a070475 100644
--- a/simulator/opendc-serverless/opendc-serverless-simulator/src/test/kotlin/org/opendc/serverless/simulator/SimServerlessServiceTest.kt
+++ b/simulator/opendc-serverless/opendc-serverless-simulator/src/test/kotlin/org/opendc/serverless/simulator/SimServerlessServiceTest.kt
@@ -22,8 +22,9 @@
package org.opendc.serverless.simulator
+import io.mockk.coVerify
import io.mockk.spyk
-import io.mockk.verify
+import io.opentelemetry.api.metrics.MeterProvider
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.delay
import kotlinx.coroutines.test.runBlockingTest
@@ -33,6 +34,7 @@ import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertAll
import org.opendc.serverless.service.ServerlessService
import org.opendc.serverless.service.router.RandomRoutingPolicy
+import org.opendc.serverless.simulator.delay.ZeroDelayInjector
import org.opendc.serverless.simulator.workload.SimServerlessWorkload
import org.opendc.simulator.compute.SimMachineModel
import org.opendc.simulator.compute.model.MemoryUnit
@@ -62,16 +64,17 @@ internal class SimServerlessServiceTest {
@Test
fun testSmoke() = runBlockingTest {
+ val meter = MeterProvider.noop().get("opendc-serverless")
val clock = DelayControllerClockAdapter(this)
- val workload = spyk(object : SimServerlessWorkload {
- override fun onInvoke(): SimWorkload = SimFlopsWorkload(1000)
+ val workload = spyk(object : SimServerlessWorkload, SimWorkload by SimFlopsWorkload(1000) {
+ override suspend fun invoke() {}
})
- val deployer = SimFunctionDeployer(clock, this, machineModel) { workload }
- val service = ServerlessService(coroutineContext, clock, deployer, RandomRoutingPolicy())
+ val deployer = SimFunctionDeployer(clock, this, machineModel, ZeroDelayInjector) { workload }
+ val service = ServerlessService(coroutineContext, clock, meter, deployer, RandomRoutingPolicy())
val client = service.newClient()
- val function = client.newFunction("test")
+ val function = client.newFunction("test", 128)
function.invoke()
delay(2000)
@@ -80,9 +83,7 @@ internal class SimServerlessServiceTest {
yield()
assertAll(
- { verify { workload.onStart() } },
- { verify { workload.onInvoke() } },
- { verify { workload.onStop() } }
+ { coVerify { workload.invoke() } },
)
}
}