Sfoglia il codice sorgente

Misc cleanup and upgrades in Scala frameworks (#3473)

* Misc cleanup and upgrades in Scala frameworks

- Upgrade to Scala 2.12.5
- Upgrade to sbt 1.1.2
- Use sbt assembly plugin instead of onejar plugin, since the onejar
  plugin was preventing upgrades to sbt 1.x
- Delete scruffy, whose github project page no longer exists, it was
  probably abandoned
- Explicitly set working directory in scala framework dockerfiles rather
  than inheriting it from the sbt dockerfiles (which were inheriting it
  from java dockerfiles, so all the work was being done in /java?)

* More scala cleanup

- Try to fix travis build errors from the previous commit.
- The main Scala website says to use Java 8, so don't bother having an
  alternative sbt(-not-java8) dockerfile.
- Remove spray because according to its GitHub project page, it was
  abandoned and people should use akka instead.
- Remove s-server because it doesn't have a release that's compatible
  with the newest version of Scala, and the framework hasn't been worked
  on in about a year, and it probably never had many users.  We could
  leave it there working with an old Scala version, but what would happen
  is we'd run into this again down the road next time we want to get
  Scala or Java updated.  The upside to including this framework isn't
  enough to justify that use of time.

* Attempt to fix play2-scala travis build issues
Michael Hixson 7 anni fa
parent
commit
d67843d0ae
99 ha cambiato i file con 210 aggiunte e 731 eliminazioni
  1. 2 5
      .travis.yml
  2. 1 1
      frameworks/Java/play2-java/play2-java-ebean-hikaricp-netty.dockerfile
  3. 1 1
      frameworks/Java/play2-java/play2-java-ebean-hikaricp.dockerfile
  4. 1 1
      frameworks/Java/play2-java/play2-java-ebean-hikaricp/build.sbt
  5. 1 1
      frameworks/Java/play2-java/play2-java-ebean-hikaricp/project/build.properties
  6. 1 1
      frameworks/Java/play2-java/play2-java-jooq-hikaricp-netty.dockerfile
  7. 1 1
      frameworks/Java/play2-java/play2-java-jooq-hikaricp.dockerfile
  8. 1 1
      frameworks/Java/play2-java/play2-java-jooq-hikaricp/build.sbt
  9. 1 1
      frameworks/Java/play2-java/play2-java-jooq-hikaricp/project/build.properties
  10. 1 1
      frameworks/Java/play2-java/play2-java-jpa-hikaricp-netty.dockerfile
  11. 1 1
      frameworks/Java/play2-java/play2-java-jpa-hikaricp.dockerfile
  12. 1 1
      frameworks/Java/play2-java/play2-java-jpa-hikaricp/build.sbt
  13. 1 1
      frameworks/Java/play2-java/play2-java-jpa-hikaricp/project/build.properties
  14. 1 1
      frameworks/Java/play2-java/play2-java-netty.dockerfile
  15. 1 1
      frameworks/Java/play2-java/play2-java.dockerfile
  16. 1 1
      frameworks/Java/play2-java/play2-java/build.sbt
  17. 1 1
      frameworks/Java/play2-java/play2-java/project/build.properties
  18. 2 1
      frameworks/Scala/akka-http/akka-http.dockerfile
  19. 1 1
      frameworks/Scala/akka-http/build.sbt
  20. 1 1
      frameworks/Scala/akka-http/project/build.properties
  21. 4 3
      frameworks/Scala/blaze/blaze.dockerfile
  22. 2 7
      frameworks/Scala/blaze/build.sbt
  23. 1 1
      frameworks/Scala/blaze/project/build.properties
  24. 1 2
      frameworks/Scala/blaze/project/plugins.sbt
  25. 4 8
      frameworks/Scala/colossus/build.sbt
  26. 15 3
      frameworks/Scala/colossus/colossus.dockerfile
  27. 1 1
      frameworks/Scala/colossus/project/build.properties
  28. 1 1
      frameworks/Scala/colossus/project/plugins.sbt
  29. 8 7
      frameworks/Scala/colossus/src/main/scala/example/Main.scala
  30. 7 4
      frameworks/Scala/finagle/build.sbt
  31. 11 3
      frameworks/Scala/finagle/finagle.dockerfile
  32. 1 1
      frameworks/Scala/finagle/project/build.properties
  33. 1 1
      frameworks/Scala/finagle/project/plugins.sbt
  34. 1 1
      frameworks/Scala/finatra/build.sbt
  35. 14 3
      frameworks/Scala/finatra/finatra.dockerfile
  36. 1 1
      frameworks/Scala/finatra/project/build.properties
  37. 7 4
      frameworks/Scala/finch/build.sbt
  38. 11 3
      frameworks/Scala/finch/finch.dockerfile
  39. 1 1
      frameworks/Scala/finch/project/build.properties
  40. 1 1
      frameworks/Scala/finch/project/plugins.sbt
  41. 7 6
      frameworks/Scala/fintrospect/build.sbt
  42. 11 3
      frameworks/Scala/fintrospect/fintrospect.dockerfile
  43. 1 1
      frameworks/Scala/fintrospect/project/build.properties
  44. 1 1
      frameworks/Scala/fintrospect/project/plugins.sbt
  45. 6 11
      frameworks/Scala/http4s/build.sbt
  46. 4 3
      frameworks/Scala/http4s/http4s.dockerfile
  47. 1 1
      frameworks/Scala/http4s/project/build.properties
  48. 2 2
      frameworks/Scala/http4s/project/plugins.sbt
  49. 4 2
      frameworks/Scala/play2-scala/play2-scala-anorm-netty.dockerfile
  50. 4 2
      frameworks/Scala/play2-scala/play2-scala-anorm.dockerfile
  51. 1 2
      frameworks/Scala/play2-scala/play2-scala-anorm/build.sbt
  52. 1 1
      frameworks/Scala/play2-scala/play2-scala-anorm/project/build.properties
  53. 12 2
      frameworks/Scala/play2-scala/play2-scala-netty.dockerfile
  54. 4 2
      frameworks/Scala/play2-scala/play2-scala-reactivemongo-netty.dockerfile
  55. 4 2
      frameworks/Scala/play2-scala/play2-scala-reactivemongo.dockerfile
  56. 1 1
      frameworks/Scala/play2-scala/play2-scala-reactivemongo/build.sbt
  57. 1 1
      frameworks/Scala/play2-scala/play2-scala-reactivemongo/project/build.properties
  58. 4 2
      frameworks/Scala/play2-scala/play2-scala-slick-netty.dockerfile
  59. 4 2
      frameworks/Scala/play2-scala/play2-scala-slick.dockerfile
  60. 1 1
      frameworks/Scala/play2-scala/play2-scala-slick/build.sbt
  61. 1 1
      frameworks/Scala/play2-scala/play2-scala-slick/project/build.properties
  62. 12 2
      frameworks/Scala/play2-scala/play2-scala.dockerfile
  63. 1 1
      frameworks/Scala/play2-scala/play2-scala/build.sbt
  64. 1 1
      frameworks/Scala/play2-scala/play2-scala/project/build.properties
  65. 0 3
      frameworks/Scala/s-server/README.md
  66. 0 23
      frameworks/Scala/s-server/benchmark_config.json
  67. 0 23
      frameworks/Scala/s-server/build.sbt
  68. 0 1
      frameworks/Scala/s-server/project/.gitignore
  69. 0 1
      frameworks/Scala/s-server/project/build.properties
  70. 0 9
      frameworks/Scala/s-server/project/plugins.sbt
  71. 0 7
      frameworks/Scala/s-server/s-server.dockerfile
  72. 0 1
      frameworks/Scala/s-server/source_code
  73. 0 0
      frameworks/Scala/s-server/src/main/resources/application.conf
  74. 0 15
      frameworks/Scala/s-server/src/main/resources/logback.xml
  75. 0 125
      frameworks/Scala/s-server/src/main/scala/woshilaiceshide/sserver/tfb/Server.scala
  76. 0 34
      frameworks/Scala/scruffy/README.md
  77. 0 24
      frameworks/Scala/scruffy/benchmark_config.json
  78. 0 14
      frameworks/Scala/scruffy/build.sbt
  79. 0 1
      frameworks/Scala/scruffy/project/build.properties
  80. 0 1
      frameworks/Scala/scruffy/project/plugins.sbt
  81. 0 7
      frameworks/Scala/scruffy/scruffy.dockerfile
  82. 0 4
      frameworks/Scala/scruffy/source_code
  83. 0 31
      frameworks/Scala/scruffy/src/main/scala/scruffy/examples/Main.scala
  84. 0 15
      frameworks/Scala/scruffy/src/main/scala/scruffy/examples/Test1Endpoint.scala
  85. 0 31
      frameworks/Scala/scruffy/src/main/scala/scruffy/examples/Test2Endpoint.scala
  86. 0 12
      frameworks/Scala/scruffy/src/main/scala/scruffy/examples/Test6Endpoint.scala
  87. 0 39
      frameworks/Scala/scruffy/src/test/scala/BenchmarkVerify.scala
  88. 0 23
      frameworks/Scala/spray/benchmark_config.json
  89. 0 19
      frameworks/Scala/spray/build.sbt
  90. 0 1
      frameworks/Scala/spray/project/build.properties
  91. 0 1
      frameworks/Scala/spray/project/plugins.sbt
  92. 0 3
      frameworks/Scala/spray/source_code
  93. 0 7
      frameworks/Scala/spray/spray.dockerfile
  94. 0 28
      frameworks/Scala/spray/src/main/resources/application.conf
  95. 0 15
      frameworks/Scala/spray/src/main/resources/logback.xml
  96. 0 56
      frameworks/Scala/spray/src/main/scala/spray/examples/BenchmarkService.scala
  97. 0 17
      frameworks/Scala/spray/src/main/scala/spray/examples/Main.scala
  98. 0 4
      toolset/setup/docker/systools/sbt-java8.dockerfile
  99. 6 3
      toolset/setup/docker/systools/sbt.dockerfile

+ 2 - 5
.travis.yml

@@ -187,13 +187,10 @@ env:
      - "TESTDIR=Scala/colossus"
      - "TESTDIR=Scala/finagle"
      - "TESTDIR=Scala/finatra"
+     - "TESTDIR=Scala/finch"
      - "TESTDIR=Scala/fintrospect"
-     - "TESTDIR=Scala/play2-scala"
-     - "TESTDIR=Scala/scruffy"
-     - "TESTDIR=Scala/spray"
-     - "TESTDIR=Scala/s-server"
      - "TESTDIR=Scala/http4s"
-     - "TESTDIR=Scala/finch"
+     - "TESTDIR=Scala/play2-scala"
      - "TESTDIR=Swift/vapor"
      - "TESTDIR=Ur/urweb"
      - "TESTDIR=Vala/vsgi"

+ 1 - 1
frameworks/Java/play2-java/play2-java-ebean-hikaricp-netty.dockerfile

@@ -1,4 +1,4 @@
-FROM tfb/sbt-java8:latest
+FROM tfb/sbt:latest
 ADD ./play2-java-ebean-hikaricp /play2-java-ebean-hikaricp
 WORKDIR /play2-java-ebean-hikaricp
 RUN sbt stage

+ 1 - 1
frameworks/Java/play2-java/play2-java-ebean-hikaricp.dockerfile

@@ -1,4 +1,4 @@
-FROM tfb/sbt-java8:latest
+FROM tfb/sbt:latest
 ADD ./play2-java-ebean-hikaricp /play2-java-ebean-hikaricp
 WORKDIR /play2-java-ebean-hikaricp
 RUN sbt stage

+ 1 - 1
frameworks/Java/play2-java/play2-java-ebean-hikaricp/build.sbt

@@ -4,7 +4,7 @@ version := "1.0-SNAPSHOT"
 
 lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean, PlayNettyServer)
 
