diff options
| -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") |
