Browse Source

Merge pull request #1561 from mfirry/master

Scala: Add http4s
Hamilton Turner 10 years ago
parent
commit
4fb50c78a4

+ 1 - 0
.travis.yml

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

+ 3 - 0
frameworks/Scala/http4s/.gitignore

@@ -0,0 +1,3 @@
+target
+projet/target
+.cache

+ 26 - 0
frameworks/Scala/http4s/README.md

@@ -0,0 +1,26 @@
+#http4s Benchmarking Test
+
+### JSON Encoding Test
+
+* [JSON test source](src/main/scala/code/lib/WebServer.scala)
+
+## Infrastructure Software Versions
+The tests were run with:
+
+* [Java Oracle 1.8.0_25](http://www.oracle.com/technetwork/java/javase)
+* [http4s 0.6.2](http://http4s.org/)
+* [blaze 0.6.2](https://github.com/http4s/blaze/)
+
+## Test URLs
+### JSON Encoding Test
+
+http://localhost:8080/json
+
+### Plaintext Test
+
+http://localhost:8080/plaintext
+
+## How to run
+sbt 'oneJar'
+
+java -jar target/scala-2.11/http4s_2.11-1.0-SNAPSHOT-one-jar.jar

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

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

+ 17 - 0
frameworks/Scala/http4s/build.sbt

@@ -0,0 +1,17 @@
+name := "http4s"
+
+version := "1.0-SNAPSHOT"
+
+scalaVersion := "2.11.6"
+
+com.github.retronym.SbtOneJar.oneJarSettings
+
+libraryDependencies ++= Seq(
+	"org.http4s" %% "http4s-blazeserver" % "0.6.2",
+	"org.http4s" %% "http4s-dsl" % "0.6.2",
+	"org.http4s" %% "http4s-argonaut" % "0.6.2"
+)
+
+mainClass in oneJar := Some("WebServer")
+
+resolvers += "Bintray" at "http://dl.bintray.com/pchiusano/maven/"

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

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

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

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

+ 9 - 0
frameworks/Scala/http4s/setup.sh

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

+ 29 - 0
frameworks/Scala/http4s/src/main/scala/WebServer.scala

@@ -0,0 +1,29 @@
+import org.http4s._
+import org.http4s.server._
+import org.http4s.dsl._
+import org.http4s.argonaut._
+import org.http4s.server.blaze.BlazeBuilder
+import headers._
+
+import _root_.argonaut._, Argonaut._
+
+object WebServer extends App {
+
+  val service = HttpService {
+    case GET -> Root / "json" =>
+      val dateHeader = Date(DateTime(4))
+      Ok(Json("message" -> jString("Hello, World!")).asJson)
+        .withHeaders(dateHeader)
+        .withContentType(Some(`Content-Type`(MediaType.`application/json`)))
+    case GET -> Root / "plaintext" =>
+      val dateHeader = Date(DateTime(4))
+      Ok("Hello, World!")
+        .withHeaders(dateHeader)
+        .withContentType(Some(`Content-Type`(MediaType.`text/plain`)))
+  }
+
+  BlazeBuilder.bindHttp(8080)
+    .mountService(service, "/")
+    .run
+    .awaitShutdown()
+}