Forráskód Böngészése

Merge pull request #2063 from cacoco/ccoco-finatra-benchmark

Add benchmark for Finatra framework (Scala)
Nate 9 éve
szülő
commit
9f483e1d7b

+ 1 - 0
.travis.yml

@@ -186,6 +186,7 @@ env:
     - "TESTDIR=Scala/akka-http"
     - "TESTDIR=Scala/colossus"
     - "TESTDIR=Scala/finagle"
+    - "TESTDIR=Scala/finatra"
     - "TESTDIR=Scala/fintrospect"
     - "TESTDIR=Scala/lift-stateless"
     - "TESTDIR=Scala/plain"

+ 24 - 0
frameworks/Scala/finatra/.gitignore

@@ -0,0 +1,24 @@
+*.DS_Store
+
+# java
+*.class
+
+# sbt
+target/
+project/target
+
+# eclipse
+.metadata
+.settings
+.classpath
+.project
+
+.ensime*
+*.sublime-*
+.cache
+
+# intellij
+*.iml
+*.ipr
+*.iws
+.idea/

+ 29 - 0
frameworks/Scala/finatra/README.md

@@ -0,0 +1,29 @@
+#finatra Benchmarking Test
+
+### JSON Encoding Test
+
+* [JSON test source](src/main/scala/benchmark/controllers/Controller.scala)
+
+### Plaintext Test
+
+* [JSON test source](src/main/scala/benchmark/controllers/Controller.scala)
+
+## Infrastructure Software Versions
+The tests are run with:
+
+* [Java Oracle 1.8.0_25](http://www.oracle.com/technetwork/java/javase)
+* [finatra 2.1.6](https://github.com/twitter/finatra/tree/v2.1.6)
+
+## Test URLs
+### JSON Encoding Test
+
+http://localhost:8888/json
+
+### Plaintext Test
+
+http://localhost:8888/plaintext
+
+## How to run
+sbt 'assembly'
+
+`java -jar target/scala-2.11/finatra-benchmark.jar -log.level=ERROR`

+ 24 - 0
frameworks/Scala/finatra/benchmark_config.json

@@ -0,0 +1,24 @@
+{
+  "framework": "finatra",
+  "tests": [{
+    "default": {
+      "orm": "Raw",
+      "database_os": "Linux",
+      "setup_file": "setup",
+      "json_url": "/json",
+      "plaintext_url": "/plaintext",
+      "port": 8888,
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "None",
+      "framework": "finatra",
+      "language": "Scala",
+      "platform": "Netty",
+      "webserver": "None",
+      "os": "Linux",
+      "display_name": "finatra",
+      "notes": "",
+      "versus": "finagle"
+    }
+  }]
+}

+ 21 - 0
frameworks/Scala/finatra/build.sbt

@@ -0,0 +1,21 @@
+name := "techempower-benchmarks-finatra"
+organization := "com.twitter"
+version := "0.0.1"
+
+scalaVersion := "2.11.8"
+
+resolvers ++= Seq(
+  Resolver.sonatypeRepo("releases"),
+  "Twitter Maven" at "https://maven.twttr.com"
+)
+
+assemblyJarName in assembly := "finatra-benchmark.jar"
+assemblyMergeStrategy in assembly := {
+  case "BUILD" => MergeStrategy.discard
+  case other => MergeStrategy.defaultMergeStrategy(other)
+}
+
+libraryDependencies ++= Seq(
+  "com.twitter.finatra" %% "finatra-http" % "2.1.6",
+  "org.slf4j" % "slf4j-nop" % "1.7.7"
+)

+ 1 - 0
frameworks/Scala/finatra/project/build.properties

@@ -0,0 +1 @@
+sbt.version=0.13.9

+ 1 - 0
frameworks/Scala/finatra/project/plugins.sbt

@@ -0,0 +1 @@
+addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.13.0")

+ 7 - 0
frameworks/Scala/finatra/setup.sh

@@ -0,0 +1,7 @@
+#!/bin/bash
+
+fw_depends java sbt
+
+sbt clean assembly -batch
+
+java -jar target/scala-2.11/finatra-benchmark.jar -log.level=ERROR

+ 18 - 0
frameworks/Scala/finatra/src/main/scala/benchmark/Server.scala

@@ -0,0 +1,18 @@
+package benchmark
+
+import benchmark.controllers.Controller
+import com.twitter.finagle.http.Request
+import com.twitter.finatra.http.HttpServer
+import com.twitter.finatra.http.filters.HttpResponseFilter
+import com.twitter.finatra.http.routing.HttpRouter
+
+object ServerMain extends Server
+
+class Server extends HttpServer {
+
+  override def configureHttp(router: HttpRouter): Unit = {
+	router
+		.filter[HttpResponseFilter[Request]]
+		.add[Controller]
+  }
+}

+ 14 - 0
frameworks/Scala/finatra/src/main/scala/benchmark/controllers/Controller.scala

@@ -0,0 +1,14 @@
+package benchmark.controllers
+
+import com.twitter.finagle.http.Request
+import com.twitter.finatra.http.{Controller => HttpController}
+
+class Controller extends HttpController {
+  get("/json") { request: Request =>
+    Map("message" -> "Hello, World!")
+  }
+
+  get("/plaintext") { request: Request =>
+    "Hello, World!"
+  }
+}