Browse Source

Merge pull request #1677 from mfirry/master

Finch added
Mike Smith 10 years ago
parent
commit
97c8d59220

+ 1 - 0
.travis.yml

@@ -172,6 +172,7 @@ env:
     - "TESTDIR=Scala/spray-es"
     - "TESTDIR=Scala/unfiltered"
     - "TESTDIR=Scala/http4s"
+    - "TESTDIR=Scala/finch"
     - "TESTDIR=Ur/urweb"
 
 before_install:

+ 8 - 0
frameworks/Scala/finch/.gitignore

@@ -0,0 +1,8 @@
+target/
+project/target
+bin/
+logs/
+.cache
+.classpath
+.project
+/bin/

+ 30 - 0
frameworks/Scala/finch/README.md

@@ -0,0 +1,30 @@
+#finch Benchmarking Test
+
+### JSON Encoding Test
+
+* [JSON test source](src/main/scala/example/Main.scala)
+
+### Plaintext Test
+
+* [JSON test source](src/main/scala/example/Main.scala)
+
+## Infrastructure Software Versions
+The tests were run with:
+
+* [Java Oracle 1.8.0_25](http://www.oracle.com/technetwork/java/javase)
+* [finch 0.7.0](https://github.com/finagle/finch)
+
+## 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/*finch*one-jar.jar`
+

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

@@ -0,0 +1,23 @@
+{
+  "framework": "finch",
+  "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": "finch",
+      "language": "Scala",
+      "platform": "Netty",
+      "webserver": "None",
+      "os": "Linux",
+      "display_name": "finch",
+      "notes": ""
+    }
+  }]
+}

+ 16 - 0
frameworks/Scala/finch/build.sbt

@@ -0,0 +1,16 @@
+name := """techempower-benchmarks-finch"""
+
+version := "0.0.1-SNAPSHOT"
+
+scalaVersion := "2.11.6"
+
+com.github.retronym.SbtOneJar.oneJarSettings
+
+mainClass in (Compile, run) := Some("WebServer")
+
+libraryDependencies ++= Seq(
+  "com.github.finagle" %% "finch-core" % "0.7.0",
+  "com.github.finagle" %% "finch-argonaut" % "0.7.0"
+)
+
+resolvers += Resolver.sonatypeRepo("snapshots")

+ 3 - 0
frameworks/Scala/finch/install.sh

@@ -0,0 +1,3 @@
+#!/bin/bash
+
+fw_depends java8 sbt

+ 4 - 0
frameworks/Scala/finch/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/finch/project/plugins.sbt

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

+ 8 - 0
frameworks/Scala/finch/setup.sh

@@ -0,0 +1,8 @@
+#!/bin/bash
+
+source $IROOT/java8.installed
+export SBT_HOME=${IROOT}/sbt
+
+${SBT_HOME}/bin/sbt 'oneJar'
+
+java -jar target/scala-2.11/*finch*one-jar.jar

+ 34 - 0
frameworks/Scala/finch/src/main/scala/WebServer.scala

@@ -0,0 +1,34 @@
+import java.net.InetSocketAddress
+
+import argonaut._, Argonaut._
+
+import io.finch._
+import io.finch.{Endpoint => _, _}
+
+import io.finch.route._
+import io.finch.route.Endpoint
+import io.finch.response._
+
+import com.twitter.finagle.Service
+import com.twitter.finagle.Httpx
+
+import com.twitter.util.Await
+
+object WebServer extends App {
+
+  val json: Endpoint[HttpRequest, HttpResponse] = {
+    import io.finch.argonaut._
+    Get / "json" /> Ok(Json("message" -> jString("Hello, World!"))).toFuture
+  }
+
+  val plaintext: Endpoint[HttpRequest, HttpResponse] =
+    Get / "plaintext" /> Ok("Hello, World!").toFuture
+
+  val api: Service[HttpRequest, HttpResponse] = plaintext | json
+
+  Await.ready(
+    Httpx.serve(
+      "0.0.0.0:9000", api
+    )
+  )
+}