diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2021-06-17 14:15:45 +0200 |
|---|---|---|
| committer | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2021-06-17 14:15:45 +0200 |
| commit | 0fd7b3116fbace7deb8202d1849cece7146462a9 (patch) | |
| tree | e0a152829b36532f321df63913f21fc2ee3ccdd0 | |
| parent | 81c3b51169cc5dfafb80abb0cf55abb49646a72a (diff) | |
faas: Rename opendc-serverless to opendc-faas
This change renames the opendc-serverless module to opendc-faas to
better distinguish between the two terms (Serverless and FaaS) and be
clearer about the intent of the module.
The opendc-faas module holds the code for the FaaS platform on top of
OpenDC. Although this is one approach of doing serverless, serverless
can also entail other services that will not be covered by this module.
| -rw-r--r-- | opendc-experiments/opendc-experiments-energy21/src/main/kotlin/org/opendc/experiments/energy21/EnergyExperiment.kt | 2 | ||||
| -rw-r--r-- | opendc-experiments/opendc-experiments-serverless20/build.gradle.kts | 4 | ||||
| -rw-r--r-- | opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/ServerlessExperiment.kt | 14 | ||||
| -rw-r--r-- | opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/trace/FunctionTraceWorkload.kt | 6 | ||||
| -rw-r--r-- | opendc-faas/build.gradle.kts (renamed from opendc-serverless/build.gradle.kts) | 2 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-api/build.gradle.kts (renamed from opendc-serverless/opendc-serverless-api/build.gradle.kts) | 2 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-api/src/main/kotlin/org/opendc/faas/api/FaaSClient.kt (renamed from opendc-serverless/opendc-serverless-api/src/main/kotlin/org/opendc/serverless/api/ServerlessClient.kt) | 20 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-api/src/main/kotlin/org/opendc/faas/api/FaaSFunction.kt (renamed from opendc-serverless/opendc-serverless-api/src/main/kotlin/org/opendc/serverless/api/ServerlessFunction.kt) | 4 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-service/build.gradle.kts (renamed from opendc-serverless/opendc-serverless-service/build.gradle.kts) | 4 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/FaaSService.kt (renamed from opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/ServerlessService.kt) | 28 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/FunctionObject.kt (renamed from opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/FunctionObject.kt) | 4 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/autoscaler/FunctionTerminationPolicy.kt (renamed from opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/autoscaler/FunctionTerminationPolicy.kt) | 6 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/autoscaler/FunctionTerminationPolicyFixed.kt (renamed from opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/autoscaler/FunctionTerminationPolicyFixed.kt) | 6 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/autoscaler/FunctionTerminationPolicyNull.kt (renamed from opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/autoscaler/FunctionTerminationPolicyNull.kt) | 4 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/deployer/FunctionDeployer.kt (renamed from opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/deployer/FunctionDeployer.kt) | 4 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/deployer/FunctionInstance.kt (renamed from opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/deployer/FunctionInstance.kt) | 4 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/deployer/FunctionInstanceListener.kt (renamed from opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/deployer/FunctionInstanceListener.kt) | 2 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/deployer/FunctionInstanceState.kt (renamed from opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/deployer/FunctionInstanceState.kt) | 2 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/internal/FaaSFunctionImpl.kt (renamed from opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/internal/ServerlessFunctionImpl.kt) | 18 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/internal/FaaSServiceImpl.kt (renamed from opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/internal/ServerlessServiceImpl.kt) | 48 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/router/RandomRoutingPolicy.kt (renamed from opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/router/RandomRoutingPolicy.kt) | 6 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/router/RoutingPolicy.kt (renamed from opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/router/RoutingPolicy.kt) | 6 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-service/src/test/kotlin/org/opendc/faas/service/FaaSServiceTest.kt (renamed from opendc-serverless/opendc-serverless-service/src/test/kotlin/org/opendc/serverless/service/ServerlessServiceTest.kt) | 60 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-simulator/build.gradle.kts (renamed from opendc-serverless/opendc-serverless-simulator/build.gradle.kts) | 4 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-simulator/src/main/kotlin/org/opendc/faas/simulator/SimFunctionDeployer.kt (renamed from opendc-serverless/opendc-serverless-simulator/src/main/kotlin/org/opendc/serverless/simulator/SimFunctionDeployer.kt) | 21 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-simulator/src/main/kotlin/org/opendc/faas/simulator/delay/ColdStartModel.kt (renamed from opendc-serverless/opendc-serverless-simulator/src/main/kotlin/org/opendc/serverless/simulator/delay/ColdStartModel.kt) | 2 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-simulator/src/main/kotlin/org/opendc/faas/simulator/delay/DelayInjector.kt (renamed from opendc-serverless/opendc-serverless-simulator/src/main/kotlin/org/opendc/serverless/simulator/delay/DelayInjector.kt) | 4 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-simulator/src/main/kotlin/org/opendc/faas/simulator/delay/StochasticDelayInjector.kt (renamed from opendc-serverless/opendc-serverless-simulator/src/main/kotlin/org/opendc/serverless/simulator/delay/StochasticDelayInjector.kt) | 4 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-simulator/src/main/kotlin/org/opendc/faas/simulator/delay/ZeroDelayInjector.kt (renamed from opendc-serverless/opendc-serverless-simulator/src/main/kotlin/org/opendc/serverless/simulator/delay/ZeroDelayInjector.kt) | 4 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-simulator/src/main/kotlin/org/opendc/faas/simulator/workload/SimFaaSWorkload.kt (renamed from opendc-serverless/opendc-serverless-simulator/src/main/kotlin/org/opendc/serverless/simulator/workload/SimServerlessWorkload.kt) | 6 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-simulator/src/main/kotlin/org/opendc/faas/simulator/workload/SimFaaSWorkloadMapper.kt | 37 | ||||
| -rw-r--r-- | opendc-faas/opendc-faas-simulator/src/test/kotlin/org/opendc/faas/simulator/SimFaaSServiceTest.kt (renamed from opendc-serverless/opendc-serverless-simulator/src/test/kotlin/org/opendc/serverless/simulator/SimServerlessServiceTest.kt) | 22 | ||||
| -rw-r--r-- | opendc-serverless/opendc-serverless-simulator/src/main/kotlin/org/opendc/serverless/simulator/workload/SimServerlessWorkloadMapper.kt | 37 | ||||
| -rw-r--r-- | settings.gradle.kts | 6 |
34 files changed, 201 insertions, 202 deletions
diff --git a/opendc-experiments/opendc-experiments-energy21/src/main/kotlin/org/opendc/experiments/energy21/EnergyExperiment.kt b/opendc-experiments/opendc-experiments-energy21/src/main/kotlin/org/opendc/experiments/energy21/EnergyExperiment.kt index a6419441..65915cc6 100644 --- a/opendc-experiments/opendc-experiments-energy21/src/main/kotlin/org/opendc/experiments/energy21/EnergyExperiment.kt +++ b/opendc-experiments/opendc-experiments-energy21/src/main/kotlin/org/opendc/experiments/energy21/EnergyExperiment.kt @@ -24,7 +24,6 @@ package org.opendc.experiments.energy21 import com.typesafe.config.ConfigFactory import io.opentelemetry.api.metrics.MeterProvider -import io.opentelemetry.sdk.metrics.SdkMeterProvider import io.opentelemetry.sdk.metrics.export.MetricProducer import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.channels.Channel @@ -50,7 +49,6 @@ import org.opendc.simulator.compute.model.ProcessingNode import org.opendc.simulator.compute.model.ProcessingUnit import org.opendc.simulator.compute.power.* import org.opendc.simulator.core.runBlockingSimulation -import org.opendc.telemetry.sdk.toOtelClock import java.io.File import java.time.Clock import java.util.* diff --git a/opendc-experiments/opendc-experiments-serverless20/build.gradle.kts b/opendc-experiments/opendc-experiments-serverless20/build.gradle.kts index 7d68cb3a..65c31c4f 100644 --- a/opendc-experiments/opendc-experiments-serverless20/build.gradle.kts +++ b/opendc-experiments/opendc-experiments-serverless20/build.gradle.kts @@ -32,8 +32,8 @@ dependencies { api(platform(projects.opendcPlatform)) api(projects.opendcHarness.opendcHarnessApi) implementation(projects.opendcSimulator.opendcSimulatorCore) - implementation(projects.opendcServerless.opendcServerlessService) - implementation(projects.opendcServerless.opendcServerlessSimulator) + implementation(projects.opendcFaas.opendcFaasService) + implementation(projects.opendcFaas.opendcFaasSimulator) implementation(projects.opendcTelemetry.opendcTelemetrySdk) implementation(libs.kotlin.logging) implementation(libs.config) diff --git a/opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/ServerlessExperiment.kt b/opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/ServerlessExperiment.kt index 516bcc3e..3a016491 100644 --- a/opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/ServerlessExperiment.kt +++ b/opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/ServerlessExperiment.kt @@ -31,14 +31,14 @@ import kotlinx.coroutines.launch import mu.KotlinLogging import org.opendc.experiments.serverless.trace.FunctionTraceWorkload import org.opendc.experiments.serverless.trace.ServerlessTraceReader +import org.opendc.faas.service.FaaSService +import org.opendc.faas.service.autoscaler.FunctionTerminationPolicyFixed +import org.opendc.faas.service.router.RandomRoutingPolicy +import org.opendc.faas.simulator.SimFunctionDeployer +import org.opendc.faas.simulator.delay.ColdStartModel +import org.opendc.faas.simulator.delay.StochasticDelayInjector import org.opendc.harness.dsl.Experiment import org.opendc.harness.dsl.anyOf -import org.opendc.serverless.service.ServerlessService -import org.opendc.serverless.service.autoscaler.FunctionTerminationPolicyFixed -import org.opendc.serverless.service.router.RandomRoutingPolicy -import org.opendc.serverless.simulator.SimFunctionDeployer -import org.opendc.serverless.simulator.delay.ColdStartModel -import org.opendc.serverless.simulator.delay.StochasticDelayInjector import org.opendc.simulator.compute.SimMachineModel import org.opendc.simulator.compute.model.MemoryUnit import org.opendc.simulator.compute.model.ProcessingNode @@ -85,7 +85,7 @@ public class ServerlessExperiment : Experiment("Serverless") { val delayInjector = StochasticDelayInjector(coldStartModel, Random()) val deployer = SimFunctionDeployer(clock, this, createMachineModel(), delayInjector) { FunctionTraceWorkload(traceById.getValue(it.name)) } val service = - ServerlessService(coroutineContext, clock, meterProvider.get("opendc-serverless"), deployer, routingPolicy, FunctionTerminationPolicyFixed(coroutineContext, clock, timeout = 10 * 60 * 1000)) + FaaSService(coroutineContext, clock, meterProvider.get("opendc-serverless"), deployer, routingPolicy, FunctionTerminationPolicyFixed(coroutineContext, clock, timeout = 10 * 60 * 1000)) val client = service.newClient() coroutineScope { diff --git a/opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/trace/FunctionTraceWorkload.kt b/opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/trace/FunctionTraceWorkload.kt index 7d824857..9a93092e 100644 --- a/opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/trace/FunctionTraceWorkload.kt +++ b/opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/trace/FunctionTraceWorkload.kt @@ -22,13 +22,13 @@ package org.opendc.experiments.serverless.trace -import org.opendc.serverless.simulator.workload.SimServerlessWorkload +import org.opendc.faas.simulator.workload.SimFaaSWorkload import org.opendc.simulator.compute.workload.SimTraceWorkload import org.opendc.simulator.compute.workload.SimWorkload /** - * A [SimServerlessWorkload] for a [FunctionTrace]. + * A [SimFaaSWorkload] for a [FunctionTrace]. */ -public class FunctionTraceWorkload(trace: FunctionTrace) : SimServerlessWorkload, SimWorkload by SimTraceWorkload(trace.samples.asSequence().map { SimTraceWorkload.Fragment(it.duration, it.cpuUsage, 1) }) { +public class FunctionTraceWorkload(trace: FunctionTrace) : SimFaaSWorkload, SimWorkload by SimTraceWorkload(trace.samples.asSequence().map { SimTraceWorkload.Fragment(it.duration, it.cpuUsage, 1) }) { override suspend fun invoke() {} } diff --git a/opendc-serverless/build.gradle.kts b/opendc-faas/build.gradle.kts index a458c809..2493639f 100644 --- a/opendc-serverless/build.gradle.kts +++ b/opendc-faas/build.gradle.kts @@ -20,4 +20,4 @@ * SOFTWARE. */ -description = "Serverless platform for OpenDC" +description = "Function-as-a-Service (FaaS) platform for OpenDC" diff --git a/opendc-serverless/opendc-serverless-api/build.gradle.kts b/opendc-faas/opendc-faas-api/build.gradle.kts index 0d9a8036..7362d949 100644 --- a/opendc-serverless/opendc-serverless-api/build.gradle.kts +++ b/opendc-faas/opendc-faas-api/build.gradle.kts @@ -20,7 +20,7 @@ * SOFTWARE. */ -description = "Serverless API for OpenDC" +description = "API for the OpenDC FaaS platform" /* Build configuration */ plugins { diff --git a/opendc-serverless/opendc-serverless-api/src/main/kotlin/org/opendc/serverless/api/ServerlessClient.kt b/opendc-faas/opendc-faas-api/src/main/kotlin/org/opendc/faas/api/FaaSClient.kt index b66369ec..ebda4f90 100644 --- a/opendc-serverless/opendc-serverless-api/src/main/kotlin/org/opendc/serverless/api/ServerlessClient.kt +++ b/opendc-faas/opendc-faas-api/src/main/kotlin/org/opendc/faas/api/FaaSClient.kt @@ -20,32 +20,32 @@ * SOFTWARE. */ -package org.opendc.serverless.api +package org.opendc.faas.api import java.util.* /** - * Client interface to the OpenDC Serverless service. + * Client interface to the OpenDC FaaS platform. */ -public interface ServerlessClient : AutoCloseable { +public interface FaaSClient : AutoCloseable { /** - * Obtain the list of [ServerlessFunction]s accessible by the requesting user. + * Obtain the list of [FaaSFunction]s accessible by the requesting user. */ - public suspend fun queryFunctions(): List<ServerlessFunction> + public suspend fun queryFunctions(): List<FaaSFunction> /** - * Obtain a [ServerlessFunction] by its unique identifier. + * Obtain a [FaaSFunction] by its unique identifier. * * @param id The identifier of the flavor. */ - public suspend fun findFunction(id: UUID): ServerlessFunction? + public suspend fun findFunction(id: UUID): FaaSFunction? /** - * Obtain a [ServerlessFunction] by its name. + * Obtain a [FaaSFunction] by its name. * * @param name The name of the function. */ - public suspend fun findFunction(name: String): ServerlessFunction? + public suspend fun findFunction(name: String): FaaSFunction? /** * Create a new serverless function. @@ -60,7 +60,7 @@ public interface ServerlessClient : AutoCloseable { memorySize: Long, labels: Map<String, String> = emptyMap(), meta: Map<String, Any> = emptyMap() - ): ServerlessFunction + ): FaaSFunction /** * Invoke the function with the specified [name]. diff --git a/opendc-serverless/opendc-serverless-api/src/main/kotlin/org/opendc/serverless/api/ServerlessFunction.kt b/opendc-faas/opendc-faas-api/src/main/kotlin/org/opendc/faas/api/FaaSFunction.kt index f1360966..40f0092f 100644 --- a/opendc-serverless/opendc-serverless-api/src/main/kotlin/org/opendc/serverless/api/ServerlessFunction.kt +++ b/opendc-faas/opendc-faas-api/src/main/kotlin/org/opendc/faas/api/FaaSFunction.kt @@ -20,14 +20,14 @@ * SOFTWARE. */ -package org.opendc.serverless.api +package org.opendc.faas.api import java.util.UUID /** * A serverless function instance. */ -public interface ServerlessFunction { +public interface FaaSFunction { /** * The unique identifier of the function. */ diff --git a/opendc-serverless/opendc-serverless-service/build.gradle.kts b/opendc-faas/opendc-faas-service/build.gradle.kts index bce72c72..63bed8bc 100644 --- a/opendc-serverless/opendc-serverless-service/build.gradle.kts +++ b/opendc-faas/opendc-faas-service/build.gradle.kts @@ -20,7 +20,7 @@ * SOFTWARE. */ -description = "Serverless service for OpenDC" +description = "FaaS service for OpenDC" /* Build configuration */ plugins { @@ -31,7 +31,7 @@ plugins { dependencies { api(platform(projects.opendcPlatform)) - api(projects.opendcServerless.opendcServerlessApi) + api(projects.opendcFaas.opendcFaasApi) api(projects.opendcTelemetry.opendcTelemetryApi) implementation(projects.opendcUtils) implementation(libs.kotlin.logging) diff --git a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/ServerlessService.kt b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/FaaSService.kt index e2f135ae..7e716a34 100644 --- a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/ServerlessService.kt +++ b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/FaaSService.kt @@ -20,34 +20,34 @@ * SOFTWARE. */ -package org.opendc.serverless.service +package org.opendc.faas.service import io.opentelemetry.api.metrics.Meter -import org.opendc.serverless.api.ServerlessClient -import org.opendc.serverless.service.autoscaler.FunctionTerminationPolicy -import org.opendc.serverless.service.deployer.FunctionDeployer -import org.opendc.serverless.service.internal.ServerlessServiceImpl -import org.opendc.serverless.service.router.RoutingPolicy +import org.opendc.faas.api.FaaSClient +import org.opendc.faas.service.autoscaler.FunctionTerminationPolicy +import org.opendc.faas.service.deployer.FunctionDeployer +import org.opendc.faas.service.internal.FaaSServiceImpl +import org.opendc.faas.service.router.RoutingPolicy import java.time.Clock import kotlin.coroutines.CoroutineContext /** - * The [ServerlessService] hosts the API implementation of the OpenDC Serverless service. + * The [FaaSService] hosts the service implementation of the OpenDC FaaS platform. */ -public interface ServerlessService : AutoCloseable { +public interface FaaSService : AutoCloseable { /** - * Create a new [ServerlessClient] to control the compute service. + * Create a new [FaaSClient] to control the compute service. */ - public fun newClient(): ServerlessClient + public fun newClient(): FaaSClient /** - * Terminate the lifecycle of the serverless service, stopping all running function instances. + * Terminate the lifecycle of the FaaS service, stopping all running function instances. */ public override fun close() public companion object { /** - * Construct a new [ServerlessService] implementation. + * Construct a new [FaaSService] implementation. * * @param context The [CoroutineContext] to use in the service. * @param clock The clock instance to use. @@ -63,8 +63,8 @@ public interface ServerlessService : AutoCloseable { deployer: FunctionDeployer, routingPolicy: RoutingPolicy, terminationPolicy: FunctionTerminationPolicy, - ): ServerlessService { - return ServerlessServiceImpl(context, clock, meter, deployer, routingPolicy, terminationPolicy) + ): FaaSService { + return FaaSServiceImpl(context, clock, meter, deployer, routingPolicy, terminationPolicy) } } } diff --git a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/FunctionObject.kt b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/FunctionObject.kt index c12bbfe2..7c7621b8 100644 --- a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/FunctionObject.kt +++ b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/FunctionObject.kt @@ -20,14 +20,14 @@ * SOFTWARE. */ -package org.opendc.serverless.service +package org.opendc.faas.service import io.opentelemetry.api.metrics.BoundLongCounter import io.opentelemetry.api.metrics.BoundLongUpDownCounter import io.opentelemetry.api.metrics.BoundLongValueRecorder import io.opentelemetry.api.metrics.Meter import io.opentelemetry.api.metrics.common.Labels -import org.opendc.serverless.service.deployer.FunctionInstance +import org.opendc.faas.service.deployer.FunctionInstance import java.util.* /** diff --git a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/autoscaler/FunctionTerminationPolicy.kt b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/autoscaler/FunctionTerminationPolicy.kt index 25df10a6..2ab3638b 100644 --- a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/autoscaler/FunctionTerminationPolicy.kt +++ b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/autoscaler/FunctionTerminationPolicy.kt @@ -20,10 +20,10 @@ * SOFTWARE. */ -package org.opendc.serverless.service.autoscaler +package org.opendc.faas.service.autoscaler -import org.opendc.serverless.service.deployer.FunctionInstance -import org.opendc.serverless.service.deployer.FunctionInstanceListener +import org.opendc.faas.service.deployer.FunctionInstance +import org.opendc.faas.service.deployer.FunctionInstanceListener /** * A management policy that is responsible for downscaling the active function instances for a function. diff --git a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/autoscaler/FunctionTerminationPolicyFixed.kt b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/autoscaler/FunctionTerminationPolicyFixed.kt index 26b99f52..1e224ed1 100644 --- a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/autoscaler/FunctionTerminationPolicyFixed.kt +++ b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/autoscaler/FunctionTerminationPolicyFixed.kt @@ -20,10 +20,10 @@ * SOFTWARE. */ -package org.opendc.serverless.service.autoscaler +package org.opendc.faas.service.autoscaler -import org.opendc.serverless.service.deployer.FunctionInstance -import org.opendc.serverless.service.deployer.FunctionInstanceState +import org.opendc.faas.service.deployer.FunctionInstance +import org.opendc.faas.service.deployer.FunctionInstanceState import org.opendc.utils.TimerScheduler import java.time.Clock import kotlin.coroutines.CoroutineContext diff --git a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/autoscaler/FunctionTerminationPolicyNull.kt b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/autoscaler/FunctionTerminationPolicyNull.kt index f2d8da59..957e569b 100644 --- a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/autoscaler/FunctionTerminationPolicyNull.kt +++ b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/autoscaler/FunctionTerminationPolicyNull.kt @@ -20,9 +20,9 @@ * SOFTWARE. */ -package org.opendc.serverless.service.autoscaler +package org.opendc.faas.service.autoscaler -import org.opendc.serverless.service.deployer.FunctionInstance +import org.opendc.faas.service.deployer.FunctionInstance /** * A [FunctionTerminationPolicy] that never terminates function instances. diff --git a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/deployer/FunctionDeployer.kt b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/deployer/FunctionDeployer.kt index 5355b659..049f1cc7 100644 --- a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/deployer/FunctionDeployer.kt +++ b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/deployer/FunctionDeployer.kt @@ -20,9 +20,9 @@ * SOFTWARE. */ -package org.opendc.serverless.service.deployer +package org.opendc.faas.service.deployer -import org.opendc.serverless.service.FunctionObject +import org.opendc.faas.service.FunctionObject /** * A [FunctionDeployer] is responsible for ensuring that an instance of an arbitrary function, a [FunctionInstance], diff --git a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/deployer/FunctionInstance.kt b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/deployer/FunctionInstance.kt index d60648ea..a8b04df4 100644 --- a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/deployer/FunctionInstance.kt +++ b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/deployer/FunctionInstance.kt @@ -20,9 +20,9 @@ * SOFTWARE. */ -package org.opendc.serverless.service.deployer +package org.opendc.faas.service.deployer -import org.opendc.serverless.service.FunctionObject +import org.opendc.faas.service.FunctionObject /** * A [FunctionInstance] is a a self-contained worker—typically a container—capable of handling function executions. diff --git a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/deployer/FunctionInstanceListener.kt b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/deployer/FunctionInstanceListener.kt index 27803a63..20e280a2 100644 --- a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/deployer/FunctionInstanceListener.kt +++ b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/deployer/FunctionInstanceListener.kt @@ -20,7 +20,7 @@ * SOFTWARE. */ -package org.opendc.serverless.service.deployer +package org.opendc.faas.service.deployer /** * Listener interface for events originating from a [FunctionInstance]. diff --git a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/deployer/FunctionInstanceState.kt b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/deployer/FunctionInstanceState.kt index 4fc4a83f..2b6b6eba 100644 --- a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/deployer/FunctionInstanceState.kt +++ b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/deployer/FunctionInstanceState.kt @@ -20,7 +20,7 @@ * SOFTWARE. */ -package org.opendc.serverless.service.deployer +package org.opendc.faas.service.deployer /** * This enumeration describes the states of a [FunctionInstance]. diff --git a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/internal/ServerlessFunctionImpl.kt b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/internal/FaaSFunctionImpl.kt index 80b50e77..bd7f13f6 100644 --- a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/internal/ServerlessFunctionImpl.kt +++ b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/internal/FaaSFunctionImpl.kt @@ -20,19 +20,19 @@ * SOFTWARE. */ -package org.opendc.serverless.service.internal +package org.opendc.faas.service.internal -import org.opendc.serverless.api.ServerlessFunction -import org.opendc.serverless.service.FunctionObject +import org.opendc.faas.api.FaaSFunction +import org.opendc.faas.service.FunctionObject import java.util.* /** - * A [ServerlessFunction] implementation that is passed to clients. + * A [FaaSFunction] implementation that is passed to clients. */ -internal class ServerlessFunctionImpl( - private val service: ServerlessServiceImpl, +internal class FaaSFunctionImpl( + private val service: FaaSServiceImpl, private val state: FunctionObject -) : ServerlessFunction { +) : FaaSFunction { override val uid: UUID = state.uid override var name: String = state.name @@ -62,9 +62,9 @@ internal class ServerlessFunctionImpl( meta = state.meta } - override fun equals(other: Any?): Boolean = other is ServerlessFunctionImpl && uid == other.uid + override fun equals(other: Any?): Boolean = other is FaaSFunctionImpl && uid == other.uid override fun hashCode(): Int = uid.hashCode() - override fun toString(): String = "ServerlessFunction[uid=$uid,name=$name]" + override fun toString(): String = "FaaSFunction[uid=$uid,name=$name]" } diff --git a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/internal/ServerlessServiceImpl.kt b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/internal/FaaSServiceImpl.kt index 91a59279..b169436f 100644 --- a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/internal/ServerlessServiceImpl.kt +++ b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/internal/FaaSServiceImpl.kt @@ -20,22 +20,22 @@ * SOFTWARE. */ -package org.opendc.serverless.service.internal +package org.opendc.faas.service.internal import io.opentelemetry.api.metrics.Meter import kotlinx.coroutines.* import kotlinx.coroutines.intrinsics.startCoroutineCancellable import mu.KotlinLogging -import org.opendc.serverless.api.ServerlessClient -import org.opendc.serverless.api.ServerlessFunction -import org.opendc.serverless.service.FunctionObject -import org.opendc.serverless.service.ServerlessService -import org.opendc.serverless.service.autoscaler.FunctionTerminationPolicy -import org.opendc.serverless.service.deployer.FunctionDeployer -import org.opendc.serverless.service.deployer.FunctionInstance -import org.opendc.serverless.service.deployer.FunctionInstanceListener -import org.opendc.serverless.service.deployer.FunctionInstanceState -import org.opendc.serverless.service.router.RoutingPolicy +import org.opendc.faas.api.FaaSClient +import org.opendc.faas.api.FaaSFunction +import org.opendc.faas.service.FaaSService +import org.opendc.faas.service.FunctionObject +import org.opendc.faas.service.autoscaler.FunctionTerminationPolicy +import org.opendc.faas.service.deployer.FunctionDeployer +import org.opendc.faas.service.deployer.FunctionInstance +import org.opendc.faas.service.deployer.FunctionInstanceListener +import org.opendc.faas.service.deployer.FunctionInstanceState +import org.opendc.faas.service.router.RoutingPolicy import org.opendc.utils.TimerScheduler import java.lang.IllegalStateException import java.time.Clock @@ -45,20 +45,20 @@ import kotlin.coroutines.CoroutineContext import kotlin.coroutines.resumeWithException /** - * Implementation of the [ServerlessService] interface. + * Implementation of the [FaaSService] interface. * * This component acts as the function router from the SPEC RG Reference Architecture for FaaS and is responsible * for routing incoming requests or events to the correct [FunctionInstance]. If no [FunctionInstance] is available, * this component queues the events to await the deployment of new instances. */ -internal class ServerlessServiceImpl( +internal class FaaSServiceImpl( context: CoroutineContext, private val clock: Clock, private val meter: Meter, private val deployer: FunctionDeployer, private val routingPolicy: RoutingPolicy, private val terminationPolicy: FunctionTerminationPolicy -) : ServerlessService, FunctionInstanceListener { +) : FaaSService, FunctionInstanceListener { /** * The [CoroutineScope] of the service bounded by the lifecycle of the service. */ @@ -114,30 +114,30 @@ internal class ServerlessServiceImpl( .setUnit("1") .build() - override fun newClient(): ServerlessClient { - return object : ServerlessClient { + override fun newClient(): FaaSClient { + return object : FaaSClient { private var isClosed: Boolean = false /** - * Exposes a [FunctionObject] to a client-exposed [ServerlessFunction] instance. + * Exposes a [FunctionObject] to a client-exposed [FaaSFunction] instance. */ - private fun FunctionObject.asClientFunction(): ServerlessFunction { - return ServerlessFunctionImpl(this@ServerlessServiceImpl, this) + private fun FunctionObject.asClientFunction(): FaaSFunction { + return FaaSFunctionImpl(this@FaaSServiceImpl, this) } - override suspend fun queryFunctions(): List<ServerlessFunction> { + override suspend fun queryFunctions(): List<FaaSFunction> { check(!isClosed) { "Client is already closed" } return functions.values.map { it.asClientFunction() } } - override suspend fun findFunction(id: UUID): ServerlessFunction? { + override suspend fun findFunction(id: UUID): FaaSFunction? { check(!isClosed) { "Client is already closed" } return functions[id]?.asClientFunction() } - override suspend fun findFunction(name: String): ServerlessFunction? { + override suspend fun findFunction(name: String): FaaSFunction? { check(!isClosed) { "Client is already closed" } return functionsByName[name]?.asClientFunction() @@ -148,7 +148,7 @@ internal class ServerlessServiceImpl( memorySize: Long, labels: Map<String, String>, meta: Map<String, Any> - ): ServerlessFunction { + ): FaaSFunction { check(!isClosed) { "Client is already closed" } require(name !in functionsByName) { "Function with same name exists" } @@ -172,7 +172,7 @@ internal class ServerlessServiceImpl( check(!isClosed) { "Client is already closed" } val func = requireNotNull(functionsByName[name]) { "Unknown function" } - this@ServerlessServiceImpl.invoke(func) + this@FaaSServiceImpl.invoke(func) } override fun close() { diff --git a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/router/RandomRoutingPolicy.kt b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/router/RandomRoutingPolicy.kt index 063fb80a..5bd9d4d3 100644 --- a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/router/RandomRoutingPolicy.kt +++ b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/router/RandomRoutingPolicy.kt @@ -20,10 +20,10 @@ * SOFTWARE. */ -package org.opendc.serverless.service.router +package org.opendc.faas.service.router -import org.opendc.serverless.service.FunctionObject -import org.opendc.serverless.service.deployer.FunctionInstance +import org.opendc.faas.service.FunctionObject +import org.opendc.faas.service.deployer.FunctionInstance import kotlin.random.Random /** diff --git a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/router/RoutingPolicy.kt b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/router/RoutingPolicy.kt index d5d1166f..e99e329a 100644 --- a/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/router/RoutingPolicy.kt +++ b/opendc-faas/opendc-faas-service/src/main/kotlin/org/opendc/faas/service/router/RoutingPolicy.kt @@ -20,10 +20,10 @@ * SOFTWARE. */ -package org.opendc.serverless.service.router +package org.opendc.faas.service.router -import org.opendc.serverless.service.FunctionObject -import org.opendc.serverless.service.deployer.FunctionInstance +import org.opendc.faas.service.FunctionObject +import org.opendc.faas.service.deployer.FunctionInstance /** * A [RoutingPolicy] decides to which [FunctionInstance] a function invocation should be routed. diff --git a/opendc-serverless/opendc-serverless-service/src/test/kotlin/org/opendc/serverless/service/ServerlessServiceTest.kt b/opendc-faas/opendc-faas-service/src/test/kotlin/org/opendc/faas/service/FaaSServiceTest.kt index 6b2e8223..6b99684a 100644 --- a/opendc-serverless/opendc-serverless-service/src/test/kotlin/org/opendc/serverless/service/ServerlessServiceTest.kt +++ b/opendc-faas/opendc-faas-service/src/test/kotlin/org/opendc/faas/service/FaaSServiceTest.kt @@ -20,7 +20,7 @@ * SOFTWARE. */ -package org.opendc.serverless.service +package org.opendc.faas.service import io.mockk.* import io.opentelemetry.api.metrics.MeterProvider @@ -29,23 +29,23 @@ import org.junit.jupiter.api.Assertions.* import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertDoesNotThrow import org.junit.jupiter.api.assertThrows -import org.opendc.serverless.api.ServerlessFunction -import org.opendc.serverless.service.deployer.FunctionDeployer -import org.opendc.serverless.service.deployer.FunctionInstance -import org.opendc.serverless.service.deployer.FunctionInstanceState +import org.opendc.faas.api.FaaSFunction +import org.opendc.faas.service.deployer.FunctionDeployer +import org.opendc.faas.service.deployer.FunctionInstance +import org.opendc.faas.service.deployer.FunctionInstanceState import org.opendc.simulator.core.runBlockingSimulation import java.util.* /** - * Test suite for the [ServerlessService] implementation. + * Test suite for the [FaaSService] implementation. */ @OptIn(ExperimentalCoroutinesApi::class) -internal class ServerlessServiceTest { +internal class FaaSServiceTest { @Test fun testClientState() = runBlockingSimulation { - val meter = MeterProvider.noop().get("opendc-serverless") - val service = ServerlessService(coroutineContext, clock, meter, mockk(), mockk(), mockk()) + val meter = MeterProvider.noop().get("opendc-faas") + val service = FaaSService(coroutineContext, clock, meter, mockk(), mockk(), mockk()) val client = assertDoesNotThrow { service.newClient() } assertDoesNotThrow { client.close() } @@ -59,8 +59,8 @@ internal class ServerlessServiceTest { @Test fun testClientInvokeUnknown() = runBlockingSimulation { - val meter = MeterProvider.noop().get("opendc-serverless") - val service = ServerlessService(coroutineContext, clock, meter, mockk(), mockk(), mockk()) + val meter = MeterProvider.noop().get("opendc-faas") + val service = FaaSService(coroutineContext, clock, meter, mockk(), mockk(), mockk()) val client = service.newClient() @@ -69,8 +69,8 @@ internal class ServerlessServiceTest { @Test fun testClientFunctionCreation() = runBlockingSimulation { - val meter = MeterProvider.noop().get("opendc-serverless") - val service = ServerlessService(coroutineContext, clock, meter, mockk(), mockk(), mockk()) + val meter = MeterProvider.noop().get("opendc-faas") + val service = FaaSService(coroutineContext, clock, meter, mockk(), mockk(), mockk()) val client = service.newClient() @@ -81,12 +81,12 @@ internal class ServerlessServiceTest { @Test fun testClientFunctionQuery() = runBlockingSimulation { - val meter = MeterProvider.noop().get("opendc-serverless") - val service = ServerlessService(coroutineContext, clock, meter, mockk(), mockk(), mockk()) + val meter = MeterProvider.noop().get("opendc-faas") + val service = FaaSService(coroutineContext, clock, meter, mockk(), mockk(), mockk()) val client = service.newClient() - assertEquals(emptyList<ServerlessFunction>(), client.queryFunctions()) + assertEquals(emptyList<FaaSFunction>(), client.queryFunctions()) val function = client.newFunction("test", 128) @@ -95,12 +95,12 @@ internal class ServerlessServiceTest { @Test fun testClientFunctionFindById() = runBlockingSimulation { - val meter = MeterProvider.noop().get("opendc-serverless") - val service = ServerlessService(coroutineContext, clock, meter, mockk(), mockk(), mockk()) + val meter = MeterProvider.noop().get("opendc-faas") + val service = FaaSService(coroutineContext, clock, meter, mockk(), mockk(), mockk()) val client = service.newClient() - assertEquals(emptyList<ServerlessFunction>(), client.queryFunctions()) + assertEquals(emptyList<FaaSFunction>(), client.queryFunctions()) val function = client.newFunction("test", 128) @@ -109,12 +109,12 @@ internal class ServerlessServiceTest { @Test fun testClientFunctionFindByName() = runBlockingSimulation { - val meter = MeterProvider.noop().get("opendc-serverless") - val service = ServerlessService(coroutineContext, clock, meter, mockk(), mockk(), mockk()) + val meter = MeterProvider.noop().get("opendc-faas") + val service = FaaSService(coroutineContext, clock, meter, mockk(), mockk(), mockk()) val client = service.newClient() - assertEquals(emptyList<ServerlessFunction>(), client.queryFunctions()) + assertEquals(emptyList<FaaSFunction>(), client.queryFunctions()) val function = client.newFunction("test", 128) @@ -123,8 +123,8 @@ internal class ServerlessServiceTest { @Test fun testClientFunctionDuplicateName() = runBlockingSimulation { - val meter = MeterProvider.noop().get("opendc-serverless") - val service = ServerlessService(coroutineContext, clock, meter, mockk(), mockk(), mockk()) + val meter = MeterProvider.noop().get("opendc-faas") + val service = FaaSService(coroutineContext, clock, meter, mockk(), mockk(), mockk()) val client = service.newClient() @@ -135,8 +135,8 @@ internal class ServerlessServiceTest { @Test fun testClientFunctionDelete() = runBlockingSimulation { - val meter = MeterProvider.noop().get("opendc-serverless") - val service = ServerlessService(coroutineContext, clock, meter, mockk(), mockk(), mockk()) + val meter = MeterProvider.noop().get("opendc-faas") + val service = FaaSService(coroutineContext, clock, meter, mockk(), mockk(), mockk()) val client = service.newClient() val function = client.newFunction("test", 128) @@ -150,8 +150,8 @@ internal class ServerlessServiceTest { @Test fun testClientFunctionCannotInvokeDeleted() = runBlockingSimulation { - val meter = MeterProvider.noop().get("opendc-serverless") - val service = ServerlessService(coroutineContext, clock, meter, mockk(), mockk(), mockk()) + val meter = MeterProvider.noop().get("opendc-faas") + val service = FaaSService(coroutineContext, clock, meter, mockk(), mockk(), mockk()) val client = service.newClient() val function = client.newFunction("test", 128) @@ -163,9 +163,9 @@ internal class ServerlessServiceTest { @Test fun testClientFunctionInvoke() = runBlockingSimulation { - val meter = MeterProvider.noop().get("opendc-serverless") + val meter = MeterProvider.noop().get("opendc-faas") val deployer = mockk<FunctionDeployer>() - val service = ServerlessService(coroutineContext, clock, meter, deployer, mockk(), mockk(relaxUnitFun = true)) + val service = FaaSService(coroutineContext, clock, meter, deployer, mockk(), mockk(relaxUnitFun = true)) every { deployer.deploy(any(), any()) } answers { object : FunctionInstance { diff --git a/opendc-serverless/opendc-serverless-simulator/build.gradle.kts b/opendc-faas/opendc-faas-simulator/build.gradle.kts index 5e2c522d..fed1862d 100644 --- a/opendc-serverless/opendc-serverless-simulator/build.gradle.kts +++ b/opendc-faas/opendc-faas-simulator/build.gradle.kts @@ -20,7 +20,7 @@ * SOFTWARE. */ -description = "Simulator for OpenDC Serverles" +description = "Simulator for the OpenDC FaaS platform" /* Build configuration */ plugins { @@ -31,7 +31,7 @@ plugins { dependencies { api(platform(projects.opendcPlatform)) - api(projects.opendcServerless.opendcServerlessService) + api(projects.opendcFaas.opendcFaasService) api(projects.opendcSimulator.opendcSimulatorCompute) testImplementation(projects.opendcSimulator.opendcSimulatorCore) diff --git a/opendc-serverless/opendc-serverless-simulator/src/main/kotlin/org/opendc/serverless/simulator/SimFunctionDeployer.kt b/opendc-faas/opendc-faas-simulator/src/main/kotlin/org/opendc/faas/simulator/SimFunctionDeployer.kt index 32e5f75e..602f1678 100644 --- a/opendc-serverless/opendc-serverless-simulator/src/main/kotlin/org/opendc/serverless/simulator/SimFunctionDeployer.kt +++ b/opendc-faas/opendc-faas-simulator/src/main/kotlin/org/opendc/faas/simulator/SimFunctionDeployer.kt @@ -20,17 +20,17 @@ * SOFTWARE. */ -package org.opendc.serverless.simulator +package org.opendc.faas.simulator import kotlinx.coroutines.* import kotlinx.coroutines.channels.Channel -import org.opendc.serverless.service.FunctionObject -import org.opendc.serverless.service.deployer.FunctionDeployer -import org.opendc.serverless.service.deployer.FunctionInstance -import org.opendc.serverless.service.deployer.FunctionInstanceListener -import org.opendc.serverless.service.deployer.FunctionInstanceState -import org.opendc.serverless.simulator.delay.DelayInjector -import org.opendc.serverless.simulator.workload.SimServerlessWorkloadMapper +import org.opendc.faas.service.FunctionObject +import org.opendc.faas.service.deployer.FunctionDeployer +import org.opendc.faas.service.deployer.FunctionInstance +import org.opendc.faas.service.deployer.FunctionInstanceListener +import org.opendc.faas.service.deployer.FunctionInstanceState +import org.opendc.faas.simulator.delay.DelayInjector +import org.opendc.faas.simulator.workload.SimFaaSWorkloadMapper import org.opendc.simulator.compute.SimBareMetalMachine import org.opendc.simulator.compute.SimMachine import org.opendc.simulator.compute.SimMachineModel @@ -51,7 +51,7 @@ public class SimFunctionDeployer( private val scope: CoroutineScope, private val model: SimMachineModel, private val delayInjector: DelayInjector, - private val mapper: SimServerlessWorkloadMapper + private val mapper: SimFaaSWorkloadMapper ) : FunctionDeployer { override fun deploy(function: FunctionObject, listener: FunctionInstanceListener): Instance { @@ -63,7 +63,8 @@ public class SimFunctionDeployer( /** * A simulated [FunctionInstance]. */ - public inner class Instance(override val function: FunctionObject, private val listener: FunctionInstanceListener) : FunctionInstance { + public inner class Instance(override val function: FunctionObject, private val listener: FunctionInstanceListener) : + FunctionInstance { /** * The workload associated with this instance. */ diff --git a/opendc-serverless/opendc-serverless-simulator/src/main/kotlin/org/opendc/serverless/simulator/delay/ColdStartModel.kt b/opendc-faas/opendc-faas-simulator/src/main/kotlin/org/opendc/faas/simulator/delay/ColdStartModel.kt index f9f3718e..624067be 100644 --- a/opendc-serverless/opendc-serverless-simulator/src/main/kotlin/org/opendc/serverless/simulator/delay/ColdStartModel.kt +++ b/opendc-faas/opendc-faas-simulator/src/main/kotlin/org/opendc/faas/simulator/delay/ColdStartModel.kt @@ -20,7 +20,7 @@ * SOFTWARE. */ -package org.opendc.serverless.simulator.delay +package org.opendc.faas.simulator.delay /** * Model parameters for the cold start times of serverless services. diff --git a/opendc-serverless/opendc-serverless-simulator/src/main/kotlin/org/opendc/serverless/simulator/delay/DelayInjector.kt b/opendc-faas/opendc-faas-simulator/src/main/kotlin/org/opendc/faas/simulator/delay/DelayInjector.kt index f882031b..c1df682c 100644 --- a/opendc-serverless/opendc-serverless-simulator/src/main/kotlin/org/opendc/serverless/simulator/delay/DelayInjector.kt +++ b/opendc-faas/opendc-faas-simulator/src/main/kotlin/org/opendc/faas/simulator/delay/DelayInjector.kt @@ -20,9 +20,9 @@ * SOFTWARE. */ -package org.opendc.serverless.simulator.delay +package org.opendc.faas.simulator.delay -import org.opendc.serverless.service.deployer.FunctionInstance +import org.opendc.faas.service.deployer.FunctionInstance /** * An interface for modeling the delay caused by function cold starts. diff --git a/opendc-serverless/opendc-serverless-simulator/src/main/kotlin/org/opendc/serverless/simulator/delay/StochasticDelayInjector.kt b/opendc-faas/opendc-faas-simulator/src/main/kotlin/org/opendc/faas/simulator/delay/StochasticDelayInjector.kt index 154378e1..9442e2d3 100644 --- a/opendc-serverless/opendc-serverless-simulator/src/main/kotlin/org/opendc/serverless/simulator/delay/StochasticDelayInjector.kt +++ b/opendc-faas/opendc-faas-simulator/src/main/kotlin/org/opendc/faas/simulator/delay/StochasticDelayInjector.kt @@ -20,9 +20,9 @@ * SOFTWARE. */ -package org.opendc.serverless.simulator.delay +package org.opendc.faas.simulator.delay -import org.opendc.serverless.service.deployer.FunctionInstance +import org.opendc.faas.service.deployer.FunctionInstance import java.util.* import kotlin.math.abs diff --git a/opendc-serverless/opendc-serverless-simulator/src/main/kotlin/org/opendc/serverless/simulator/delay/ZeroDelayInjector.kt b/opendc-faas/opendc-faas-simulator/src/main/kotlin/org/opendc/faas/simulator/delay/ZeroDelayInjector.kt index 0895ee18..0e318764 100644 --- a/opendc-serverless/opendc-serverless-simulator/src/main/kotlin/org/opendc/serverless/simulator/delay/ZeroDelayInjector.kt +++ b/opendc-faas/opendc-faas-simulator/src/main/kotlin/org/opendc/faas/simulator/delay/ZeroDelayInjector.kt @@ -20,9 +20,9 @@ * SOFTWARE. */ -package org.opendc.serverless.simulator.delay +package org.opendc.faas.simulator.delay -import org.opendc.serverless.service.deployer.FunctionInstance +import org.opendc.faas.service.deployer.FunctionInstance public object ZeroDelayInjector : DelayInjector { override fun getColdStartDelay(instance: FunctionInstance): Long = 0 diff --git a/opendc-serverless/opendc-serverless-simulator/src/main/kotlin/org/opendc/serverless/simulator/workload/SimServerlessWorkload.kt b/opendc-faas/opendc-faas-simulator/src/main/kotlin/org/opendc/faas/simulator/workload/SimFaaSWorkload.kt index 121bf915..aaee26c0 100644 --- a/opendc-serverless/opendc-serverless-simulator/src/main/kotlin/org/opendc/serverless/simulator/workload/SimServerlessWorkload.kt +++ b/opendc-faas/opendc-faas-simulator/src/main/kotlin/org/opendc/faas/simulator/workload/SimFaaSWorkload.kt @@ -20,14 +20,14 @@ * SOFTWARE. */ -package org.opendc.serverless.simulator.workload +package org.opendc.faas.simulator.workload import org.opendc.simulator.compute.workload.SimWorkload /** - * A model for a serverless workload, which may be invoked multiple times. + * A model for a serverless function workload, which may be invoked multiple times. */ -public interface SimServerlessWorkload : SimWorkload { +public interface SimFaaSWorkload : SimWorkload { /** * This method is invoked when an active function instance is invoked. */ diff --git a/opendc-faas/opendc-faas-simulator/src/main/kotlin/org/opendc/faas/simulator/workload/SimFaaSWorkloadMapper.kt b/opendc-faas/opendc-faas-simulator/src/main/kotlin/org/opendc/faas/simulator/workload/SimFaaSWorkloadMapper.kt new file mode 100644 index 00000000..b22dd659 --- /dev/null +++ b/opendc-faas/opendc-faas-simulator/src/main/kotlin/org/opendc/faas/simulator/workload/SimFaaSWorkloadMapper.kt @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2021 AtLarge Research + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package org.opendc.faas.simulator.workload + +import org.opendc.faas.api.FaaSFunction +import org.opendc.faas.service.FunctionObject + +/** + * A [SimFaaSWorkloadMapper] is responsible for mapping a [FaaSFunction] to a [SimFaaSWorkload] that + * can be simulated. + */ +public fun interface SimFaaSWorkloadMapper { + /** + * Map the specified [function] to a [SimFaaSWorkload] that can be simulated. + */ + public fun createWorkload(function: FunctionObject): SimFaaSWorkload +} diff --git a/opendc-serverless/opendc-serverless-simulator/src/test/kotlin/org/opendc/serverless/simulator/SimServerlessServiceTest.kt b/opendc-faas/opendc-faas-simulator/src/test/kotlin/org/opendc/faas/simulator/SimFaaSServiceTest.kt index 6afa1b65..ceb91e75 100644 --- a/opendc-serverless/opendc-serverless-simulator/src/test/kotlin/org/opendc/serverless/simulator/SimServerlessServiceTest.kt +++ b/opendc-faas/opendc-faas-simulator/src/test/kotlin/org/opendc/faas/simulator/SimFaaSServiceTest.kt @@ -20,7 +20,7 @@ * SOFTWARE. */ -package org.opendc.serverless.simulator +package org.opendc.faas.simulator import io.mockk.coVerify import io.mockk.spyk @@ -31,11 +31,11 @@ import kotlinx.coroutines.yield import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertAll -import org.opendc.serverless.service.ServerlessService -import org.opendc.serverless.service.autoscaler.FunctionTerminationPolicyFixed -import org.opendc.serverless.service.router.RandomRoutingPolicy -import org.opendc.serverless.simulator.delay.ZeroDelayInjector -import org.opendc.serverless.simulator.workload.SimServerlessWorkload +import org.opendc.faas.service.FaaSService +import org.opendc.faas.service.autoscaler.FunctionTerminationPolicyFixed +import org.opendc.faas.service.router.RandomRoutingPolicy +import org.opendc.faas.simulator.delay.ZeroDelayInjector +import org.opendc.faas.simulator.workload.SimFaaSWorkload import org.opendc.simulator.compute.SimMachineModel import org.opendc.simulator.compute.model.MemoryUnit import org.opendc.simulator.compute.model.ProcessingNode @@ -45,10 +45,10 @@ import org.opendc.simulator.compute.workload.SimWorkload import org.opendc.simulator.core.runBlockingSimulation /** - * A test suite for the [ServerlessService] implementation under simulated conditions. + * A test suite for the [FaaSService] implementation under simulated conditions. */ @OptIn(ExperimentalCoroutinesApi::class) -internal class SimServerlessServiceTest { +internal class SimFaaSServiceTest { private lateinit var machineModel: SimMachineModel @@ -64,12 +64,12 @@ internal class SimServerlessServiceTest { @Test fun testSmoke() = runBlockingSimulation { - val meter = MeterProvider.noop().get("opendc-serverless") - val workload = spyk(object : SimServerlessWorkload, SimWorkload by SimFlopsWorkload(1000) { + val meter = MeterProvider.noop().get("opendc-faas") + val workload = spyk(object : SimFaaSWorkload, SimWorkload by SimFlopsWorkload(1000) { override suspend fun invoke() {} }) val deployer = SimFunctionDeployer(clock, this, machineModel, ZeroDelayInjector) { workload } - val service = ServerlessService( + val service = FaaSService( coroutineContext, clock, meter, deployer, RandomRoutingPolicy(), FunctionTerminationPolicyFixed(coroutineContext, clock, timeout = 10000) ) diff --git a/opendc-serverless/opendc-serverless-simulator/src/main/kotlin/org/opendc/serverless/simulator/workload/SimServerlessWorkloadMapper.kt b/opendc-serverless/opendc-serverless-simulator/src/main/kotlin/org/opendc/serverless/simulator/workload/SimServerlessWorkloadMapper.kt deleted file mode 100644 index 3a47eb53..00000000 --- a/opendc-serverless/opendc-serverless-simulator/src/main/kotlin/org/opendc/serverless/simulator/workload/SimServerlessWorkloadMapper.kt +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2021 AtLarge Research - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package org.opendc.serverless.simulator.workload - -import org.opendc.serverless.api.ServerlessFunction -import org.opendc.serverless.service.FunctionObject - -/** - * A [SimServerlessWorkloadMapper] is responsible for mapping a [ServerlessFunction] to a [SimServerlessWorkload] that - * can be simulated. - */ -public fun interface SimServerlessWorkloadMapper { - /** - * Map the specified [function] to a [SimServerlessWorkload] that can be simulated. - */ - public fun createWorkload(function: FunctionObject): SimServerlessWorkload -} diff --git a/settings.gradle.kts b/settings.gradle.kts index 3b0571b8..34b9bf36 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -27,9 +27,9 @@ include(":opendc-compute:opendc-compute-service") include(":opendc-compute:opendc-compute-simulator") include(":opendc-workflow:opendc-workflow-api") include(":opendc-workflow:opendc-workflow-service") -include(":opendc-serverless:opendc-serverless-api") -include(":opendc-serverless:opendc-serverless-service") -include(":opendc-serverless:opendc-serverless-simulator") +include(":opendc-faas:opendc-faas-api") +include(":opendc-faas:opendc-faas-service") +include(":opendc-faas:opendc-faas-simulator") include(":opendc-format") include(":opendc-experiments:opendc-experiments-capelin") include(":opendc-experiments:opendc-experiments-energy21") |
