summaryrefslogtreecommitdiff
path: root/opendc-experiments/opendc-experiments-faas/src
diff options
context:
space:
mode:
authorDante Niewenhuis <d.niewenhuis@hotmail.com>2024-03-05 13:23:57 +0100
committerGitHub <noreply@github.com>2024-03-05 13:23:57 +0100
commit5864cbcbfe2eb8c36ca05c3a39c7e5916aeecaec (patch)
tree5b2773b8dc21c2e1b526fb70f829c376dd80532a /opendc-experiments/opendc-experiments-faas/src
parentd28002a3c151d198298574312f32f1cb43f3a660 (diff)
Updated package versions, updated web server tests. (#207)
* Updated all package versions including kotlin. Updated all web-server tests to run. * Changed the java version of the tests. OpenDC now only supports java 19. * small update * test update * new update * updated docker version to 19 * updated docker version to 19
Diffstat (limited to 'opendc-experiments/opendc-experiments-faas/src')
-rw-r--r--opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/FaaSServiceProvisioningStep.kt26
-rw-r--r--opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/FaaSSteps.kt2
-rw-r--r--opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/FunctionSample.kt2
-rw-r--r--opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/FunctionTraceWorkload.kt7
-rw-r--r--opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/ServerlessTraceReader.kt32
-rw-r--r--opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/TraceHelpers.kt5
-rw-r--r--opendc-experiments/opendc-experiments-faas/src/test/kotlin/org/opendc/experiments/faas/FaaSExperiment.kt49
-rw-r--r--opendc-experiments/opendc-experiments-faas/src/test/kotlin/org/opendc/experiments/faas/ServerlessTraceReaderTest.kt2
8 files changed, 70 insertions, 55 deletions
diff --git a/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/FaaSServiceProvisioningStep.kt b/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/FaaSServiceProvisioningStep.kt
index 548abc9a..6c8cc0a2 100644
--- a/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/FaaSServiceProvisioningStep.kt
+++ b/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/FaaSServiceProvisioningStep.kt
@@ -48,21 +48,23 @@ public class FaaSServiceProvisioningStep internal constructor(
private val routingPolicy: (ProvisioningContext) -> RoutingPolicy,
private val terminationPolicy: (ProvisioningContext) -> FunctionTerminationPolicy,
private val machineModel: MachineModel,
- private val coldStartModel: ColdStartModel?
+ private val coldStartModel: ColdStartModel?,
) : ProvisioningStep {
override fun apply(ctx: ProvisioningContext): AutoCloseable {
- val delayInjector = if (coldStartModel != null) {
- StochasticDelayInjector(coldStartModel, Random(ctx.seeder.nextLong()))
- } else {
- ZeroDelayInjector
- }
+ val delayInjector =
+ if (coldStartModel != null) {
+ StochasticDelayInjector(coldStartModel, Random(ctx.seeder.nextLong()))
+ } else {
+ ZeroDelayInjector
+ }
val deployer = SimFunctionDeployer(ctx.dispatcher, machineModel, delayInjector)
- val service = FaaSService(
- ctx.dispatcher,
- deployer,
- routingPolicy(ctx),
- terminationPolicy(ctx)
- )
+ val service =
+ FaaSService(
+ ctx.dispatcher,
+ deployer,
+ routingPolicy(ctx),
+ terminationPolicy(ctx),
+ )
ctx.registry.register(serviceDomain, FaaSService::class.java, service)
diff --git a/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/FaaSSteps.kt b/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/FaaSSteps.kt
index ce76da0d..a84fe092 100644
--- a/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/FaaSSteps.kt
+++ b/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/FaaSSteps.kt
@@ -46,7 +46,7 @@ public fun setupFaaSService(
routingPolicy: (ProvisioningContext) -> RoutingPolicy,
terminationPolicy: (ProvisioningContext) -> FunctionTerminationPolicy,
machineModel: MachineModel,
- coldStartModel: ColdStartModel? = null
+ coldStartModel: ColdStartModel? = null,
): ProvisioningStep {
return FaaSServiceProvisioningStep(serviceDomain, routingPolicy, terminationPolicy, machineModel, coldStartModel)
}
diff --git a/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/FunctionSample.kt b/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/FunctionSample.kt
index 4ce2b136..4ca84da7 100644
--- a/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/FunctionSample.kt
+++ b/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/FunctionSample.kt
@@ -40,5 +40,5 @@ public data class FunctionSample(
val provisionedCpu: Int,
val provisionedMem: Int,
val cpuUsage: Double,
- val memUsage: Double
+ val memUsage: Double,
)
diff --git a/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/FunctionTraceWorkload.kt b/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/FunctionTraceWorkload.kt
index 71a2536c..1592e629 100644
--- a/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/FunctionTraceWorkload.kt
+++ b/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/FunctionTraceWorkload.kt
@@ -31,6 +31,11 @@ import org.opendc.simulator.compute.workload.SimWorkload
* A [SimFaaSWorkload] for a [FunctionTrace].
*/
public class FunctionTraceWorkload(trace: FunctionTrace) :
- SimFaaSWorkload, SimWorkload by SimTrace.ofFragments(trace.samples.map { SimTraceFragment(it.timestamp, it.duration, it.cpuUsage, 1) }).createWorkload(0) {
+ SimFaaSWorkload,
+ SimWorkload by SimTrace.ofFragments(
+ trace.samples.map {
+ SimTraceFragment(it.timestamp, it.duration, it.cpuUsage, 1)
+ },
+ ).createWorkload(0) {
override suspend fun invoke() {}
}
diff --git a/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/ServerlessTraceReader.kt b/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/ServerlessTraceReader.kt
index 7b6b3ef7..09412961 100644
--- a/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/ServerlessTraceReader.kt
+++ b/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/ServerlessTraceReader.kt
@@ -42,9 +42,10 @@ public class ServerlessTraceReader {
/**
* The [CsvFactory] used to create the parser.
*/
- private val factory = CsvFactory()
- .enable(CsvParser.Feature.ALLOW_COMMENTS)
- .enable(CsvParser.Feature.TRIM_SPACES)
+ private val factory =
+ CsvFactory()
+ .enable(CsvParser.Feature.ALLOW_COMMENTS)
+ .enable(CsvParser.Feature.TRIM_SPACES)
/**
* Parse the traces at the specified [path].
@@ -120,17 +121,18 @@ public class ServerlessTraceReader {
/**
* The [CsvSchema] that is used to parse the trace.
*/
- val schema = CsvSchema.builder()
- .addColumn("Timestamp [ms]", CsvSchema.ColumnType.NUMBER)
- .addColumn("Invocations", CsvSchema.ColumnType.NUMBER)
- .addColumn("Avg Exec time per Invocation", CsvSchema.ColumnType.NUMBER)
- .addColumn("Provisioned CPU [Mhz]", CsvSchema.ColumnType.NUMBER)
- .addColumn("Provisioned Memory [mb]", CsvSchema.ColumnType.NUMBER)
- .addColumn("Avg cpu usage per Invocation [Mhz]", CsvSchema.ColumnType.NUMBER)
- .addColumn("Avg mem usage per Invocation [mb]", CsvSchema.ColumnType.NUMBER)
- .addColumn("name", CsvSchema.ColumnType.STRING)
- .setAllowComments(true)
- .setUseHeader(true)
- .build()
+ val schema =
+ CsvSchema.builder()
+ .addColumn("Timestamp [ms]", CsvSchema.ColumnType.NUMBER)
+ .addColumn("Invocations", CsvSchema.ColumnType.NUMBER)
+ .addColumn("Avg Exec time per Invocation", CsvSchema.ColumnType.NUMBER)
+ .addColumn("Provisioned CPU [Mhz]", CsvSchema.ColumnType.NUMBER)
+ .addColumn("Provisioned Memory [mb]", CsvSchema.ColumnType.NUMBER)
+ .addColumn("Avg cpu usage per Invocation [Mhz]", CsvSchema.ColumnType.NUMBER)
+ .addColumn("Avg mem usage per Invocation [mb]", CsvSchema.ColumnType.NUMBER)
+ .addColumn("name", CsvSchema.ColumnType.STRING)
+ .setAllowComments(true)
+ .setUseHeader(true)
+ .build()
}
}
diff --git a/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/TraceHelpers.kt b/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/TraceHelpers.kt
index 7a354d69..faa13fa2 100644
--- a/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/TraceHelpers.kt
+++ b/opendc-experiments/opendc-experiments-faas/src/main/kotlin/org/opendc/experiments/faas/TraceHelpers.kt
@@ -37,7 +37,10 @@ import kotlin.math.max
* @param clock An [InstantSource] instance tracking simulation time.
* @param trace The trace to simulate.
*/
-public suspend fun FaaSService.replay(clock: InstantSource, trace: List<FunctionTrace>) {
+public suspend fun FaaSService.replay(
+ clock: InstantSource,
+ trace: List<FunctionTrace>,
+) {
val client = newClient()
try {
coroutineScope {
diff --git a/opendc-experiments/opendc-experiments-faas/src/test/kotlin/org/opendc/experiments/faas/FaaSExperiment.kt b/opendc-experiments/opendc-experiments-faas/src/test/kotlin/org/opendc/experiments/faas/FaaSExperiment.kt
index 9a3dba13..346059a8 100644
--- a/opendc-experiments/opendc-experiments-faas/src/test/kotlin/org/opendc/experiments/faas/FaaSExperiment.kt
+++ b/opendc-experiments/opendc-experiments-faas/src/test/kotlin/org/opendc/experiments/faas/FaaSExperiment.kt
@@ -46,34 +46,35 @@ class FaaSExperiment {
* Smoke test that simulates a small trace.
*/
@Test
- fun testSmoke() = runSimulation {
- val faasService = "faas.opendc.org"
+ fun testSmoke() =
+ runSimulation {
+ val faasService = "faas.opendc.org"
- Provisioner(dispatcher, seed = 0L).use { provisioner ->
- provisioner.runStep(
- setupFaaSService(
- faasService,
- { RandomRoutingPolicy() },
- { FunctionTerminationPolicyFixed(it.dispatcher, timeout = Duration.ofMinutes(10)) },
- createMachineModel(),
- coldStartModel = ColdStartModel.GOOGLE
+ Provisioner(dispatcher, seed = 0L).use { provisioner ->
+ provisioner.runStep(
+ setupFaaSService(
+ faasService,
+ { RandomRoutingPolicy() },
+ { FunctionTerminationPolicyFixed(it.dispatcher, timeout = Duration.ofMinutes(10)) },
+ createMachineModel(),
+ coldStartModel = ColdStartModel.GOOGLE,
+ ),
)
- )
- val service = provisioner.registry.resolve(faasService, FaaSService::class.java)!!
+ val service = provisioner.registry.resolve(faasService, FaaSService::class.java)!!
- val trace = ServerlessTraceReader().parse(File("src/test/resources/trace"))
- service.replay(timeSource, trace)
+ val trace = ServerlessTraceReader().parse(File("src/test/resources/trace"))
+ service.replay(timeSource, trace)
- val stats = service.getSchedulerStats()
+ val stats = service.getSchedulerStats()
- assertAll(
- { assertEquals(14, stats.totalInvocations) },
- { assertEquals(2, stats.timelyInvocations) },
- { assertEquals(12, stats.delayedInvocations) }
- )
+ assertAll(
+ { assertEquals(14, stats.totalInvocations) },
+ { assertEquals(2, stats.timelyInvocations) },
+ { assertEquals(12, stats.delayedInvocations) },
+ )
+ }
}
- }
/**
* Construct the machine model to test with.
@@ -82,8 +83,10 @@ class FaaSExperiment {
val cpuNode = ProcessingNode("Intel", "Xeon", "amd64", 2)
return MachineModel(
- /*cpus*/ List(cpuNode.coreCount) { ProcessingUnit(cpuNode, it, 1000.0) },
- /*memory*/ List(4) { MemoryUnit("Crucial", "MTA18ASF4G72AZ-3G2B1", 3200.0, 32_000) }
+ // cpus
+ List(cpuNode.coreCount) { ProcessingUnit(cpuNode, it, 1000.0) },
+ // memory
+ List(4) { MemoryUnit("Crucial", "MTA18ASF4G72AZ-3G2B1", 3200.0, 32_000) },
)
}
}
diff --git a/opendc-experiments/opendc-experiments-faas/src/test/kotlin/org/opendc/experiments/faas/ServerlessTraceReaderTest.kt b/opendc-experiments/opendc-experiments-faas/src/test/kotlin/org/opendc/experiments/faas/ServerlessTraceReaderTest.kt
index 54071791..bc4f5457 100644
--- a/opendc-experiments/opendc-experiments-faas/src/test/kotlin/org/opendc/experiments/faas/ServerlessTraceReaderTest.kt
+++ b/opendc-experiments/opendc-experiments-faas/src/test/kotlin/org/opendc/experiments/faas/ServerlessTraceReaderTest.kt
@@ -39,7 +39,7 @@ class ServerlessTraceReaderTest {
assertAll(
{ assertEquals(2, trace.size) },
{ assertEquals("004c1ea5eb15978682b00ab659aed21e2835d5287668da8d5267f751fdfbdd78", trace[0].id) },
- { assertEquals(256, trace[0].maxMemory) }
+ { assertEquals(256, trace[0].maxMemory) },
)
}
}