Browse Source

Adding plain framework

weltermann17 12 years ago
parent
commit
340cd68370

+ 6 - 0
plain/.gitignore

@@ -0,0 +1,6 @@
+/project/.*
+/project/target
+/target
+/.project
+/.classpath
+/.cache

+ 0 - 0
plain/__init__.py


+ 13 - 0
plain/benchmark_config

@@ -0,0 +1,13 @@
+{
+    "framework" : "plain",
+    "tests" : [{
+        "default" : {
+            "setup_file" : "setup",
+            "json_url" : "/json",
+            "plaintext_url": "/plaintext",
+            "port": 8080,
+            "sort": 143
+            }
+        }
+    ]
+}

+ 51 - 0
plain/build.sbt

@@ -0,0 +1,51 @@
+import sbt._
+import spray.revolver.RevolverPlugin.Revolver
+import sbtassembly.Plugin._
+import AssemblyKeys._
+
+name := "plain-benchmark"
+
+organization := "com.ibm"
+
+scalaVersion := "2.10.2"
+
+version := "1.0"
+
+test in Compile := {}
+
+mainClass in Compile := Some("com.ibm.plain.bootstrap.Main")
+
+scalacOptions in Compile ++= Seq(
+	"-g:none",
+	"-encoding", "UTF-8", 
+	"-target:jvm-1.7", 
+	"-deprecation", 
+	"-feature", 
+	"-optimise"
+)
+
+libraryDependencies ++= Seq(
+  "org.scala-lang" % "scala-reflect" % "2.10.2",
+  "org.reflections" % "reflections" % "0.9.8",
+  "com.typesafe" % "config" % "1.0.1",
+  "ch.qos.logback" % "logback-classic" % "1.0.12",
+  "org.codehaus.janino" % "janino" % "2.6.1",
+  "com.lmax" % "disruptor" % "3.1.0",
+  "com.typesafe.akka" %% "akka-actor" % "2.1.4",
+  "com.typesafe.akka" %% "akka-slf4j" % "2.1.4",
+  "org.apache.commons" % "commons-lang3" % "3.1",
+  "org.apache.commons" % "commons-compress" % "1.4.1",
+  "commons-io" % "commons-io" % "2.4",
+  "commons-net" % "commons-net" % "3.2",
+  "commons-codec" % "commons-codec" % "1.7",
+  "com.googlecode.concurrentlinkedhashmap" % "concurrentlinkedhashmap-lru" % "1.3.2",
+  "net.jpountz.lz4" % "lz4" % "1.1.2",
+  "com.fasterxml.jackson.core" % "jackson-databind" % "2.2.2",
+  "com.sun.jersey" % "jersey-json" % "1.17.1",
+  "org.jvnet.mimepull" % "mimepull" % "1.9.2",
+  "javax.servlet" % "servlet-api" % "2.5"
+)
+
+Revolver.settings
+
+sbtassembly.Plugin.assemblySettings

BIN
plain/lib/plain-library_2.10-1.0.1-SNAPSHOT.jar


+ 1 - 0
plain/project/build.properties

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

+ 20 - 0
plain/project/plugins.sbt

@@ -0,0 +1,20 @@
+logLevel := Level.Warn
+
+resolvers += Resolver.url("artifactory", url("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns)
+
+resolvers += "spray repo" at "http://repo.spray.io"
+
+addSbtPlugin("com.github.retronym" % "sbt-onejar" % "0.8")
+
+addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.1.2")
+
+addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.1.3")
+
+addSbtPlugin("com.typesafe.sbt" % "sbt-scalariform" % "1.0.1")
+
+addSbtPlugin("me.lessis" % "ls-sbt" % "0.1.2")
+
+addSbtPlugin("io.spray" % "sbt-revolver" % "0.6.2")
+
+addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.8.8")
+

+ 1 - 0
plain/sbt

@@ -0,0 +1 @@
+java -Xmx3g -Xms2g -Xmn1g -Xss8M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=384M -Dsbt.global.base=project/.sbtboot -Dsbt.boot.directory=project/.boot -Dsbt.ivy.home=project/.ivy -jar `dirname $0`/sbt-launch.jar "$@"

BIN
plain/sbt-launch.jar


+ 24 - 0
plain/setup.py

@@ -0,0 +1,24 @@
+
+import subprocess
+import sys
+import time
+import os
+
+def start(args=None):
+    subprocess.check_call("./sbt assembly", shell=True, cwd="plain")
+    subprocess.Popen("java -Xmx4g -Xss8m -jar target/scala-2.10/plain-benchmark-assembly-1.0.jar", cwd="plain", shell=True)
+    time.sleep(5)
+    return 0
+
+def stop():
+  p = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE)
+  out, err = p.communicate()
+  for line in out.splitlines():
+    if 'plain-benchmark' in line:
+      try:
+        pid = int(line.split(None, 2)[1])
+        os.kill(pid, 9)
+      except OSError:
+        pass
+  
+  return 0

+ 18 - 0
plain/src/main/resources/application.conf

@@ -0,0 +1,18 @@
+#
+# application.conf
+#
+
+akka.event-handlers = [ "akka.event.slf4j.Slf4jEventHandler" ]
+akka.loglevel = WARNING
+
+plain.logging.level = INFO
+plain.http.startup-servers = [ benchmark-server ]
+
+benchmark-server.port-range = [ 8080 ]
+benchmark-server.dispatcher = benchmark-dispatcher
+
+benchmark-dispatcher.routes = [ 
+	{ uri = plaintext, resource-class-name = com.ibm.techempower.PlainTextResource }
+	{ uri = json, resource-class-name = com.ibm.techempower.JsonResource }
+]
+

+ 12 - 0
plain/src/main/scala/com/ibm/techempower/JsonResource.scala

@@ -0,0 +1,12 @@
+package com.ibm.techempower
+
+import com.ibm.plain.rest.Resource
+import com.ibm.plain.json.Json
+
+final class JsonResource
+
+  extends Resource {
+
+  Get { Json(Map("message" -> "Hello, World!")) }
+
+}

+ 20 - 0
plain/src/main/scala/com/ibm/techempower/PlainTextResource.scala

@@ -0,0 +1,20 @@
+package com.ibm.techempower
+
+import com.ibm.plain.rest.Resource
+import com.ibm.plain.text.`UTF-8`
+
+final class PlainTextResource
+
+  extends Resource {
+  
+  import PlainTextResource._
+
+  Get { hello }
+
+}
+
+object PlainTextResource {
+  
+  final val hello = "Hello, World!".getBytes(`UTF-8`)  
+  
+}