Browse Source

daveD - added fintrospect benchmarking tests for JSON and plaintext

David Denton 9 years ago
parent
commit
9b006d0699

+ 11 - 0
frameworks/Scala/fintrospect/.gitignore

@@ -0,0 +1,11 @@
+target/
+project/target
+bin/
+logs/
+.idea/
+.cache
+.classpath
+.project
+/bin/
+tools/
+sbt

+ 21 - 0
frameworks/Scala/fintrospect/README.md

@@ -0,0 +1,21 @@
+#fintrospect Benchmarking Test
+
+## Infrastructure Software Versions
+The tests were run with:
+
+* [Java Oracle 1.8.0_25](http://www.oracle.com/technetwork/java/javase)
+* [fintrospect 12.2.1](https://github.com/daviddenton/fintrospect)
+
+## Test URLs
+
+### JSON Encoding Test
+http://localhost:9000/json
+
+### Plaintext Test
+http://localhost:9000/plaintext
+
+## How to run
+sbt 'oneJar'
+
+`java -jar target/scala-2.11/*fintrospect*one-jar.jar`
+

+ 23 - 0
frameworks/Scala/fintrospect/benchmark_config.json

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

+ 19 - 0
frameworks/Scala/fintrospect/build.sbt

@@ -0,0 +1,19 @@
+name := """techempower-benchmarks-fintrospect"""
+
+version := "0.0.1"
+
+scalaVersion := "2.11.7"
+
+com.github.retronym.SbtOneJar.oneJarSettings
+
+mainClass in(Compile, run) := Some("FintrospectBenchmarkServer")
+
+libraryDependencies ++= Seq(
+  "com.twitter" %% "finagle-http" % "6.33.0",
+  "io.github.daviddenton" %% "fintrospect" % "12.2.1",
+  "io.circe" %% "circe-core" % "0.3.0",
+  "io.circe" %% "circe-parser" % "0.3.0",
+  "io.circe" %% "circe-generic" % "0.3.0"
+)
+
+resolvers += Resolver.sonatypeRepo("snapshots")

+ 4 - 0
frameworks/Scala/fintrospect/project/build.properties

@@ -0,0 +1,4 @@
+#Activator-generated Properties
+#Wed Feb 25 16:26:13 CET 2015
+template.uuid=6a24da4f-6985-4cd1-a841-205d69ced830
+sbt.version=0.13.7

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

@@ -0,0 +1 @@
+addSbtPlugin("org.scala-sbt.plugins" % "sbt-onejar" % "0.8")

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

@@ -0,0 +1,7 @@
+#!/bin/bash
+
+fw_depends java sbt
+
+sbt 'oneJar' -batch
+
+java -jar target/scala-2.11/*fintrospect*one-jar.jar &

+ 29 - 0
frameworks/Scala/fintrospect/src/main/scala/FintrospectBenchmarkServer.scala

@@ -0,0 +1,29 @@
+import com.twitter.finagle.http.Method.Get
+import com.twitter.finagle.http.Request
+import com.twitter.finagle.http.Status._
+import com.twitter.finagle.http.path.Root
+import com.twitter.finagle.{Http, Service}
+import com.twitter.util.Await
+import io.fintrospect.formats.json.Circe.JsonFormat._
+import io.fintrospect.{ModuleSpec, RouteSpec}
+
+object FintrospectBenchmarkServer extends App {
+
+  def plainTextHelloWorld() = {
+    import io.fintrospect.formats.PlainText.ResponseBuilder._
+    Service.mk { r: Request => Ok("Hello, World!") }
+  }
+
+  def jsonHelloWorld() = {
+    import io.fintrospect.formats.json.Circe.ResponseBuilder._
+    Service.mk { r: Request => Ok(obj("message" -> string("Hello, World!"))) }
+  }
+
+  val module = ModuleSpec(Root)
+    .withRoute(RouteSpec().at(Get) / "plaintext" bindTo plainTextHelloWorld)
+    .withRoute(RouteSpec().at(Get) / "json" bindTo jsonHelloWorld)
+
+  Await.ready(
+    Http.serve(":9000", module.toService)
+  )
+}