-scalaVersion := "2.12.4"
+scalaVersion := "2.12.5"
 
 libraryDependencies ++= Seq(
   guice,

+ 1 - 1
frameworks/Java/play2-java/play2-java-ebean-hikaricp/project/build.properties

@@ -1 +1 @@
-sbt.version=1.0.4
+sbt.version=1.1.2

+ 1 - 1
frameworks/Java/play2-java/play2-java-jooq-hikaricp-netty.dockerfile

@@ -1,4 +1,4 @@
-FROM tfb/sbt-java8:latest
+FROM tfb/sbt:latest
 ADD ./play2-java-jooq-hikaricp /play2-java-jooq-hikaricp
 WORKDIR /play2-java-jooq-hikaricp
 RUN sbt stage

+ 1 - 1
frameworks/Java/play2-java/play2-java-jooq-hikaricp.dockerfile

@@ -1,4 +1,4 @@
-FROM tfb/sbt-java8:latest
+FROM tfb/sbt:latest
 ADD ./play2-java-jooq-hikaricp /play2-java-jooq-hikaricp
 WORKDIR /play2-java-jooq-hikaricp
 RUN sbt stage

+ 1 - 1
frameworks/Java/play2-java/play2-java-jooq-hikaricp/build.sbt

@@ -4,7 +4,7 @@ version := "1.0-SNAPSHOT"
 
 lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayNettyServer)
 
-scalaVersion := "2.12.4"
+scalaVersion := "2.12.5"
 
 val jOOQVersion = "3.10.3"
 

+ 1 - 1
frameworks/Java/play2-java/play2-java-jooq-hikaricp/project/build.properties

@@ -1 +1 @@
-sbt.version=1.0.4
+sbt.version=1.1.2

+ 1 - 1
frameworks/Java/play2-java/play2-java-jpa-hikaricp-netty.dockerfile

@@ -1,4 +1,4 @@
-FROM tfb/sbt-java8:latest
+FROM tfb/sbt:latest
 ADD ./play2-java-jpa-hikaricp /play2-java-jpa-hikaricp
 WORKDIR /play2-java-jpa-hikaricp
 RUN sbt stage

+ 1 - 1
frameworks/Java/play2-java/play2-java-jpa-hikaricp.dockerfile

@@ -1,4 +1,4 @@
-FROM tfb/sbt-java8:latest
+FROM tfb/sbt:latest
 ADD ./play2-java-jpa-hikaricp /play2-java-jpa-hikaricp
 WORKDIR /play2-java-jpa-hikaricp
 RUN sbt stage

+ 1 - 1
frameworks/Java/play2-java/play2-java-jpa-hikaricp/build.sbt

@@ -4,7 +4,7 @@ version := "1.0-SNAPSHOT"
 
 lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayNettyServer)
 
-scalaVersion := "2.12.4"
+scalaVersion := "2.12.5"
 
 libraryDependencies ++= Seq(
   guice,

+ 1 - 1
frameworks/Java/play2-java/play2-java-jpa-hikaricp/project/build.properties

@@ -1 +1 @@
-sbt.version=1.0.4
+sbt.version=1.1.2

+ 1 - 1
frameworks/Java/play2-java/play2-java-netty.dockerfile

@@ -1,4 +1,4 @@
-FROM tfb/sbt-java8:latest
+FROM tfb/sbt:latest
 ADD ./play2-java /play2-java
 WORKDIR /play2-java
 RUN sbt stage

+ 1 - 1
frameworks/Java/play2-java/play2-java.dockerfile

@@ -1,4 +1,4 @@
-FROM tfb/sbt-java8:latest
+FROM tfb/sbt:latest
 ADD ./play2-java /play2-java
 WORKDIR /play2-java
 RUN sbt stage

+ 1 - 1
frameworks/Java/play2-java/play2-java/build.sbt

@@ -4,6 +4,6 @@ version := "1.0-SNAPSHOT"
 
 lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayNettyServer)
 
-scalaVersion := "2.12.4"
+scalaVersion := "2.12.5"
 
 libraryDependencies += guice

+ 1 - 1
frameworks/Java/play2-java/play2-java/project/build.properties

@@ -1 +1 @@
-sbt.version=1.0.4
+sbt.version=1.1.2

+ 2 - 1
frameworks/Scala/akka-http/akka-http.dockerfile

@@ -1,6 +1,7 @@
 FROM tfb/sbt:latest
 
-COPY ./ ./
+ADD ./ /akka-http
+WORKDIR /akka-http
 
 RUN sbt -batch 'universal:stage'
 

+ 1 - 1
frameworks/Scala/akka-http/build.sbt

@@ -9,7 +9,7 @@ name := "akka-http-benchmark"
 
 version := "0.0.1-SNAPSHOT"
 
