From b8ae32eb9a2420fe596ac5f89d3eabee83c2291a Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Mon, 29 Mar 2021 13:45:41 +0200 Subject: serverless: Expose metrics from Serverless service This change exposes several metrics from the Serverless service, which are needed for the experiments. --- .../org/opendc/serverless/simulator/SimServerlessServiceTest.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'simulator/opendc-serverless/opendc-serverless-simulator/src/test/kotlin') 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..16ae60e6 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 @@ -24,6 +24,7 @@ package org.opendc.serverless.simulator 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 @@ -62,12 +63,13 @@ 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 deployer = SimFunctionDeployer(clock, this, machineModel) { workload } - val service = ServerlessService(coroutineContext, clock, deployer, RandomRoutingPolicy()) + val service = ServerlessService(coroutineContext, clock, meter, deployer, RandomRoutingPolicy()) val client = service.newClient() -- cgit v1.2.3 From 1fb04ae372f96b32f9996c43fd066c98405ba634 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Mon, 29 Mar 2021 14:10:20 +0200 Subject: serverless: Add possibility to specify function memory requirements --- .../kotlin/org/opendc/serverless/simulator/SimServerlessServiceTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'simulator/opendc-serverless/opendc-serverless-simulator/src/test/kotlin') 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 16ae60e6..597b5ce0 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 @@ -73,7 +73,7 @@ internal class SimServerlessServiceTest { val client = service.newClient() - val function = client.newFunction("test") + val function = client.newFunction("test", 128) function.invoke() delay(2000) -- cgit v1.2.3 From 8df422ca5164bd712caf594951669ebeb656f5fb Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Wed, 31 Mar 2021 15:26:45 +0200 Subject: exp: Add experiment testing the serverless module This change adds an experiments testing the OpenDC Serverless module. --- .../opendc/serverless/simulator/SimServerlessServiceTest.kt | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'simulator/opendc-serverless/opendc-serverless-simulator/src/test/kotlin') 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 597b5ce0..89998585 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,8 @@ 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 @@ -65,8 +65,8 @@ internal class SimServerlessServiceTest { 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, meter, deployer, RandomRoutingPolicy()) @@ -82,9 +82,7 @@ internal class SimServerlessServiceTest { yield() assertAll( - { verify { workload.onStart() } }, - { verify { workload.onInvoke() } }, - { verify { workload.onStop() } } + { coVerify { workload.invoke() } }, ) } } -- cgit v1.2.3 From 831ba3d882a46dad2abe6ac281b736b729dc7080 Mon Sep 17 00:00:00 2001 From: Fabian Mastenbroek Date: Thu, 1 Apr 2021 21:14:34 +0200 Subject: serverless: Model cold start delays --- .../kotlin/org/opendc/serverless/simulator/SimServerlessServiceTest.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'simulator/opendc-serverless/opendc-serverless-simulator/src/test/kotlin') 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 89998585..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 @@ -34,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 @@ -68,7 +69,7 @@ internal class SimServerlessServiceTest { val workload = spyk(object : SimServerlessWorkload, SimWorkload by SimFlopsWorkload(1000) { override suspend fun invoke() {} }) - val deployer = SimFunctionDeployer(clock, this, machineModel) { workload } + val deployer = SimFunctionDeployer(clock, this, machineModel, ZeroDelayInjector) { workload } val service = ServerlessService(coroutineContext, clock, meter, deployer, RandomRoutingPolicy()) val client = service.newClient() -- cgit v1.2.3