summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-06-17 14:15:45 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2021-06-17 14:15:45 +0200
commit0fd7b3116fbace7deb8202d1849cece7146462a9 (patch)
treee0a152829b36532f321df63913f21fc2ee3ccdd0
parent81c3b51169cc5dfafb80abb0cf55abb49646a72a (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.kt2
-rw-r--r--opendc-experiments/opendc-experiments-serverless20/build.gradle.kts4
-rw-r--r--opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/ServerlessExperiment.kt14
-rw-r--r--opendc-experiments/opendc-experiments-serverless20/src/main/kotlin/org/opendc/experiments/serverless/trace/FunctionTraceWorkload.kt6
-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.kt37
-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.kt37
-rw-r--r--settings.gradle.kts6
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")