-scalaVersion := "2.12.4"
+scalaVersion := "2.12.5"
 
 resolvers += "Akka Snapshot Repository" at "http://repo.akka.io/snapshots/"
 

+ 1 - 1
frameworks/Scala/akka-http/project/build.properties

@@ -1 +1 @@
-sbt.version=1.0.2
+sbt.version=1.1.2

+ 4 - 3
frameworks/Scala/blaze/blaze.dockerfile

@@ -1,7 +1,8 @@
 FROM tfb/sbt:latest
 
-COPY ./ ./
+ADD ./ /blaze
+WORKDIR /blaze
 
-RUN sbt 'oneJar' -batch
+RUN sbt assembly -batch
 
-CMD java -jar target/scala-2.11/blaze*one-jar.jar
+CMD java -jar target/scala-2.12/blaze-assembly-1.0.jar

+ 2 - 7
frameworks/Scala/blaze/build.sbt

@@ -1,10 +1,8 @@
 name := "blaze"
 
-version := "1.0-SNAPSHOT"
+version := "1.0"
 
-scalaVersion := "2.11.8"
-
-com.github.retronym.SbtOneJar.oneJarSettings
+scalaVersion := "2.12.5"
 
 val blazeVersion = "0.13.0"
 
@@ -12,6 +10,3 @@ libraryDependencies ++= Seq(
 	"org.http4s" %% "blaze-http" % blazeVersion,
 	"com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.8.4"
 )
-
-mainClass in oneJar := Some("blaze.techempower.benchmark.Main")
-

+ 1 - 1
frameworks/Scala/blaze/project/build.properties

@@ -1 +1 @@
-sbt.version=0.13.16
+sbt.version=1.1.2

+ 1 - 2
frameworks/Scala/blaze/project/plugins.sbt

@@ -1,2 +1 @@
-addSbtPlugin("org.scala-sbt.plugins" % "sbt-onejar" % "0.8")
-
+addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.6")

+ 4 - 8
frameworks/Scala/colossus/build.sbt

@@ -1,14 +1,10 @@
 name := """colossus-example"""
 
-version := "0.4.0"
+version := "1.0"
 
-scalaVersion := "2.12.4"
-
-com.github.retronym.SbtOneJar.oneJarSettings
-
-mainClass in oneJar := Some("example.Main")
+scalaVersion := "2.12.5"
 
 libraryDependencies ++= Seq(
-  "com.tumblr" %% "colossus" % "0.11.0-M4",
-  "com.github.plokhotnyuk.jsoniter-scala" %% "macros" % "0.3.4"
+  "com.tumblr" %% "colossus" % "0.11.0",
+  "com.github.plokhotnyuk.jsoniter-scala" %% "macros" % "0.21.6"
 )

+ 15 - 3
frameworks/Scala/colossus/colossus.dockerfile

@@ -1,7 +1,19 @@
 FROM tfb/sbt:latest
 
-COPY ./ ./
+ADD ./ /colossus
+WORKDIR /colossus
 
-RUN sbt 'oneJar' -batch
+RUN sbt assembly -batch
 
-CMD java -server -Xms1g -Xmx1g -XX:NewSize=512m -XX:MaxNewSize=512m -XX:+UseParallelGC -XX:+AggressiveOpts -XX:+UseNUMA -XX:-UseBiasedLocking -XX:+AlwaysPreTouch -jar target/scala-2.12/colossus*one-jar.jar
+CMD java \
+    -server \
+    -Xms1g \
+    -Xmx1g \
+    -XX:NewSize=512m \
+    -XX:MaxNewSize=512m \
+    -XX:+UseParallelGC \
+    -XX:+AggressiveOpts \
+    -XX:+UseNUMA \
+    -XX:-UseBiasedLocking \
+    -XX:+AlwaysPreTouch \
+    -jar target/scala-2.12/colossus-example-assembly-1.0.jar

+ 1 - 1
frameworks/Scala/colossus/project/build.properties

@@ -1 +1 @@
-sbt.version=0.13.16
+sbt.version=1.1.2

+ 1 - 1
frameworks/Scala/colossus/project/plugins.sbt

@@ -1 +1 @@
-addSbtPlugin("org.scala-sbt.plugins" % "sbt-onejar" % "0.8")
+addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.6")

+ 8 - 7
frameworks/Scala/colossus/src/main/scala/example/Main.scala

@@ -8,7 +8,6 @@ import colossus.service.Callback.Implicits._
 import colossus.service.GenRequestHandler.PartialHandler
 import colossus.util.DataSize
 import com.github.plokhotnyuk.jsoniter_scala.core._
-import com.github.plokhotnyuk.jsoniter_scala.macros.JsonCodecMaker._
 import com.github.plokhotnyuk.jsoniter_scala.macros._
 
 import scala.concurrent.duration.Duration
