Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package app.controller

import app.controller.JsonController.JsonRequest
import app.model.Message
import cc.otavia.core.actor.StateActor
import cc.otavia.http.server.{HttpRequest, HttpResponse}
import cc.otavia.core.stack.{AskStack, StackYield}

class JsonController extends StateActor[JsonRequest] {
override protected def resumeAsk(stack: AskStack[JsonRequest]): StackYield = {
stack.`return`(HttpResponse.builder.setContent(Message("Hello, World!")).build())
}
}
object JsonController {
object JsonRequest extends HttpRequest[Nothing, HttpResponse[Message]]
type JsonRequest = JsonRequest.type
}
7 changes: 5 additions & 2 deletions frameworks/Scala/otavia/benchmark/src/app/startup.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package app

import app.controller.DBController.*
import app.controller.FortuneController.*
import app.controller.{DBController, FortuneController}
import app.controller.*
import app.model.*
import app.util.FortunesRender
import cc.otavia.core.actor.ChannelsActor.{Bind, ChannelEstablished}
Expand All @@ -28,18 +28,20 @@ private class ServerMain(val port: Int = 8080) extends MainActor(Array.empty) {

override def main0(stack: NoticeStack[MainActor.Args]): StackYield = stack.state match
case _: StartState =>
val messageResponseSerde = HttpResponseSerde.json(summon[JsonSerde[Message]])
val worldResponseSerde = HttpResponseSerde.json(summon[JsonSerde[World]])
val worldsResponseSerde = HttpResponseSerde.json(JsonSerde.derived[Seq[World]])
val fortunesResponseSerde = HttpResponseSerde(new FortunesRender(), MediaType.TEXT_HTML_UTF8)

val dbController = autowire[DBController]()
val fortuneController = autowire[FortuneController]()
val jsonController = autowire[JsonController]()

val routers = Seq(
// Test 6: plaintext
constant[Array[Byte]](GET, "/plaintext", "Hello, World!".getBytes(UTF_8), BytesSerde, TEXT_PLAIN_UTF8),
// Test 1: JSON serialization
constant[Message](GET, "/json", Message("Hello, World!"), summon[JsonSerde[Message]], APP_JSON),
get("/json", jsonController, () => JsonController.JsonRequest, messageResponseSerde),
// Test 2: Single database query.
get("/db", dbController, () => new SingleQueryRequest(), worldResponseSerde),
// Test 3: Multiple database queries
Expand Down Expand Up @@ -67,4 +69,5 @@ private class ServerMain(val port: Int = 8080) extends MainActor(Array.empty) {
system.buildActor(() => new Connection(url, user, password), global = true, num = poolSize)
system.buildActor(() => new DBController(), global = true, num = system.actorWorkerSize)
system.buildActor(() => new FortuneController(), global = true, num = system.actorWorkerSize)
system.buildActor(() => new JsonController(), global = true, num = system.actorWorkerSize)
system.buildActor(() => new ServerMain())
4 changes: 2 additions & 2 deletions frameworks/Scala/otavia/benchmark_config.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"webserver": "None",
"os": "Linux",
"database_os": "Linux",
"display_name": "otavia",
"display_name": "otavia (poolSize = 56)",
"notes": "",
"versus": "Otavia"
},
Expand All @@ -44,7 +44,7 @@
"webserver": "None",
"os": "Linux",
"database_os": "Linux",
"display_name": "otavia",
"display_name": "otavia (poolSize = 64)",
"notes": "",
"versus": "Otavia"
}
Expand Down
Loading