summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--simulator/opendc-serverless/opendc-serverless-api/src/main/kotlin/org/opendc/serverless/api/ServerlessClient.kt2
-rw-r--r--simulator/opendc-serverless/opendc-serverless-api/src/main/kotlin/org/opendc/serverless/api/ServerlessFunction.kt5
-rw-r--r--simulator/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/internal/ClientFunction.kt4
-rw-r--r--simulator/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/internal/InternalFunction.kt4
-rw-r--r--simulator/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/internal/ServerlessServiceImpl.kt2
-rw-r--r--simulator/opendc-serverless/opendc-serverless-service/src/test/kotlin/org/opendc/serverless/service/ServerlessServiceTest.kt20
-rw-r--r--simulator/opendc-serverless/opendc-serverless-simulator/src/test/kotlin/org/opendc/serverless/simulator/SimServerlessServiceTest.kt2
7 files changed, 28 insertions, 11 deletions
diff --git a/simulator/opendc-serverless/opendc-serverless-api/src/main/kotlin/org/opendc/serverless/api/ServerlessClient.kt b/simulator/opendc-serverless/opendc-serverless-api/src/main/kotlin/org/opendc/serverless/api/ServerlessClient.kt
index f14f4977..b66369ec 100644
--- a/simulator/opendc-serverless/opendc-serverless-api/src/main/kotlin/org/opendc/serverless/api/ServerlessClient.kt
+++ b/simulator/opendc-serverless/opendc-serverless-api/src/main/kotlin/org/opendc/serverless/api/ServerlessClient.kt
@@ -51,11 +51,13 @@ public interface ServerlessClient : AutoCloseable {
* Create a new serverless function.
*
* @param name The name of the function.
+ * @param memorySize The memory allocated for the function in MB.
* @param labels The labels associated with the function.
* @param meta The metadata associated with the function.
*/
public suspend fun newFunction(
name: String,
+ memorySize: Long,
labels: Map<String, String> = emptyMap(),
meta: Map<String, Any> = emptyMap()
): ServerlessFunction
diff --git a/simulator/opendc-serverless/opendc-serverless-api/src/main/kotlin/org/opendc/serverless/api/ServerlessFunction.kt b/simulator/opendc-serverless/opendc-serverless-api/src/main/kotlin/org/opendc/serverless/api/ServerlessFunction.kt
index ec0fad71..f1360966 100644
--- a/simulator/opendc-serverless/opendc-serverless-api/src/main/kotlin/org/opendc/serverless/api/ServerlessFunction.kt
+++ b/simulator/opendc-serverless/opendc-serverless-api/src/main/kotlin/org/opendc/serverless/api/ServerlessFunction.kt
@@ -39,6 +39,11 @@ public interface ServerlessFunction {
public val name: String
/**
+ * The amount of memory allocated for this function in MB.
+ */
+ public val memorySize: Long
+
+ /**
* The identifying labels attached to the resource.
*/
public val labels: Map<String, String>
diff --git a/simulator/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/internal/ClientFunction.kt b/simulator/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/internal/ClientFunction.kt
index 1258a037..a26e7d87 100644
--- a/simulator/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/internal/ClientFunction.kt
+++ b/simulator/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/internal/ClientFunction.kt
@@ -34,6 +34,9 @@ internal class ClientFunction(private val delegate: ServerlessFunction) : Server
override var name: String = delegate.name
private set
+ override var memorySize: Long = delegate.memorySize
+ private set
+
override var labels: Map<String, String> = delegate.labels.toMap()
private set
@@ -52,6 +55,7 @@ internal class ClientFunction(private val delegate: ServerlessFunction) : Server
delegate.refresh()
name = delegate.name
+ memorySize = delegate.memorySize
labels = delegate.labels
meta = delegate.meta
}
diff --git a/simulator/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/internal/InternalFunction.kt b/simulator/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/internal/InternalFunction.kt
index a6e22912..cea2018d 100644
--- a/simulator/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/internal/InternalFunction.kt
+++ b/simulator/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/internal/InternalFunction.kt
@@ -32,12 +32,16 @@ internal class InternalFunction(
private val service: ServerlessServiceImpl,
override val uid: UUID,
name: String,
+ allocatedMemory: Long,
labels: Map<String, String>,
meta: Map<String, Any>
) : ServerlessFunction {
override var name: String = name
private set
+ override var memorySize: Long = allocatedMemory
+ private set
+
override val labels: MutableMap<String, String> = labels.toMutableMap()
override val meta: MutableMap<String, Any> = meta.toMutableMap()
diff --git a/simulator/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/internal/ServerlessServiceImpl.kt b/simulator/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/internal/ServerlessServiceImpl.kt
index c49871df..9d8dadb1 100644
--- a/simulator/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/internal/ServerlessServiceImpl.kt
+++ b/simulator/opendc-serverless/opendc-serverless-service/src/main/kotlin/org/opendc/serverless/service/internal/ServerlessServiceImpl.kt
@@ -138,6 +138,7 @@ internal class ServerlessServiceImpl(
override suspend fun newFunction(
name: String,
+ memorySize: Long,
labels: Map<String, String>,
meta: Map<String, Any>
): ServerlessFunction {
@@ -149,6 +150,7 @@ internal class ServerlessServiceImpl(
this@ServerlessServiceImpl,
uid,
name,
+ memorySize,
labels,
meta
)
diff --git a/simulator/opendc-serverless/opendc-serverless-service/src/test/kotlin/org/opendc/serverless/service/ServerlessServiceTest.kt b/simulator/opendc-serverless/opendc-serverless-service/src/test/kotlin/org/opendc/serverless/service/ServerlessServiceTest.kt
index c4910758..569e9246 100644
--- a/simulator/opendc-serverless/opendc-serverless-service/src/test/kotlin/org/opendc/serverless/service/ServerlessServiceTest.kt
+++ b/simulator/opendc-serverless/opendc-serverless-service/src/test/kotlin/org/opendc/serverless/service/ServerlessServiceTest.kt
@@ -53,7 +53,7 @@ internal class ServerlessServiceTest {
assertDoesNotThrow { client.close() }
assertThrows<IllegalStateException> { client.queryFunctions() }
- assertThrows<IllegalStateException> { client.newFunction("test") }
+ assertThrows<IllegalStateException> { client.newFunction("test", 128) }
assertThrows<IllegalStateException> { client.invoke("test") }
assertThrows<IllegalStateException> { client.findFunction(UUID.randomUUID()) }
assertThrows<IllegalStateException> { client.findFunction("name") }
@@ -78,7 +78,7 @@ internal class ServerlessServiceTest {
val client = service.newClient()
- val function = client.newFunction("test")
+ val function = client.newFunction("test", 128)
assertEquals("test", function.name)
}
@@ -93,7 +93,7 @@ internal class ServerlessServiceTest {
assertEquals(emptyList<ServerlessFunction>(), client.queryFunctions())
- val function = client.newFunction("test")
+ val function = client.newFunction("test", 128)
assertEquals(listOf(function), client.queryFunctions())
}
@@ -108,7 +108,7 @@ internal class ServerlessServiceTest {
assertEquals(emptyList<ServerlessFunction>(), client.queryFunctions())
- val function = client.newFunction("test")
+ val function = client.newFunction("test", 128)
assertNotNull(client.findFunction(function.uid))
}
@@ -123,7 +123,7 @@ internal class ServerlessServiceTest {
assertEquals(emptyList<ServerlessFunction>(), client.queryFunctions())
- val function = client.newFunction("test")
+ val function = client.newFunction("test", 128)
assertNotNull(client.findFunction(function.name))
}
@@ -136,9 +136,9 @@ internal class ServerlessServiceTest {
val client = service.newClient()
- client.newFunction("test")
+ client.newFunction("test", 128)
- assertThrows<IllegalArgumentException> { client.newFunction("test") }
+ assertThrows<IllegalArgumentException> { client.newFunction("test", 128) }
}
@Test
@@ -148,7 +148,7 @@ internal class ServerlessServiceTest {
val service = ServerlessService(coroutineContext, clock, meter, mockk(), mockk())
val client = service.newClient()
- val function = client.newFunction("test")
+ val function = client.newFunction("test", 128)
assertNotNull(client.findFunction(function.uid))
function.delete()
assertNull(client.findFunction(function.uid))
@@ -164,7 +164,7 @@ internal class ServerlessServiceTest {
val service = ServerlessService(coroutineContext, clock, meter, mockk(), mockk())
val client = service.newClient()
- val function = client.newFunction("test")
+ val function = client.newFunction("test", 128)
assertNotNull(client.findFunction(function.uid))
function.delete()
@@ -190,7 +190,7 @@ internal class ServerlessServiceTest {
}
val client = service.newClient()
- val function = client.newFunction("test")
+ val function = client.newFunction("test", 128)
function.invoke()
}
diff --git a/simulator/opendc-serverless/opendc-serverless-simulator/src/test/kotlin/org/opendc/serverless/simulator/SimServerlessServiceTest.kt b/simulator/opendc-serverless/opendc-serverless-simulator/src/test/kotlin/org/opendc/serverless/simulator/SimServerlessServiceTest.kt
index 16ae60e6..597b5ce0 100644
--- a/simulator/opendc-serverless/opendc-serverless-simulator/src/test/kotlin/org/opendc/serverless/simulator/SimServerlessServiceTest.kt
+++ b/simulator/opendc-serverless/opendc-serverless-simulator/src/test/kotlin/org/opendc/serverless/simulator/SimServerlessServiceTest.kt
@@ -73,7 +73,7 @@ internal class SimServerlessServiceTest {
val client = service.newClient()
- val function = client.newFunction("test")
+ val function = client.newFunction("test", 128)
function.invoke()
delay(2000)