@@ -16,16 +15,12 @@ import scala.concurrent.duration.Duration
 case class Message(message: String)
 
 object Main extends App {
-  def toHttpBodyEncoder[T](codec: JsonCodec[T]): HttpBodyEncoder[T] = new HttpBodyEncoder[T] {
-    override def encode(data: T): HttpBody = new HttpBody(JsonWriter.write(codec, data))
-
-    override def contentType: String = "application/json"
-  }
 
   val serverConfig = ServerSettings(
     port = 9007,
     maxConnections = 16384,
     tcpBacklogSize = Some(1024))
+
   val serviceConfig = ServiceConfig(
     logErrors = false,
     requestMetrics = false,
@@ -35,7 +30,13 @@ object Main extends App {
 
   implicit val actorSystem: ActorSystem = ActorSystem()
   implicit val ioSystem: IOSystem = IOSystem()
-  implicit val messageEncoder: HttpBodyEncoder[Message] = toHttpBodyEncoder(make[Message](CodecMakerConfig()))
+
+  implicit val codec: JsonValueCodec[Message] = JsonCodecMaker.make[Message](CodecMakerConfig())
+
+  implicit val messageEncoder: HttpBodyEncoder[Message] = new HttpBodyEncoder[Message] {
+    override def encode(data: Message): HttpBody = new HttpBody(writeToArray(data))
+    override def contentType: String = "application/json"
+  }
 
   HttpServer.start("Colossus", serverConfig)(initContext => new Initializer(initContext) {
     override def onConnect: RequestHandlerFactory = serverContext => new RequestHandler(serverContext, serviceConfig) {

+ 7 - 4
frameworks/Scala/finagle/build.sbt

@@ -1,12 +1,15 @@
 name := "finagle"
 
-scalaVersion := "2.11.12"
+scalaVersion := "2.12.5"
 
-version := "18.3.0"
-
-com.github.retronym.SbtOneJar.oneJarSettings
+version := "1.0"
 
 libraryDependencies ++= Seq(
   "com.twitter" %% "finagle-http" % "18.3.0",
   "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.8.4"
 )
+
+assemblyMergeStrategy in assembly := {
+ case PathList("META-INF", xs @ _*) => MergeStrategy.discard
+ case x => MergeStrategy.first
+}

+ 11 - 3
frameworks/Scala/finagle/finagle.dockerfile

@@ -1,7 +1,15 @@
 FROM tfb/sbt:latest
 
-COPY ./ ./
+ADD ./ /finagle
+WORKDIR /finagle
 
-RUN sbt 'oneJar' -batch
+RUN sbt assembly -batch
 
-CMD java -server -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts -Dio.netty.recycler.maxCapacityPerThread=0 -Dio.netty.leakDetection.level=disabled -jar target/scala-2.11/*finagle*one-jar.jar
+CMD java \
+    -server \
+    -XX:+UseNUMA \
+    -XX:+UseParallelGC \
+    -XX:+AggressiveOpts \
+    -Dio.netty.recycler.maxCapacityPerThread=0 \
+    -Dio.netty.leakDetection.level=disabled \
+    -jar target/scala-2.12/finagle-assembly-1.0.jar

+ 1 - 1
frameworks/Scala/finagle/project/build.properties

@@ -1 +1 @@
-sbt.version=0.13.16
+sbt.version=1.1.2

+ 1 - 1
frameworks/Scala/finagle/project/plugins.sbt

@@ -1 +1 @@
-addSbtPlugin("org.scala-sbt.plugins" % "sbt-onejar" % "0.8")
+addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.6")

+ 1 - 1
frameworks/Scala/finatra/build.sbt

@@ -2,7 +2,7 @@ name := "techempower-benchmarks-finatra"
 organization := "com.twitter"
 version := "18.3.0"
 
-scalaVersion := "2.12.4"
+scalaVersion := "2.12.5"
 
 resolvers ++= Seq(
   Resolver.sonatypeRepo("releases")

+ 14 - 3
frameworks/Scala/finatra/finatra.dockerfile

@@ -1,7 +1,18 @@
-FROM tfb/sbt-java8:latest
+FROM tfb/sbt:latest
 
-COPY ./ ./
+ADD ./ /finatra
+WORKDIR /finatra
 
 RUN sbt clean assembly -batch
 
-CMD java -Dio.netty.recycler.maxCapacityPerThread=0 -Dio.netty.leakDetection.level=disabled -Dcom.twitter.util.events.sinkEnabled=false -server -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts -jar target/scala-2.12/finatra-benchmark.jar -log.level=ERROR -http.response.charset.enabled=false
+CMD java \
+    -Dio.netty.recycler.maxCapacityPerThread=0 \
+    -Dio.netty.leakDetection.level=disabled \
+    -Dcom.twitter.util.events.sinkEnabled=false \
+    -server \
+    -XX:+UseNUMA \
+    -XX:+UseParallelGC \
+    -XX:+AggressiveOpts \
+    -jar target/scala-2.12/finatra-benchmark.jar \
+    -log.level=ERROR \
+    -http.response.charset.enabled=false

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

@@ -1 +1 @@
-sbt.version=1.0.4
+sbt.version=1.1.2

+ 7 - 4
frameworks/Scala/finch/build.sbt

@@ -1,12 +1,15 @@
 name := """techempower-benchmarks-finch"""
 
-version := "0.18.0"
+version := "1.0"
 
-scalaVersion := "2.11.12"
-
-com.github.retronym.SbtOneJar.oneJarSettings
+scalaVersion := "2.12.5"
 
 libraryDependencies ++= Seq(
   "com.github.finagle" %% "finch-core" % "0.18.0",
   "com.github.finagle" %% "finch-circe" % "0.18.0"
 )
+
+assemblyMergeStrategy in assembly := {
+ case PathList("META-INF", xs @ _*) => MergeStrategy.discard
+ case x => MergeStrategy.first
+}

+ 11 - 3
frameworks/Scala/finch/finch.dockerfile

@@ -1,7 +1,15 @@
 FROM tfb/sbt:latest
 
-COPY ./ ./
+ADD ./ /finch
+WORKDIR /finch
 
-RUN sbt 'oneJar' -batch
+RUN sbt assembly -batch
 
-CMD java -server -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts -Dio.netty.recycler.maxCapacityPerThread=0 -Dio.netty.leakDetection.level=disabled -jar target/scala-2.11/*finch*one-jar.jar
+CMD java \
+    -server \
+    -XX:+UseNUMA \
+    -XX:+UseParallelGC \
+    -XX:+AggressiveOpts \
+    -Dio.netty.recycler.maxCapacityPerThread=0 \
+    -Dio.netty.leakDetection.level=disabled \
+    -jar target/scala-2.12/techempower-benchmarks-finch-assembly-1.0.jar

+ 1 - 1
frameworks/Scala/finch/project/build.properties

@@ -1 +1 @@
-sbt.version=0.13.16
+sbt.version=1.1.2

+ 1 - 1
frameworks/Scala/finch/project/plugins.sbt

@@ -1 +1 @@
-addSbtPlugin("org.scala-sbt.plugins" % "sbt-onejar" % "0.8")
+addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.6")

+ 7 - 6
frameworks/Scala/fintrospect/build.sbt

@@ -1,8 +1,8 @@
 name := """techempower-benchmarks-fintrospect"""
 
-version := "0.3.0"
+version := "1.0"
 
-scalaVersion := "2.12.1"
+scalaVersion := "2.12.5"
 
 scalacOptions += "-deprecation"
 
@@ -12,13 +12,14 @@ resolvers += "JCenter" at "https://jcenter.bintray.com"
 
 resolvers += Resolver.sonatypeRepo("snapshots")
 
-com.github.retronym.SbtOneJar.oneJarSettings
-
-mainClass in(Compile, run) := Some("FintrospectBenchmarkServer")
-
 libraryDependencies ++= Seq(
   "io.fintrospect" %% "fintrospect-core" % "14.15.0",
   "io.fintrospect" %% "fintrospect-jackson" % "14.15.0",
   "io.fintrospect" %% "fintrospect-mustache" % "14.15.0",
   "com.twitter" %% "finagle-mysql" % "6.43.0"
 )
+
+assemblyMergeStrategy in assembly := {
+ case PathList("META-INF", xs @ _*) => MergeStrategy.discard
+ case x => MergeStrategy.first
+}

+ 11 - 3
frameworks/Scala/fintrospect/fintrospect.dockerfile

@@ -1,7 +1,15 @@
 FROM tfb/sbt:latest
 
-COPY ./ ./
+ADD ./ /fintrospect
+WORKDIR /fintrospect
 
-RUN sbt 'oneJar' -batch
+RUN sbt assembly -batch
 
-CMD java -Dcom.twitter.finagle.toggle.flag.overrides=com.twitter.http.UseNetty4=1.0 -server -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts -XX:+AlwaysPreTouch -jar target/scala-2.12/*fintrospect*one-jar.jar
+CMD java \
+    -Dcom.twitter.finagle.toggle.flag.overrides=com.twitter.http.UseNetty4=1.0 \
+    -server \
+    -XX:+UseNUMA \
+    -XX:+UseParallelGC \
+    -XX:+AggressiveOpts \
+    -XX:+AlwaysPreTouch \
+    -jar target/scala-2.12/techempower-benchmarks-fintrospect-assembly-1.0.jar

+ 1 - 1
frameworks/Scala/fintrospect/project/build.properties

@@ -1 +1 @@
-sbt.version=0.13.16
+sbt.version=1.1.2

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

@@ -1 +1 @@
-addSbtPlugin("org.scala-sbt.plugins" % "sbt-onejar" % "0.8")
+addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.6")

+ 6 - 11
frameworks/Scala/http4s/build.sbt

@@ -1,17 +1,15 @@
 name := "http4s"
 
-version := "1.0-SNAPSHOT"
+version := "1.0"
 
-scalaVersion := "2.12.2"
+scalaVersion := "2.12.5"
 
 enablePlugins(SbtTwirl)
 
 TwirlKeys.templateImports += "http4s.techempower.benchmark._"
 
-com.github.retronym.SbtOneJar.oneJarSettings
-
 val http4sVersion = "0.15.9a"
-val circeVersion = "0.7.1"
+val circeVersion = "0.9.3"
 val doobieVersion = "0.4.1"
 
 libraryDependencies ++= Seq(
@@ -24,10 +22,7 @@ libraryDependencies ++= Seq(
 	"io.circe" %% "circe-parser" % circeVersion,
 	"org.tpolecat" %% "doobie-core" % doobieVersion,
 	"org.tpolecat" %% "doobie-hikari" % doobieVersion,
-	"com.zaxxer" %  "HikariCP" % "2.6.1",
-	"org.postgresql" % "postgresql" % "42.1.4",
-	"ch.qos.logback" % "logback-classic" % "1.2.2"
+	"com.zaxxer" %  "HikariCP" % "2.7.8",
+	"org.postgresql" % "postgresql" % "42.2.2",
+	"ch.qos.logback" % "logback-classic" % "1.2.3"
 )
-
-mainClass in oneJar := Some("http4s.techempower.benchmark.WebServer")
-

+ 4 - 3
frameworks/Scala/http4s/http4s.dockerfile

@@ -1,7 +1,8 @@
 FROM tfb/sbt:latest
 
-COPY ./ ./
+ADD ./ /http4s
+WORKDIR /http4s
 
-RUN sbt 'oneJar' -batch
+RUN sbt assembly -batch
 
-CMD java -jar target/scala-2.12/http4s*one-jar.jar "TFB-database"
+CMD java -jar target/scala-2.12/http4s-assembly-1.0.jar "TFB-database"

+ 1 - 1
frameworks/Scala/http4s/project/build.properties

@@ -1 +1 @@
-sbt.version=0.13.16
+sbt.version=1.1.2

+ 2 - 2
frameworks/Scala/http4s/project/plugins.sbt

@@ -1,3 +1,3 @@
-addSbtPlugin("org.scala-sbt.plugins" % "sbt-onejar" % "0.8")
+addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.6")
 
-addSbtPlugin("com.typesafe.sbt" % "sbt-twirl" % "1.3.0")
+addSbtPlugin("com.typesafe.sbt" % "sbt-twirl" % "1.3.13")

+ 4 - 2
frameworks/Scala/play2-scala/play2-scala-anorm-netty.dockerfile

@@ -1,7 +1,9 @@
 FROM tfb/sbt:latest
 
-COPY ./play2-scala-anorm ./
+ADD ./play2-scala-anorm /play_app
+WORKDIR /play_app
 
 RUN sbt stage
 
-CMD target/universal/stage/bin/play2-scala-anorm -Dplay.server.provider=play.core.server.NettyServerProvider
+CMD target/universal/stage/bin/play2-scala-anorm \
+    -Dplay.server.provider=play.core.server.NettyServerProvider

+ 4 - 2
frameworks/Scala/play2-scala/play2-scala-anorm.dockerfile

@@ -1,7 +1,9 @@
 FROM tfb/sbt:latest
 
-COPY ./play2-scala-anorm ./
+ADD ./play2-scala-anorm /play_app
+WORKDIR /play_app
 
 RUN sbt stage
 
-CMD target/universal/stage/bin/play2-scala-anorm -Dplay.server.provider=play.core.server.AkkaHttpServerProvider
+CMD target/universal/stage/bin/play2-scala-anorm \
+    -Dplay.server.provider=play.core.server.AkkaHttpServerProvider

+ 1 - 2
frameworks/Scala/play2-scala/play2-scala-anorm/build.sbt

@@ -4,8 +4,7 @@ version := "1.0-SNAPSHOT"
 
 lazy val root = (project in file(".")).enablePlugins(PlayScala, PlayNettyServer)
 
-scalaVersion := "2.12.4"
-
+scalaVersion := "2.12.5"
 
 libraryDependencies ++= Seq(
   guice,

+ 1 - 1
frameworks/Scala/play2-scala/play2-scala-anorm/project/build.properties

@@ -1 +1 @@
-sbt.version=1.0.4
+sbt.version=1.1.2

+ 12 - 2
frameworks/Scala/play2-scala/play2-scala-netty.dockerfile

@@ -1,7 +1,17 @@
 FROM tfb/sbt:latest
 
-COPY ./play2-scala ./
+ADD ./play2-scala /play_app
+WORKDIR /play_app
 
 RUN sbt stage
 
-CMD target/universal/stage/bin/play2-scala -Dplay.server.provider=play.core.server.NettyServerProvider -J-server -J-Xms1g -J-Xmx1g -J-XX:NewSize=512m -J-XX:+UseG1GC -J-XX:MaxGCPauseMillis=30 -J-XX:-UseBiasedLocking -J-XX:+AlwaysPreTouch
+CMD target/universal/stage/bin/play2-scala \
+    -Dplay.server.provider=play.core.server.NettyServerProvider \
+    -J-server \
+    -J-Xms1g \
+    -J-Xmx1g \
+    -J-XX:NewSize=512m \
+    -J-XX:+UseG1GC \
+    -J-XX:MaxGCPauseMillis=30 \
+    -J-XX:-UseBiasedLocking \
+    -J-XX:+AlwaysPreTouch

+ 4 - 2
frameworks/Scala/play2-scala/play2-scala-reactivemongo-netty.dockerfile

@@ -1,7 +1,9 @@
 FROM tfb/sbt:latest
 
-COPY ./play2-scala-reactivemongo ./
+ADD ./play2-scala-reactivemongo /play_app
+WORKDIR /play_app
 
 RUN sbt stage
 
-CMD target/universal/stage/bin/play2-scala-reactivemongo -Dplay.server.provider=play.core.server.NettyServerProvider
+CMD target/universal/stage/bin/play2-scala-reactivemongo \
+    -Dplay.server.provider=play.core.server.NettyServerProvider

+ 4 - 2
frameworks/Scala/play2-scala/play2-scala-reactivemongo.dockerfile

@@ -1,7 +1,9 @@
 FROM tfb/sbt:latest
 
-COPY ./play2-scala-reactivemongo ./
+ADD ./play2-scala-reactivemongo /play_app
+WORKDIR /play_app
 
 RUN sbt stage
 
-CMD target/universal/stage/bin/play2-scala-reactivemongo -Dplay.server.provider=play.core.server.AkkaHttpServerProvider
+CMD target/universal/stage/bin/play2-scala-reactivemongo \
+    -Dplay.server.provider=play.core.server.AkkaHttpServerProvider

+ 1 - 1
frameworks/Scala/play2-scala/play2-scala-reactivemongo/build.sbt

@@ -4,7 +4,7 @@ version := "1.0-SNAPSHOT"
 
 lazy val root = (project in file(".")).enablePlugins(PlayScala, PlayNettyServer)
 
-scalaVersion := "2.12.4"
+scalaVersion := "2.12.5"
 
 libraryDependencies ++= Seq(
   "org.reactivemongo" %% "play2-reactivemongo" % "0.12.7-play26",

+ 1 - 1
frameworks/Scala/play2-scala/play2-scala-reactivemongo/project/build.properties

@@ -1 +1 @@
-sbt.version=1.0.4
+sbt.version=1.1.2

+ 4 - 2
frameworks/Scala/play2-scala/play2-scala-slick-netty.dockerfile

@@ -1,7 +1,9 @@
 FROM tfb/sbt:latest
 
-COPY ./play2-scala-slick ./
+ADD ./play2-scala-slick /play_app
+WORKDIR /play_app
 
 RUN sbt stage
 
-CMD target/universal/stage/bin/play2-scala-slick -Dplay.server.provider=play.core.server.NettyServerProvider
+CMD target/universal/stage/bin/play2-scala-slick \
+    -Dplay.server.provider=play.core.server.NettyServerProvider

+ 4 - 2
frameworks/Scala/play2-scala/play2-scala-slick.dockerfile

@@ -1,7 +1,9 @@
 FROM tfb/sbt:latest
 
-COPY ./play2-scala-slick ./
+ADD ./play2-scala-slick /play_app
+WORKDIR /play_app
 
 RUN sbt stage
 
-CMD target/universal/stage/bin/play2-scala-slick -Dplay.server.provider=play.core.server.AkkaHttpServerProvider
+CMD target/universal/stage/bin/play2-scala-slick \
+    -Dplay.server.provider=play.core.server.AkkaHttpServerProvider

+ 1 - 1
frameworks/Scala/play2-scala/play2-scala-slick/build.sbt

@@ -4,7 +4,7 @@ version := "1.0-SNAPSHOT"
 
 lazy val root = (project in file(".")).enablePlugins(PlayScala, PlayNettyServer)
 
-scalaVersion := "2.12.4"
+scalaVersion := "2.12.5"
 
 libraryDependencies ++= Seq(
   guice,

+ 1 - 1
frameworks/Scala/play2-scala/play2-scala-slick/project/build.properties

@@ -1 +1 @@
-sbt.version=1.0.4
+sbt.version=1.1.2

+ 12 - 2
frameworks/Scala/play2-scala/play2-scala.dockerfile

@@ -1,7 +1,17 @@
 FROM tfb/sbt:latest
 
-COPY ./play2-scala ./
+ADD ./play2-scala /play_app
+WORKDIR /play_app
 
 RUN sbt stage
 
-CMD target/universal/stage/bin/play2-scala -Dplay.server.provider=play.core.server.AkkaHttpServerProvider -J-server -J-Xms1g -J-Xmx1g -J-XX:NewSize=512m -J-XX:+UseG1GC -J-XX:MaxGCPauseMillis=30 -J-XX:-UseBiasedLocking -J-XX:+AlwaysPreTouch
+CMD target/universal/stage/bin/play2-scala \
+    -Dplay.server.provider=play.core.server.AkkaHttpServerProvider \
+    -J-server \
+    -J-Xms1g \
+    -J-Xmx1g \
+    -J-XX:NewSize=512m \
+    -J-XX:+UseG1GC \
+    -J-XX:MaxGCPauseMillis=30 \
+    -J-XX:-UseBiasedLocking \
+    -J-XX:+AlwaysPreTouch

+ 1 - 1
frameworks/Scala/play2-scala/play2-scala/build.sbt

@@ -4,7 +4,7 @@ version := "1.0-SNAPSHOT"
 
 lazy val root = (project in file(".")).enablePlugins(PlayScala, PlayNettyServer)
 
-scalaVersion := "2.12.4"
+scalaVersion := "2.12.5"
 
 libraryDependencies ++= Seq(
   guice,

+ 1 - 1
frameworks/Scala/play2-scala/play2-scala/project/build.properties

@@ -1 +1 @@
-sbt.version=1.0.4
+sbt.version=1.1.2

+ 0 - 3
frameworks/Scala/s-server/README.md

@@ -1,3 +0,0 @@
-# S-server Benchmarking Test
-
-This is the s-server portion of a [benchmarking test suite](../) comparing a variety of web development platforms.

+ 0 - 23
frameworks/Scala/s-server/benchmark_config.json

@@ -1,23 +0,0 @@
-{
-  "framework" : "s-server",
-  "tests" : [{
-    "default" : {
-      "json_url" : "/json",
-      "plaintext_url": "/plaintext",
-      "port": 8080,
-      "approach": "Realistic",
-      "classification": "Platform",
-      "database": "None",
-      "framework": "s-server",
-      "language": "Scala",
-      "orm": "Raw",
-      "platform": "s-server",
-      "webserver": "None",
-      "os": "Linux",
-      "database_os": "Linux",
-      "display_name": "s-server",
-      "notes": "",
-      "versus": "s-server"
-    }
-  }]
-}

+ 0 - 23
frameworks/Scala/s-server/build.sbt

@@ -1,23 +0,0 @@
-name := "s-server-tfb"
-
-organization := "woshilaiceshide"
-
-scalaVersion := "2.11.8"
-
-version := "1.0"
-
-scalacOptions := Seq("-unchecked", "-deprecation","-optimise", "-encoding", "utf8", "-Yno-adapted-args", "-target:jvm-1.8")
-
-javacOptions ++= Seq("-Xlint:deprecation", "-Xlint:unchecked", "-source", "1.8", "-target", "1.8")
-
-enablePlugins(JavaAppPackaging)
-
-resolvers += "Woshilaiceshide Releases" at "http://dl.bintray.com/woshilaiceshide/maven/"
-
-libraryDependencies += "woshilaiceshide" %% "s-server" % "2.2"
-
-//libraryDependencies += "com.fasterxml.jackson.core" % "jackson-core" % "2.7.4"
-
-//libraryDependencies += "com.fasterxml.jackson.module" % "jackson-module-afterburner" % "2.7.4"
-
-libraryDependencies += "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.7.4"

+ 0 - 1
frameworks/Scala/s-server/project/.gitignore

@@ -1 +0,0 @@
-/project/

+ 0 - 1
frameworks/Scala/s-server/project/build.properties

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

+ 0 - 9
frameworks/Scala/s-server/project/plugins.sbt

@@ -1,9 +0,0 @@
-// Comment to get more information during initialization
-logLevel := Level.Warn
-
-addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.8.2")
-
-addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.1.1")
-
-addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "4.0.0")
-

+ 0 - 7
frameworks/Scala/s-server/s-server.dockerfile

@@ -1,7 +0,0 @@
-FROM tfb/sbt:latest
-
-COPY ./ ./
-
-RUN sbt stage
-
-CMD ./target/universal/stage/bin/s-server-tfb -J-XX:+UseBiasedLocking -J-XX:+UseParallelGC -J-XX:+AggressiveOpts

+ 0 - 1
frameworks/Scala/s-server/source_code

@@ -1 +0,0 @@
-./s-server-tfb/src/main/scala/woshilaiceshide/sserver/tfb/Server.scala

+ 0 - 0
frameworks/Scala/s-server/src/main/resources/application.conf


+ 0 - 15
frameworks/Scala/s-server/src/main/resources/logback.xml

@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration>
-
-    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-        <target>System.out</target>
-        <encoder>
-            <pattern>%date{MM/dd HH:mm:ss.SSS} %-5level[%.15thread] %logger{1} - %msg%n</pattern>
-        </encoder>
-    </appender>
-
-    <root level="INFO">
-        <appender-ref ref="CONSOLE"/>
-    </root>
-
-</configuration>

+ 0 - 125
frameworks/Scala/s-server/src/main/scala/woshilaiceshide/sserver/tfb/Server.scala

@@ -1,125 +0,0 @@
-package woshilaiceshide.sserver.tfb
-
-import woshilaiceshide.sserver.http._
-import woshilaiceshide.sserver.nio._
-import spray.http._
-import spray.http.HttpEntity.apply
-import spray.http.StatusCode.int2StatusCode
-
-import com.fasterxml.jackson.databind.ObjectMapper
-import com.fasterxml.jackson.module.scala._
-
-object Server extends App {
-
-  val log = org.slf4j.LoggerFactory.getLogger(Server.getClass);
-
-  val mapper = new ObjectMapper()
-  mapper.registerModule(DefaultScalaModule)
-  final case class Message(message: String)
-
-  import scala.concurrent._
-  val executor = java.util.concurrent.Executors.newSingleThreadExecutor()
-  implicit val ec = ExecutionContext.fromExecutor(executor)
-
-  val handler = new HttpChannelHandler {
-
-    private val ping = new HttpResponse(200, HttpEntity(ContentTypes.`text/plain`, "Hello World"))
-    private def write_ping(channel: HttpChannel) = {
-      channel.writeResponse(ping)
-      ResponseAction.responseNormally
-    }
-    private val path_ping = Uri.Path("/ping")
-
-    private val phelloworld = new HttpResponse(200, HttpEntity(ContentTypes.`text/plain`, "Hello, World!"))
-    private def write_phelloworld(channel: HttpChannel) = {
-      channel.writeResponse(phelloworld)
-      ResponseAction.responseNormally
-    }
-    private val path_plaintext = Uri.Path("/plaintext")
-
-    //JsObject("message" -> JsString("Hello, World!"))
-    private val path_json = Uri.Path("/json")
-    private def jhelloworld = new HttpResponse(200, HttpEntity(ContentTypes.`application/json`, mapper.writeValueAsBytes(Message("Hello, World!"))))
-    private def write_jhelloworld(channel: HttpChannel) = {
-      channel.writeResponse(jhelloworld)
-      ResponseAction.responseNormally
-    }
-
-    private def write_404(channel: HttpChannel) = {
-      channel.writeResponse { new HttpResponse(404) }
-      ResponseAction.responseNormally
-    }
-
-    private def write_400(channel: HttpChannel) = {
-      channel.writeResponse { new HttpResponse(400) }
-      ResponseAction.responseNormally
-    }
-
-    private val ping_asynchronously = new HttpResponse(200, HttpEntity(ContentTypes.`text/plain`, "Hello World Asynchronously"))
-    private def write_ping_asynchronously(channel: HttpChannel) = {
-      //channel.post_to_io_thread { channel.writeResponse(ping_asynchronously) }
-      Future { channel.writeResponse(ping_asynchronously) }
-      ResponseAction.responseNormally
-    }
-
-    def requestReceived(request: HttpRequest, channel: HttpChannel, classifier: RequestClassifier): ResponseAction = request match {
-
-      case HttpRequest(HttpMethods.GET, uri, _, _, _) if uri.path == path_json => write_jhelloworld(channel)
-
-      case HttpRequest(HttpMethods.GET, uri, _, _, _) if uri.path == path_plaintext => write_phelloworld(channel)
-
-      case HttpRequest(HttpMethods.GET, uri, _, _, _) if uri.path == path_ping => write_ping(channel)
-
-      case HttpRequest(HttpMethods.GET, Uri.Path("/ping_asynchronously"), _, _, _) => write_ping_asynchronously(channel)
-
-      case _: HttpRequest => write_404(channel)
-    }
-
-  }
-
-  val http_configurator = new HttpConfigurator(max_request_in_pipeline = 8, use_direct_byte_buffer_for_cached_bytes_rendering = false)
-
-  val factory = new HttpChannelHandlerFactory(handler, http_configurator)
-
-  val listening_channel_configurator: ServerSocketChannelWrapper => Unit = wrapper => {
-    wrapper.setOption[java.lang.Boolean](java.net.StandardSocketOptions.SO_REUSEADDR, true)
-    wrapper.setBacklog(1024 * 8)
-  }
-
-  val accepted_channel_configurator: SocketChannelWrapper => Unit = wrapper => {
-    wrapper.setOption[java.lang.Boolean](java.net.StandardSocketOptions.TCP_NODELAY, true)
-  }
-
-  /*
-  val threadFactory = new java.util.concurrent.ThreadFactory() {
-    def newThread(r: Runnable) = {
-      new Thread(r)
-    }
-  }
-  val mt = new MultipleThreadHandlerFactory(1, threadFactory, Integer.MAX_VALUE, factory)
-  */
-
-  val configurator = XNioConfigurator(count_for_reader_writers = Runtime.getRuntime().availableProcessors() - 1, //2,
-    listening_channel_configurator = listening_channel_configurator,
-    accepted_channel_configurator = accepted_channel_configurator,
-    //buffer_pool_factory = DefaultByteBufferPoolFactory(1, 1, true),
-    //buffer_pool_factory = DefaultByteBufferPoolFactory(512, 64, true),
-    //more i/o, more asynchronously, then make it bigger
-    buffer_pool_factory = DefaultByteBufferPoolFactory(512, 64, true),
-    io_thread_factory = new woshilaiceshide.sserver.http.AuxThreadFactory())
-
-  val port = 8080
-
-  val server = NioSocketServer(
-    "0.0.0.0",
-    port,
-    factory,
-    configurator)
-
-  server.register_on_termination {
-    executor.shutdown()
-  }
-
-  server.start(false)
-
-}

+ 0 - 34
frameworks/Scala/scruffy/README.md

@@ -1,34 +0,0 @@
-#Scruffy Benchmarking Test
-
-This is the Scruffy portion of a [benchmarking test suite](../) comparing a variety of web development platforms.
-
-## Infrastructure Software Versions
-
-The tests were run with:
-
-* [Java OpenJDK 1.7.0_09](http://openjdk.java.net/)
-* [Scruffy 1.13.0](http://scruffy-project.github.io/)
-
-## Test URLs
-
-### Test type 1: JSON serialization
-
-http://localhost:8080/json
-
-This example uses the built-in Jackson for json support.
-
-* [Test 1 source](src/main/scala/scruffy/examples/Test1Endpoint.scala)
-
-### Test type 2: Single database query
-
-This example uses casbah for Mongo queries. Future improvement would be to switch to a nonblocking library.
-
-* [Test 2 source](src/main/scala/scruffy/examples/Test2Endpoint.scala)
-
-http://localhost:8080/db
-
-### Test type 6: Plaintext
-
-http://localhost:8080/plaintext
-
-* [Test 6 source](src/main/scala/scruffy/examples/Test6Endpoint.scala)

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

@@ -1,24 +0,0 @@
-{
-  "framework": "scruffy",
-  "tests": [{
-    "default": {
-      "json_url": "/json",
-      "db_url": "/db",
-      "plaintext_url": "/plaintext",
-      "port": 8080,
-      "approach": "Realistic",
-      "classification": "Micro",
-      "database": "MongoDB",
-      "framework": "scruffy",
-      "language": "Scala",
-      "orm": "Raw",
-      "platform": "Undertow",
-      "webserver": "None",
-      "os": "Linux",
-      "database_os": "Linux",
-      "display_name": "scruffy",
-      "notes": "",
-      "versus": "undertow"
-    }
-  }]
-}

+ 0 - 14
frameworks/Scala/scruffy/build.sbt

@@ -1,14 +0,0 @@
-name := "scruffy-benchmark"
-
-organization := "com.sksamuel.scruffy"
-
-scalaVersion := "2.11.12"
-
-version := "11.0" // version 0 for round 11
-
-libraryDependencies ++= Seq(
-  "com.sksamuel.scruffy" %% "scruffy-undertow" % "1.13.0",
-  "com.sksamuel.scruffy" %% "scruffy-jackson" % "1.13.0",
-  "com.sksamuel.scruffy" %% "scruffy-client" % "1.13.0" % "test",
-  "org.mongodb" %% "casbah-core" % "2.8.0"
-)

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

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

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

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

+ 0 - 7
frameworks/Scala/scruffy/scruffy.dockerfile

@@ -1,7 +0,0 @@
-FROM tfb/sbt:latest
-
-COPY ./ ./
-
-RUN sbt assembly
-
-CMD java -jar target/scala-2.11/scruffy-benchmark-assembly-11.0.jar -Dhostname=TFB-database

+ 0 - 4
frameworks/Scala/scruffy/source_code

@@ -1,4 +0,0 @@
-./scruffy/src/main/scala/scruffy/examples/
-./scruffy/src/main/scala/scruffy/examples/Main.scala
-./scruffy/src/main/scala/scruffy/examples/Test1Route.scala
-./scruffy/src/main/scala/scruffy/examples/Test6Route.scala

+ 0 - 31
frameworks/Scala/scruffy/src/main/scala/scruffy/examples/Main.scala

@@ -1,31 +0,0 @@
-package scruffy.examples
-
-import com.sksamuel.scruffy.ScruffyContext
-import com.sksamuel.scruffy.undertow.ScruffyUndertowHttpHandler
-import io.undertow.{Undertow, UndertowOptions}
-
-/** @author Stephen Samuel */
-object Main extends App {
-
-  import scala.concurrent.ExecutionContext.Implicits.global
-
-  val port = 8080
-
-  val context = ScruffyContext(Test1Endpoint, Test2Endpoint, Test6Endpoint)
-  val handler = new ScruffyUndertowHttpHandler(context)
-
-  val server = Undertow
-    .builder()
-    .addHttpListener(port, "0.0.0.0")
-    .setHandler(handler)
-    .setServerOption(UndertowOptions.ALWAYS_SET_KEEP_ALIVE, java.lang.Boolean.FALSE)
-    .setServerOption(UndertowOptions.ALWAYS_SET_DATE, java.lang.Boolean.TRUE)
-    .setServerOption(UndertowOptions.ENABLE_CONNECTOR_STATISTICS, java.lang.Boolean.FALSE)
-    .setServerOption(UndertowOptions.MAX_CONCURRENT_REQUESTS_PER_CONNECTION, Integer.valueOf(8))
-
-    .build()
-
-  println("Starting Scruffy on Undertow...")
-  server.start()
-  println(s"Started on port [$port]. Interrupt to exit.")
-}

+ 0 - 15
frameworks/Scala/scruffy/src/main/scala/scruffy/examples/Test1Endpoint.scala

@@ -1,15 +0,0 @@
-package scruffy.examples
-
-import com.sksamuel.scruffy.HttpModule
-
-/** @author Stephen Samuel */
-object Test1Endpoint extends HttpModule {
-
-  import com.sksamuel.scruffy.jackson.ScruffyJackson.Implicits._
-
-  get("json") { req =>
-    Message("Hello, World!").json
-  }
-}
-
-case class Message(message: String)

+ 0 - 31
frameworks/Scala/scruffy/src/main/scala/scruffy/examples/Test2Endpoint.scala

@@ -1,31 +0,0 @@
-package scruffy.examples
-
-import java.util.concurrent.ThreadLocalRandom
-
-import com.mongodb.casbah.Imports._
-import com.sksamuel.scruffy.HttpModule
-
-/** @author Stephen Samuel */
-object Test2Endpoint extends HttpModule {
-
-  import com.sksamuel.scruffy.jackson.ScruffyJackson.Implicits._
-
-  val hostname = "127.0.0.1"
-  val connection = MongoConnection(hostname, 27017)
-  val collection = connection.getDB("hello_world").getCollection("world")
-
-  val fields = DBObject("_id" -> true, "randomNumber" -> true)
-
-  //uncomment to populate
-  //for ( k <- 1 to 10000 )
-  //  collection.save(DBObject("_id" -> k, "id" -> k, "randomNumber" -> random.nextInt(10000).toDouble))
-
-  get("db") { req =>
-    val id = 1 + ThreadLocalRandom.current.nextInt(10000)
-    val dbo = collection.findOne(DBObject("_id" -> id), fields)
-    val randomNumber = Math.round(dbo.get("randomNumber").toString.toFloat)
-    Output(id, randomNumber).json
-  }
-}
-
-case class Output(id: Int, randomNumber: Int)

+ 0 - 12
frameworks/Scala/scruffy/src/main/scala/scruffy/examples/Test6Endpoint.scala

@@ -1,12 +0,0 @@
-package scruffy.examples
-
-import com.sksamuel.scruffy.HttpModule
-import com.sksamuel.scruffy.http.MediaType
-
-/** @author Stephen Samuel */
-object Test6Endpoint extends HttpModule {
-
-  get("plaintext") { req =>
-    ok("Hello, World!", MediaType.TextPlain)
-  }
-}

+ 0 - 39
frameworks/Scala/scruffy/src/test/scala/BenchmarkVerify.scala

@@ -1,39 +0,0 @@
-import com.sksamuel.scruffy.client.ScruffyClient
-
-import scala.concurrent.duration._
-import scala.concurrent.{Await, Future}
-
-object BenchmarkVerify extends App {
-
-  import scala.concurrent.ExecutionContext.Implicits.global
-
-  val client = ScruffyClient()
-
-  val sw = Stopwatch()
-
-  val futures = for ( k <- 1 to 30000 ) yield {
-    client.get("http://localhost:8080/json").execute
-  }
-
-  val f = Future.sequence(futures)
-  Await.result(f, 1.minute)
-
-  sw.printMillis()
-
-  client.close()
-}
-
-case class Stopwatch() {
-
-  val start = System.currentTimeMillis
-
-  def duration: FiniteDuration = {
-    val end = System.currentTimeMillis
-    (end - start).millis
-  }
-
-  def seconds: Long = duration.toSeconds
-  def millis: Long = duration.toMillis
-
-  def printMillis(): Unit = println(s"Time ${millis}ms")
-}

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

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

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

@@ -1,19 +0,0 @@
-name := "spray-benchmark"
-
-organization := "io.spray"
-
-scalaVersion := "2.11.12"
-
-version := "1.0"
-
-resolvers ++= Seq(
-  "spray repo" at "http://repo.spray.io/"
-)
-
-libraryDependencies ++= Seq(
-  "io.spray" %% "spray-json" % "1.3.1",
-  "io.spray" %% "spray-can" % "1.3.1",
-  "com.typesafe.akka" %%  "akka-actor" % "2.4.7",
-  "com.typesafe.akka" %%  "akka-slf4j" % "2.4.7",
-  "ch.qos.logback"% "logback-classic" % "1.0.12" % "runtime"
-)

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

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

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

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

+ 0 - 3
frameworks/Scala/spray/source_code

@@ -1,3 +0,0 @@
-./spray/src/main/scala/spray/examples/
-./spray/src/main/scala/spray/examples/Main.scala
-./spray/src/main/scala/spray/examples/BenchmarkService.scala

+ 0 - 7
frameworks/Scala/spray/spray.dockerfile

@@ -1,7 +0,0 @@
-FROM tfb/sbt:latest
-
-COPY ./ ./
-
-RUN sbt assembly -batch
-
-CMD java -jar target/scala-2.11/spray-benchmark-assembly-1.0.jar

+ 0 - 28
frameworks/Scala/spray/src/main/resources/application.conf

@@ -1,28 +0,0 @@
-akka {
-  loglevel = INFO
-  event-handlers = ["akka.event.slf4j.Slf4jEventHandler"]
-
-  actor {
-    default-dispatcher {
-      fork-join-executor {
-          # Min number of threads to cap factor-based parallelism number to
-          parallelism-min = 1
-          parallelism-factor = 1
-      }
-    }
-  }
-}
-
-# check the reference.conf in spray-can/src/main/resources for all defined settings
-spray.can.server {
-  pipelining-limit = disabled
-  reaping-cycle = infinite
-  request-chunk-aggregation-limit = 0
-  stats-support = off
-  response-size-hint = 192
-}
-
-app {
-  interface = "0.0.0.0"
-  port = 8080
-}

+ 0 - 15
frameworks/Scala/spray/src/main/resources/logback.xml

@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration>
-
-    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
-        <target>System.out</target>
-        <encoder>
-            <pattern>%date{MM/dd HH:mm:ss.SSS} %-5level[%.15thread] %logger{1} - %msg%n</pattern>
-        </encoder>
-    </appender>
-
-    <root level="INFO">
-        <appender-ref ref="CONSOLE"/>
-    </root>
-
-</configuration>

+ 0 - 56
frameworks/Scala/spray/src/main/scala/spray/examples/BenchmarkService.scala

@@ -1,56 +0,0 @@
-package spray.examples
-
-import akka.actor._
-import scala.concurrent.duration._
-import spray.can.Http
-import spray.json._
-import spray.http._
-import spray.util._
-import MediaTypes._
-import HttpMethods._
-import StatusCodes._
-
-class BenchmarkService extends Actor {
-  import context.dispatcher
-  import Uri._
-  import Uri.Path._
-  val message = "Hello, World!".getAsciiBytes
-  val unknownResource = HttpResponse(NotFound, entity = "Unknown resource!")
-
-  def fastPath: Http.FastPath = {
-    case HttpRequest(GET, Uri(_, _, Slash(Segment(x, Path.Empty)), _, _), _, _, _) =>
-      x match {
-        case "json" =>
-          val json = JsObject("message" -> JsString("Hello, World!"))
-          HttpResponse(entity = HttpEntity(ContentTypes.`application/json`, json.compactPrint))
-        case "plaintext" => HttpResponse(entity = HttpEntity(ContentTypes.`text/plain`, message))
-        case "stop" =>
-          context.system.scheduler.scheduleOnce(1.second) { context.system.shutdown() }
-          HttpResponse(entity = "Shutting down in 1 second ...")
-        case _ => unknownResource
-      }
-  }
-
-  def receive = {
-    // when a new connection comes in we register ourselves as the connection handler
-    case _: Http.Connected => sender ! Http.Register(self, fastPath = fastPath)
-
-    // case HttpRequest(GET, Path("/"), _, _, _) => sender ! HttpResponse(
-    //   entity = HttpEntity(MediaTypes.`text/html`,
-    //     <html>
-    //       <body>
-    //         <h1>Tiny <i>spray-can</i> benchmark server</h1>
-    //         <p>Defined resources:</p>
-    //         <ul>
-    //           <li><a href="/json">/json</a></li>
-    //           <li><a href="/plaintext">/plaintext</a></li>
-    //           <li><a href="/stop">/stop</a></li>
-    //         </ul>
-    //       </body>
-    //     </html>.toString()
-    //   )
-    // )
-
-    case _: HttpRequest => sender ! unknownResource
-  }
-}

+ 0 - 17
frameworks/Scala/spray/src/main/scala/spray/examples/Main.scala

@@ -1,17 +0,0 @@
-package spray.examples
-
-import akka.actor._
-import akka.io.IO
-import spray.can.Http
-
-object Main extends App {
-
-  implicit val system = ActorSystem()
-
-  // the handler actor replies to incoming HttpRequests
-  val handler = system.actorOf(Props[BenchmarkService], name = "handler")
-
-  val interface = system.settings.config.getString("app.interface")
-  val port = system.settings.config.getInt("app.port")
-  IO(Http) ! Http.Bind(handler, interface, port)
-}

+ 0 - 4
toolset/setup/docker/systools/sbt-java8.dockerfile

@@ -1,4 +0,0 @@
-FROM tfb/java8:latest
-
-RUN wget -nv https://dl.bintray.com/sbt/debian/sbt-1.1.1.deb
-RUN apt install -yqq ./sbt-1.1.1.deb

+ 6 - 3
toolset/setup/docker/systools/sbt.dockerfile

@@ -1,4 +1,7 @@
-FROM tfb/java:latest
+FROM tfb/java8:latest
 
-RUN wget -nv https://dl.bintray.com/sbt/debian/sbt-1.1.1.deb
-RUN apt install -yqq ./sbt-1.1.1.deb
+RUN mkdir /sbt
+WORKDIR /sbt
+RUN curl -sL https://github.com/sbt/sbt/releases/download/v1.1.2/sbt-1.1.2.tgz | tar xz
+ENV SBT_HOME /sbt/sbt
+ENV PATH ${SBT_HOME}/bin:${PATH}