Browse Source

Merge pull request #2317 from ashawnbandy-te-tfb/cleanup-metadata-20161013-asb-2

Cleanup metadata 20161013 asb 2
Mike Smith 8 years ago
parent
commit
3e7e0dcf6e
46 changed files with 163 additions and 1313 deletions
  1. 0 1
      .travis.yml
  2. 1 2
      frameworks/C++/ffead-cpp/benchmark_config.json
  3. 1 2
      frameworks/C++/poco/benchmark_config.json
  4. 2 2
      frameworks/C++/treefrog/benchmark_config.json
  5. 6 80
      frameworks/C++/ulib/benchmark_config.json
  6. 2 2
      frameworks/C/onion/benchmark_config.json
  7. 2 2
      frameworks/Clojure/http-kit/benchmark_config.json
  8. 1 1
      frameworks/Clojure/luminus/benchmark_config.json
  9. 0 30
      frameworks/Go/fasthttp/benchmark_config.json
  10. 1 1
      frameworks/Java/rapidoid/benchmark_config.json
  11. 105 0
      frameworks/Java/sabina/benchmark_config.json
  12. 0 17
      frameworks/Java/undertow-edge/README.md
  13. 0 93
      frameworks/Java/undertow-edge/benchmark_config.json
  14. 0 219
      frameworks/Java/undertow-edge/pom.xml
  15. 0 8
      frameworks/Java/undertow-edge/setup.sh
  16. 0 4
      frameworks/Java/undertow-edge/source_code
  17. 0 37
      frameworks/Java/undertow-edge/src/main/java/hello/CacheHandler.java
  18. 0 68
      frameworks/Java/undertow-edge/src/main/java/hello/DbMongoHandler.java
  19. 0 75
      frameworks/Java/undertow-edge/src/main/java/hello/DbSqlHandler.java
  20. 0 25
      frameworks/Java/undertow-edge/src/main/java/hello/Fortune.java
  21. 0 55
      frameworks/Java/undertow-edge/src/main/java/hello/FortunesMongoHandler.java
  22. 0 61
      frameworks/Java/undertow-edge/src/main/java/hello/FortunesSqlHandler.java
  23. 0 161
      frameworks/Java/undertow-edge/src/main/java/hello/HelloWebServer.java
  24. 0 82
      frameworks/Java/undertow-edge/src/main/java/hello/Helper.java
  25. 0 32
      frameworks/Java/undertow-edge/src/main/java/hello/JsonHandler.java
  26. 0 33
      frameworks/Java/undertow-edge/src/main/java/hello/PlaintextHandler.java
  27. 0 60
      frameworks/Java/undertow-edge/src/main/java/hello/UpdatesMongoHandler.java
  28. 0 63
      frameworks/Java/undertow-edge/src/main/java/hello/UpdatesSqlHandler.java
  29. 0 20
      frameworks/Java/undertow-edge/src/main/java/hello/World.java
  30. 0 20
      frameworks/Java/undertow-edge/src/main/resources/hello/fortunes.mustache
  31. 0 14
      frameworks/Java/undertow-edge/src/main/resources/hello/server.properties
  32. 1 1
      frameworks/JavaScript/ringojs/benchmark_config.json
  33. 1 1
      frameworks/Nim/jester/benchmark_config.json
  34. 1 2
      frameworks/Perl/mojolicious/benchmark_config.json
  35. 2 2
      frameworks/Python/cherrypy/benchmark_config.json
  36. 6 6
      frameworks/Python/django/benchmark_config.json
  37. 6 6
      frameworks/Python/falcon/benchmark_config.json
  38. 3 3
      frameworks/Python/flask/benchmark_config.json
  39. 4 4
      frameworks/Python/pyramid/benchmark_config.json
  40. 6 6
      frameworks/Python/tornado/benchmark_config.json
  41. 2 2
      frameworks/Python/turbogears/benchmark_config.json
  42. 2 2
      frameworks/Python/uwsgi/benchmark_config.json
  43. 4 4
      frameworks/Python/wheezyweb/benchmark_config.json
  44. 2 2
      frameworks/Python/wsgi/benchmark_config.json
  45. 1 1
      frameworks/Ruby/ngx_mruby/benchmark_config.json
  46. 1 1
      frameworks/Scala/spray/benchmark_config.json

+ 0 - 1
.travis.yml

@@ -100,7 +100,6 @@ env:
     - "TESTDIR=Java/spring"
     - "TESTDIR=Java/tapestry"
     - "TESTDIR=Java/undertow"
-    - "TESTDIR=Java/undertow-edge"
     - "TESTDIR=Java/undertow-jersey-c3p0"
     - "TESTDIR=Java/undertow-jersey-hikaricp"
     - "TESTDIR=Java/vertx"

+ 1 - 2
frameworks/C++/ffead-cpp/benchmark_config.json

@@ -11,7 +11,7 @@
       "update_url": "/te-benchmark/updates?queries=",
       "port": 8080,
       "approach": "Realistic",
-      "classification": "Framework",
+      "classification": "micro",
       "database": "MongoDB",
       "framework": "ffead-cpp",
       "language": "C++",
@@ -27,4 +27,3 @@
     }
   }]
 }
-

+ 1 - 2
frameworks/C++/poco/benchmark_config.json

@@ -12,7 +12,7 @@
       "language": "C++",
       "flavor": "None",
       "orm": "Raw",
-      "platform": "POCO",
+      "platform": "None",
       "webserver": "None",
       "os": "Linux",
       "database_os": "Linux",
@@ -22,4 +22,3 @@
     }
   }]
 }
-

+ 2 - 2
frameworks/C++/treefrog/benchmark_config.json

@@ -16,7 +16,7 @@
       "framework": "treefrog",
       "language": "C++",
       "orm": "Micro",
-      "platform": "Treefrog",
+      "platform": "None",
       "webserver": "None",
       "os": "Linux",
       "database_os": "Linux",
@@ -87,7 +87,7 @@
       "framework": "treefrog",
       "language": "C++",
       "orm": "Micro",
-      "platform": "Treefrog",
+      "platform": "None",
       "webserver": "None",
       "os": "Linux",
       "database_os": "Linux",

+ 6 - 80
frameworks/C++/ulib/benchmark_config.json

@@ -11,7 +11,7 @@
       "framework": "ULib",
       "language": "C++",
       "orm": "Micro",
-      "platform": "ULib",
+      "platform": "None",
       "webserver": "ULib",
       "os": "Linux",
       "database_os": "Linux",
@@ -19,7 +19,7 @@
       "notes": "",
       "versus": ""
     },
-    "json_normal": {
+    "json": {
       "setup_file": "setup_json",
       "json_url": "/json",
       "port": 8080,
@@ -29,61 +29,7 @@
       "framework": "ULib",
       "language": "C++",
       "orm": "Micro",
-      "platform": "ULib",
-      "webserver": "ULib",
-      "os": "Linux",
-      "database_os": "Linux",
-      "display_name": "ULib",
-      "notes": "",
-      "versus": ""
-    },
-    "json_medium": {
-      "setup_file": "setup_json_medium",
-      "json_url": "/json",
-      "port": 8080,
-      "approach": "Realistic",
-      "classification": "Platform",
-      "database": "None",
-      "framework": "ULib",
-      "language": "C++",
-      "orm": "Micro",
-      "platform": "ULib",
-      "webserver": "ULib",
-      "os": "Linux",
-      "database_os": "Linux",
-      "display_name": "ULib",
-      "notes": "",
-      "versus": ""
-    },
-    "json_large": {
-      "setup_file": "setup_json_large",
-      "json_url": "/json",
-      "port": 8080,
-      "approach": "Realistic",
-      "classification": "Platform",
-      "database": "None",
-      "framework": "ULib",
-      "language": "C++",
-      "orm": "Micro",
-      "platform": "ULib",
-      "webserver": "ULib",
-      "os": "Linux",
-      "database_os": "Linux",
-      "display_name": "ULib",
-      "notes": "",
-      "versus": ""
-    },
-    "json_extra": {
-      "setup_file": "setup_json_extra",
-      "json_url": "/json",
-      "port": 8080,
-      "approach": "Realistic",
-      "classification": "Platform",
-      "database": "None",
-      "framework": "ULib",
-      "language": "C++",
-      "orm": "Micro",
-      "platform": "ULib",
+      "platform": "None",
       "webserver": "ULib",
       "os": "Linux",
       "database_os": "Linux",
@@ -104,7 +50,7 @@
       "framework": "ULib",
       "language": "C++",
       "orm": "Micro",
-      "platform": "ULib",
+      "platform": "None",
       "webserver": "ULib",
       "os": "Linux",
       "database_os": "Linux",
@@ -125,7 +71,7 @@
       "framework": "ULib",
       "language": "C++",
       "orm": "Micro",
-      "platform": "ULib",
+      "platform": "None",
       "webserver": "ULib",
       "os": "Linux",
       "database_os": "Linux",
@@ -133,26 +79,6 @@
       "notes": "",
       "versus": ""
     },
-    "sqlite": {
-      "setup_file": "setup_sqlite",
-      "db_url": "/db",
-      "query_url": "/query?queries=",
-      "fortune_url": "/fortune",
-      "port": 8080,
-      "approach": "Realistic",
-      "classification": "Platform",
-      "database": "SQLite",
-      "framework": "ULib",
-      "language": "C++",
-      "orm": "Micro",
-      "platform": "ULib",
-      "webserver": "ULib",
-      "os": "Linux",
-      "database_os": "Linux",
-      "display_name": "ULib-sqlite",
-      "notes": "",
-      "versus": ""
-    },
     "mongodb": {
       "setup_file": "setup_mongodb",
       "db_url": "/mdb",
@@ -166,7 +92,7 @@
       "framework": "ULib",
       "language": "C++",
       "orm": "Micro",
-      "platform": "ULib",
+      "platform": "None",
       "webserver": "ULib",
       "os": "Linux",
       "database_os": "Linux",

+ 2 - 2
frameworks/C/onion/benchmark_config.json

@@ -12,7 +12,7 @@
       "language": "C",
       "flavor": "None",
       "orm": "Raw",
-      "platform": "Onion",
+      "platform": "None",
       "webserver": "None",
       "os": "Linux",
       "database_os": "Linux",
@@ -33,7 +33,7 @@
       "language": "C",
       "flavor": "None",
       "orm": "Raw",
-      "platform": "Onion",
+      "platform": "None",
       "webserver": "None",
       "os": "Linux",
       "database_os": "Linux",

+ 2 - 2
frameworks/Clojure/http-kit/benchmark_config.json

@@ -17,7 +17,7 @@
       "language": "Clojure",
       "flavor": "None",
       "orm": "Micro",
-      "platform": "http-kit",
+      "platform": "Ring",
       "webserver": "None",
       "os": "Linux",
       "database_os": "Linux",
@@ -39,7 +39,7 @@
       "language": "Clojure",
       "flavor": "None",
       "orm": "Raw",
-      "platform": "http-kit",
+      "platform": "Ring",
       "webserver": "None",
       "os": "Linux",
       "database_os": "Linux",

+ 1 - 1
frameworks/Clojure/luminus/benchmark_config.json

@@ -17,7 +17,7 @@
       "language": "Clojure",
       "flavor": "None",
       "orm": "Raw",
-      "platform": "Undertow",
+      "platform": "Ring",
       "webserver": "None",
       "os": "Linux",
       "database_os": "Linux",

+ 0 - 30
frameworks/Go/fasthttp/benchmark_config.json

@@ -27,12 +27,9 @@
     },
     "mysql-prefork": {
       "setup_file": "setup-mysql-prefork",
-      "json_url": "/json",
       "db_url": "/db",
       "query_url": "/queries?queries=",
-      "fortune_url": "/fortune",
       "update_url": "/update?queries=",
-      "plaintext_url": "/plaintext",
       "port": 8080,
       "approach": "Realistic",
       "classification": "Platform",
@@ -49,38 +46,11 @@
       "notes": "",
       "versus": "go"
     },
-    "postgresql": {
-      "setup_file": "setup-postgresql",
-      "json_url": "/json",
-      "db_url": "/db",
-      "query_url": "/queries?queries=",
-      "fortune_url": "/fortune",
-      "update_url": "/update?queries=",
-      "plaintext_url": "/plaintext",
-      "port": 8080,
-      "approach": "Realistic",
-      "classification": "Platform",
-      "database": "Postgres",
-      "framework": "None",
-      "language": "Go",
-      "flavor": "None",
-      "orm": "Raw",
-      "platform": "None",
-      "webserver": "None",
-      "os": "Linux",
-      "database_os": "Linux",
-      "display_name": "FastHTTP",
-      "notes": "",
-      "versus": "go"
-    },
     "postgresql-prefork": {
       "setup_file": "setup-postgresql-prefork",
-      "json_url": "/json",
       "db_url": "/db",
       "query_url": "/queries?queries=",
-      "fortune_url": "/fortune",
       "update_url": "/update?queries=",
-      "plaintext_url": "/plaintext",
       "port": 8080,
       "approach": "Realistic",
       "classification": "Platform",

+ 1 - 1
frameworks/Java/rapidoid/benchmark_config.json

@@ -13,7 +13,7 @@
       "language": "Java",
       "flavor": "None",
       "orm": "Raw",
-      "platform": "Rapidoid",
+      "platform": "None",
       "webserver": "None",
       "os": "Linux",
       "database_os": "Linux",

+ 105 - 0
frameworks/Java/sabina/benchmark_config.json

@@ -0,0 +1,105 @@
+{
+  "framework": "sabina",
+  "tests": [{
+    "default": {
+      "json_url": "/json",
+      "db_url": "/db",
+      "query_url": "/query?queries=",
+      "fortune_url": "/fortune",
+      "update_url": "/update?queries=",
+      "plaintext_url": "/plaintext",
+
+      "port": 5050,
+      "setup_file": "undertow-mongodb",
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MongoDB",
+      "framework": "Sabina",
+      "language": "Java",
+      "flavor": "None",
+      "orm": "Raw",
+      "platform": "Servlet",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "Sabina Undertow MongoDB",
+      "notes": "",
+      "versus": "servlet"
+    },
+    "undertow-mysql": {
+      "json_url": "/json",
+      "db_url": "/db",
+      "query_url": "/query?queries=",
+      "fortune_url": "/fortune",
+      "update_url": "/update?queries=",
+      "plaintext_url": "/plaintext",
+
+      "port": 5050,
+      "setup_file": "undertow",
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "Sabina",
+      "language": "Java",
+      "flavor": "None",
+      "orm": "Raw",
+      "platform": "Servlet",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "Sabina Undertow MySQL",
+      "notes": "",
+      "versus": "servlet"
+    },
+    "jetty-mysql": {
+      "json_url": "/json",
+      "db_url": "/db",
+      "query_url": "/query?queries=",
+      "fortune_url": "/fortune",
+      "update_url": "/update?queries=",
+      "plaintext_url": "/plaintext",
+
+      "port": 5050,
+      "setup_file": "jetty",
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "Sabina",
+      "language": "Java",
+      "flavor": "None",
+      "orm": "Raw",
+      "platform": "Servlet",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "Sabina Jetty MySQL",
+      "notes": "",
+      "versus": "servlet"
+    },
+    "jetty-mongodb": {
+      "json_url": "/json",
+      "db_url": "/db",
+      "query_url": "/query?queries=",
+      "fortune_url": "/fortune",
+      "update_url": "/update?queries=",
+      "plaintext_url": "/plaintext",
+
+      "port": 5050,
+      "setup_file": "jetty-mongodb",
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MongoDB",
+      "framework": "Sabina",
+      "language": "Java",
+      "flavor": "None",
+      "orm": "Raw",
+      "platform": "Servlet",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "Sabina Jetty MongoDB",
+      "notes": "",
+      "versus": "servlet"
+    }
+  }]
+}

+ 0 - 17
frameworks/Java/undertow-edge/README.md

@@ -1,17 +0,0 @@
-# Undertow Edge Benchmarking Test
-
-This is the undertow portion of a [benchmarking test suite](../) comparing a variety of web development platforms.
-
-Edge version of undertow framework uses native implementation of xnio instead of NIO
-
-### JSON Encoding Test
-* [JSON test source](src/main/java/hello/HelloWebServer.java)
-
-## Versions
-Undertow 1.0.0.Beta31 (http://undertow.io)
-
-## Test URLs
-
-### JSON Encoding Test
-
-    http://localhost:8080

+ 0 - 93
frameworks/Java/undertow-edge/benchmark_config.json

@@ -1,93 +0,0 @@
-{
-  "framework": "undertow-edge",
-  "tests": [{
-    "default": {
-      "setup_file": "setup",
-      "json_url": "/json",
-      "plaintext_url": "/plaintext",
-      "cache_url": "/cache",
-      "port": 8080,
-      "approach": "Stripped",
-      "classification": "Platform",
-      "database": "None",
-      "framework": "None",
-      "language": "Java",
-      "flavor": "None",
-      "orm": "Raw",
-      "platform": "Undertow",
-      "webserver": "None",
-      "os": "Linux",
-      "database_os": "Linux",
-      "display_name": "undertow edge",
-      "notes": "",
-      "versus": ""
-    },
-    "mysql" : {
-      "setup_file": "setup",
-      "db_url": "/db/mysql",
-      "query_url": "/queries/mysql?queries=",
-      "fortune_url": "/fortunes/mysql",
-      "update_url": "/updates/mysql?queries=",
-      "port": 8080,
-      "approach": "Stripped",
-      "classification": "Platform",
-      "database": "MySQL",
-      "framework": "None",
-      "language": "Java",
-      "flavor": "None",
-      "orm": "Raw",
-      "platform": "Undertow",
-      "webserver": "None",
-      "os": "Linux",
-      "database_os": "Linux",
-      "display_name": "undertow edge",
-      "notes": "",
-      "versus": ""
-    },
-    "postgresql" : {
-      "setup_file": "setup",
-      "db_url": "/db/postgresql",
-      "query_url": "/queries/postgresql?queries=",
-      "fortune_url": "/fortunes/postgresql",
-      "update_url": "/updates/postgresql?queries=",
-      "port": 8080,
-      "approach": "Stripped",
-      "classification": "Platform",
-      "database": "Postgres",
-      "framework": "None",
-      "language": "Java",
-      "flavor": "None",
-      "orm": "Raw",
-      "platform": "Undertow",
-      "webserver": "None",
-      "os": "Linux",
-      "database_os": "Linux",
-      "display_name": "undertow edge",
-      "notes": "",
-      "versus": ""
-    },
-    "mongodb" : {
-      "setup_file": "setup",
-      "db_url": "/db/mongodb",
-      "query_url": "/queries/mongodb?queries=",
-      "fortune_url": "/fortunes/mongodb",
-      "update_url": "/updates/mongodb?queries=",
-      "port": 8080,
-      "approach": "Stripped",
-      "classification": "Platform",
-      "database": "MongoDB",
-      "framework": "None",
-      "language": "Java",
-      "flavor": "None",
-      "orm": "Raw",
-      "platform": "Undertow",
-      "webserver": "None",
-      "os": "Linux",
-      "database_os": "Linux",
-      "display_name": "undertow edge",
-      "notes": "",
-      "versus": ""
-    }
-  }]
-}
-

+ 0 - 219
frameworks/Java/undertow-edge/pom.xml

@@ -1,219 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.jboss</groupId>
-        <artifactId>jboss-parent</artifactId>
-        <version>12</version>
-    </parent>
-
-    <groupId>com.techempower</groupId>
-    <artifactId>undertow-edge</artifactId>
-    <version>0.1</version>
-
-    <properties>
-        <postgres-jdbc.version>9.4.1208</postgres-jdbc.version>
-    </properties>
-
-    <dependencies>
-        <!-- Web server -->
-        <dependency>
-            <groupId>io.undertow</groupId>
-            <artifactId>undertow-core</artifactId>
-            <version>1.0.13.Final</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.jboss.xnio</groupId>
-                    <artifactId>xnio-nio</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.jboss.xnio</groupId>
-            <artifactId>xnio-api</artifactId>
-            <version>3.2.1.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>org.jboss.xnio</groupId>
-            <artifactId>xnio-native</artifactId>
-            <version>1.0.0.Beta1</version>
-        </dependency>
-        <!-- Database drivers -->
-        <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
-            <version>5.1.38</version>
-        </dependency>
-        <dependency>
-            <groupId>org.postgresql</groupId>
-	    <artifactId>postgresql</artifactId>
-            <version>${postgres-jdbc.version}</version>
-	</dependency>
-        <dependency>
-            <groupId>org.mongodb</groupId>
-            <artifactId>mongo-java-driver</artifactId>
-            <version>2.11.2</version>
-        </dependency>
-        <!-- Database connection pooling -->
-        <dependency>
-            <groupId>commons-dbcp</groupId>
-            <artifactId>commons-dbcp</artifactId>
-            <version>1.4</version>
-        </dependency>
-        <!-- Caching (and misc. utilities) -->
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-            <version>14.0.1</version>
-        </dependency>
-        <!-- JSON encoding -->
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-            <version>2.3.0</version>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-annotations</artifactId>
-            <version>2.3.0</version>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-core</artifactId>
-            <version>2.3.0</version>
-        </dependency>
-        <!-- HTML templates -->
-        <dependency>
-            <groupId>com.github.spullara.mustache.java</groupId>
-            <artifactId>compiler</artifactId>
-            <version>0.8.13</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <inherited>true</inherited>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.1</version>
-                <configuration>
-                    <source>1.7</source>
-                    <target>1.7</target>
-                    <optimize>true</optimize>
-                    <debug>false</debug>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>com.googlecode.maven-download-plugin</groupId>
-                <artifactId>maven-download-plugin</artifactId>
-                <version>1.1.0</version>
-                <executions>
-                    <execution>
-                        <id>install-xnio-native</id>
-                        <phase>prepare-package</phase>
-                        <goals>
-                            <goal>wget</goal>
-                        </goals>
-                        <configuration>
-                            <url>http://downloads.jboss.org/xnio/native/1.0/1.0.0.Beta1/xnio-native-1.0.0.Beta1.zip</url>
-                            <unpack>true</unpack>
-                            <outputDirectory>${project.build.directory}</outputDirectory>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-antrun-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <phase>package</phase>
-                        <configuration>
-
-                            <target>
-                                <copy todir="${project.build.directory}" file="${project.build.directory}/${native.path}"/>
-                            </target>
-
-                        </configuration>
-                        <goals>
-                            <goal>run</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-assembly-plugin</artifactId>
-                <version>2.4</version>
-                <configuration>
-                    <archive>
-                        <manifest>
-                            <mainClass>hello.HelloWebServer</mainClass>
-                        </manifest>
-                    </archive>
-                    <attach>
-                    </attach>
-                    <descriptorRefs>
-                        <descriptorRef>jar-with-dependencies</descriptorRef>
-                    </descriptorRefs>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>make-assembly</id>
-                        <!-- this is used for inheritance merges -->
-                        <phase>package</phase>
-                        <!-- bind to the packaging phase -->
-                        <goals>
-                            <goal>single</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-    <profiles>
-        <profile>
-            <id>32bit-native</id>
-            <activation>
-                <os>
-                    <arch>x86</arch>
-                </os>
-            </activation>
-            <properties>
-                <native.path>linux-i686/libxnio.so</native.path>
-            </properties>
-        </profile>
-
-        <profile>
-            <id>64bit-native</id>
-            <activation>
-                <os>
-                    <arch>amd64</arch>
-                </os>
-            </activation>
-            <properties>
-                <native.path>linux-x86_64/libxnio.so</native.path>
-            </properties>
-        </profile>
-    </profiles>
-    <repositories>
-        <repository>
-            <id>jboss-public-repository-group</id>
-            <name>JBoss Public Maven Repository Group</name>
-            <url>https://repository.jboss.org/nexus/content/groups/public/</url>
-            <layout>default</layout>
-            <releases>
-                <enabled>true</enabled>
-                <updatePolicy>never</updatePolicy>
-            </releases>
-            <snapshots>
-                <enabled>true</enabled>
-                <updatePolicy>never</updatePolicy>
-            </snapshots>
-        </repository>
-    </repositories>
-
-</project>

+ 0 - 8
frameworks/Java/undertow-edge/setup.sh

@@ -1,8 +0,0 @@
-#!/bin/bash
-
-sed -i 's|127.0.0.1|'${DBHOST}'|g' src/main/resources/hello/server.properties
-
-fw_depends java maven
-
-mvn clean package
-java -Djava.library.path=target/ -jar target/undertow-edge-0.1-jar-with-dependencies.jar &

+ 0 - 4
frameworks/Java/undertow-edge/source_code

@@ -1,4 +0,0 @@
-./undertow/src/main/java/hello/
-./undertow/src/main/java/hello/HelloWebServer.java
-./undertow/src/main/java/hello/World.java
-./undertow/src/main/java/hello/Fortune.java

+ 0 - 37
frameworks/Java/undertow-edge/src/main/java/hello/CacheHandler.java

@@ -1,37 +0,0 @@
-package hello;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.cache.LoadingCache;
-import io.undertow.server.HttpHandler;
-import io.undertow.server.HttpServerExchange;
-import io.undertow.util.Headers;
-
-import java.util.Objects;
-
-import static hello.HelloWebServer.JSON_UTF8;
-
-/**
- * Handles the cache access test.
- */
-final class CacheHandler implements HttpHandler {
-  private final ObjectMapper objectMapper;
-  private final LoadingCache<Integer, World> worldCache;
-
-  CacheHandler(ObjectMapper objectMapper,
-               LoadingCache<Integer, World> worldCache) {
-    this.objectMapper = Objects.requireNonNull(objectMapper);
-    this.worldCache = Objects.requireNonNull(worldCache);
-  }
-
-  @Override
-  public void handleRequest(HttpServerExchange exchange) throws Exception {
-    int queries = Helper.getQueries(exchange);
-    World[] worlds = new World[queries];
-    for (int i = 0; i < queries; i++) {
-      worlds[i] = worldCache.get(Helper.randomWorld());
-    }
-    exchange.getResponseHeaders().put(
-        Headers.CONTENT_TYPE, JSON_UTF8);
-    exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds));
-  }
-}

+ 0 - 68
frameworks/Java/undertow-edge/src/main/java/hello/DbMongoHandler.java

@@ -1,68 +0,0 @@
-package hello;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.mongodb.BasicDBObject;
-import com.mongodb.DB;
-import com.mongodb.DBObject;
-import io.undertow.server.HttpHandler;
-import io.undertow.server.HttpServerExchange;
-import io.undertow.util.Headers;
-
-import java.util.Objects;
-
-import static hello.HelloWebServer.JSON_UTF8;
-
-/**
- * Handles the single- and multiple-query database tests using MongoDB.
- */
-final class DbMongoHandler implements HttpHandler {
-  private final ObjectMapper objectMapper;
-  private final DB database;
-  private final boolean multiple;
-
-  DbMongoHandler(ObjectMapper objectMapper, DB database, boolean multiple) {
-    this.objectMapper = Objects.requireNonNull(objectMapper);
-    this.database = Objects.requireNonNull(database);
-    this.multiple = multiple;
-  }
-
-  @Override
-  public void handleRequest(HttpServerExchange exchange) throws Exception {
-    if (exchange.isInIoThread()) {
-      exchange.dispatch(this);
-      return;
-    }
-    
-    int queries = 1;
-    if(multiple)
-    {
-      queries = Helper.getQueries(exchange);
-    }
-    
-    World[] worlds = new World[queries];
-    for (int i = 0; i < queries; i++) {
-      DBObject object = database.getCollection("World").findOne(
-          new BasicDBObject("_id", Helper.randomWorld()));
-      worlds[i] = new World(
-          //
-          // The creation script for the Mongo database inserts these numbers as
-          // JavaScript numbers, which resolve to Doubles in Java.
-          //
-          ((Number) object.get("_id")).intValue(),
-          ((Number) object.get("randomNumber")).intValue());
-    }
-    exchange.getResponseHeaders().put(
-        Headers.CONTENT_TYPE, JSON_UTF8);
-    
-    if (multiple)
-    {
-      // If a multiple query then response must be an array
-      exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds));
-    }
-    else
-    {
-      // If a single query then response must be an object
-      exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds[0]));
-    }
-  }
-}

+ 0 - 75
frameworks/Java/undertow-edge/src/main/java/hello/DbSqlHandler.java

@@ -1,75 +0,0 @@
-package hello;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import io.undertow.server.HttpHandler;
-import io.undertow.server.HttpServerExchange;
-import io.undertow.util.Headers;
-
-import javax.sql.DataSource;
-
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.util.Objects;
-
-import static hello.HelloWebServer.JSON_UTF8;
-
-/**
- * Handles the single- and multiple-query database tests using a SQL database.
- */
-final class DbSqlHandler implements HttpHandler {
-  private final ObjectMapper objectMapper;
-  private final DataSource database;
-  private final boolean multiple;
-
-  DbSqlHandler(ObjectMapper objectMapper, DataSource database, boolean multiple) {
-    this.objectMapper = Objects.requireNonNull(objectMapper);
-    this.database = Objects.requireNonNull(database);
-    this.multiple = multiple;
-  }
-
-  @Override
-  public void handleRequest(HttpServerExchange exchange) throws Exception {
-    if (exchange.isInIoThread()) {
-      exchange.dispatch(this);
-      return;
-    }
-    
-    int queries = 1;
-    if(multiple)
-    {
-      queries = Helper.getQueries(exchange);
-    }
-    
-    World[] worlds = new World[queries];
-    try (Connection connection = database.getConnection();
-         PreparedStatement statement = connection.prepareStatement(
-             "SELECT * FROM World WHERE id = ?",
-             ResultSet.TYPE_FORWARD_ONLY,
-             ResultSet.CONCUR_READ_ONLY)) {
-      for (int i = 0; i < queries; i++) {
-        statement.setInt(1, Helper.randomWorld());
-        try (ResultSet resultSet = statement.executeQuery()) {
-          resultSet.next();
-          worlds[i] = new World(
-              resultSet.getInt("id"),
-              resultSet.getInt("randomNumber"));
-        }
-      }
-    }
-    exchange.getResponseHeaders().put(
-        Headers.CONTENT_TYPE, JSON_UTF8);
-    
-    if (multiple)
-    {
-      // If a multiple query then response must be an array
-      exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds));
-    }
-    else
-    {
-      // If a single query then response must be an object
-      exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds[0]));
-    }
-  }
-}

+ 0 - 25
frameworks/Java/undertow-edge/src/main/java/hello/Fortune.java

@@ -1,25 +0,0 @@
-package hello;
-
-/**
- * The model for the "fortune" database table.
- */
-public final class Fortune implements Comparable<Fortune> {
-  public int id;
-  public String message;
-
-  /**
-   * Constructs a new fortune object with the given parameters.
-   *
-   * @param id the ID of the fortune
-   * @param message the message of the fortune
-   */
-  public Fortune(int id, String message) {
-    this.id = id;
-    this.message = message;
-  }
-
-  @Override
-  public int compareTo(Fortune other) {
-    return message.compareTo(other.message);
-  }
-}

+ 0 - 55
frameworks/Java/undertow-edge/src/main/java/hello/FortunesMongoHandler.java

@@ -1,55 +0,0 @@
-package hello;
-
-import com.github.mustachejava.Mustache;
-import com.github.mustachejava.MustacheFactory;
-import com.mongodb.DB;
-import com.mongodb.DBCursor;
-import com.mongodb.DBObject;
-import io.undertow.server.HttpHandler;
-import io.undertow.server.HttpServerExchange;
-import io.undertow.util.Headers;
-
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-
-import static hello.HelloWebServer.HTML_UTF8;
-
-/**
- * Handles the fortunes test using MongoDB.
- */
-final class FortunesMongoHandler implements HttpHandler {
-  private final MustacheFactory mustacheFactory;
-  private final DB database;
-
-  FortunesMongoHandler(MustacheFactory mustacheFactory, DB database) {
-    this.mustacheFactory = Objects.requireNonNull(mustacheFactory);
-    this.database = Objects.requireNonNull(database);
-  }
-
-  @Override
-  public void handleRequest(HttpServerExchange exchange) throws Exception {
-    if (exchange.isInIoThread()) {
-      exchange.dispatch(this);
-      return;
-    }
-    List<Fortune> fortunes = new ArrayList<>();
-    DBCursor cursor = database.getCollection("Fortune").find();
-    while (cursor.hasNext()) {
-      DBObject object = cursor.next();
-      fortunes.add(new Fortune(
-          ((Number) object.get("_id")).intValue(),
-          (String) object.get("message")));
-    }
-    fortunes.add(new Fortune(0, "Additional fortune added at request time."));
-    Collections.sort(fortunes);
-    Mustache mustache = mustacheFactory.compile("hello/fortunes.mustache");
-    StringWriter writer = new StringWriter();
-    mustache.execute(writer, fortunes);
-    exchange.getResponseHeaders().put(
-        Headers.CONTENT_TYPE, HTML_UTF8);
-    exchange.getResponseSender().send(writer.toString());
-  }
-}

+ 0 - 61
frameworks/Java/undertow-edge/src/main/java/hello/FortunesSqlHandler.java

@@ -1,61 +0,0 @@
-package hello;
-
-import com.github.mustachejava.Mustache;
-import com.github.mustachejava.MustacheFactory;
-import io.undertow.server.HttpHandler;
-import io.undertow.server.HttpServerExchange;
-import io.undertow.util.Headers;
-
-import javax.sql.DataSource;
-import java.io.StringWriter;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-
-import static hello.HelloWebServer.HTML_UTF8;
-
-/**
- * Handles the fortunes test using a SQL database.
- */
-final class FortunesSqlHandler implements HttpHandler {
-  private final MustacheFactory mustacheFactory;
-  private final DataSource database;
-
-  FortunesSqlHandler(MustacheFactory mustacheFactory, DataSource database) {
-    this.mustacheFactory = Objects.requireNonNull(mustacheFactory);
-    this.database = Objects.requireNonNull(database);
-  }
-
-  @Override
-  public void handleRequest(HttpServerExchange exchange) throws Exception {
-    if (exchange.isInIoThread()) {
-      exchange.dispatch(this);
-      return;
-    }
-    List<Fortune> fortunes = new ArrayList<>();
-    try (Connection connection = database.getConnection();
-         PreparedStatement statement = connection.prepareStatement(
-             "SELECT * FROM Fortune",
-             ResultSet.TYPE_FORWARD_ONLY,
-             ResultSet.CONCUR_READ_ONLY);
-         ResultSet resultSet = statement.executeQuery()) {
-      while (resultSet.next()) {
-        fortunes.add(new Fortune(
-            resultSet.getInt("id"),
-            resultSet.getString("message")));
-      }
-    }
-    fortunes.add(new Fortune(0, "Additional fortune added at request time."));
-    Collections.sort(fortunes);
-    Mustache mustache = mustacheFactory.compile("hello/fortunes.mustache");
-    StringWriter writer = new StringWriter();
-    mustache.execute(writer, fortunes);
-    exchange.getResponseHeaders().put(
-        Headers.CONTENT_TYPE, HTML_UTF8);
-    exchange.getResponseSender().send(writer.toString());
-  }
-}

+ 0 - 161
frameworks/Java/undertow-edge/src/main/java/hello/HelloWebServer.java

@@ -1,161 +0,0 @@
-package hello;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.github.mustachejava.DefaultMustacheFactory;
-import com.github.mustachejava.MustacheFactory;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
-import com.google.common.net.MediaType;
-import com.mongodb.DB;
-import com.mongodb.MongoClient;
-import io.undertow.Handlers;
-import io.undertow.Undertow;
-import io.undertow.UndertowOptions;
-import io.undertow.util.Headers;
-import org.xnio.Options;
-
-import javax.sql.DataSource;
-import java.io.IOException;
-import java.io.InputStream;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.Properties;
-
-/**
- * An implementation of the TechEmpower benchmark tests using the Undertow web
- * server.  The only test that truly exercises Undertow in isolation is the
- * plaintext test.  For the rest, it uses best-of-breed components that are
- * expected to perform well.  The idea is that using these components enables
- * these tests to serve as performance baselines for hypothetical, Undertow-based
- * frameworks.  For instance, it is unlikely that such frameworks would complete
- * the JSON test faster than this will, because this implementation uses
- * Undertow and Jackson in the most direct way possible to fulfill the test
- * requirements.
- */
-public final class HelloWebServer {
-
-  //MediaType.toString() does non-trivial work and does not cache the result
-  //so we cache it here
-  public static final String JSON_UTF8 = MediaType.JSON_UTF_8.toString();
-
-  public static final String TEXT_PLAIN = MediaType.PLAIN_TEXT_UTF_8.toString();
-
-  public static final String HTML_UTF8 = MediaType.HTML_UTF_8.toString();
-
-  public static void main(String[] args) throws Exception {
-    new HelloWebServer();
-  }
-
-  /**
-   * Creates and starts a new web server whose configuration is specified in the
-   * {@code server.properties} file.
-   *
-   * @throws IOException if the application properties file cannot be read or
-   *                     the Mongo database hostname cannot be resolved
-   * @throws SQLException if reading from the SQL database (while priming the
-   *                      cache) fails
-   */
-  public HelloWebServer() throws ClassNotFoundException, IOException, SQLException {
-    Class.forName("org.postgresql.Driver");
-    Properties properties = new Properties();
-    try (InputStream in = HelloWebServer.class.getResourceAsStream(
-        "server.properties")) {
-      properties.load(in);
-    }
-    final ObjectMapper objectMapper = new ObjectMapper();
-    final MustacheFactory mustacheFactory = new DefaultMustacheFactory();
-    final DataSource mysql = Helper.newDataSource(
-        properties.getProperty("mysql.uri"),
-        properties.getProperty("mysql.user"),
-        properties.getProperty("mysql.password"));
-    final DataSource postgresql = Helper.newDataSource(
-        properties.getProperty("postgresql.uri"),
-        properties.getProperty("postgresql.user"),
-        properties.getProperty("postgresql.password"));
-    final DB mongodb = new MongoClient(properties.getProperty("mongodb.host"))
-        .getDB(properties.getProperty("mongodb.name"));
-    //
-    // The world cache is primed at startup with all values.  It doesn't
-    // matter which database backs it; they all contain the same information
-    // and the CacheLoader.load implementation below is never invoked.
-    //
-    final LoadingCache<Integer, World> worldCache = CacheBuilder.newBuilder()
-        .build(new CacheLoader<Integer, World>() {
-          @Override
-          public World load(Integer id) throws Exception {
-            try (Connection connection = mysql.getConnection();
-                 PreparedStatement statement = connection.prepareStatement(
-                     "SELECT * FROM World WHERE id = ?",
-                     ResultSet.TYPE_FORWARD_ONLY,
-                     ResultSet.CONCUR_READ_ONLY)) {
-              statement.setInt(1, id);
-              try (ResultSet resultSet = statement.executeQuery()) {
-                resultSet.next();
-                return new World(
-                    resultSet.getInt("id"),
-                    resultSet.getInt("randomNumber"));
-              }
-            }
-          }
-        });
-    try (Connection connection = mysql.getConnection();
-         PreparedStatement statement = connection.prepareStatement(
-             "SELECT * FROM World",
-             ResultSet.TYPE_FORWARD_ONLY,
-             ResultSet.CONCUR_READ_ONLY);
-         ResultSet resultSet = statement.executeQuery()) {
-      while (resultSet.next()) {
-        World world = new World(
-            resultSet.getInt("id"),
-            resultSet.getInt("randomNumber"));
-        worldCache.put(world.id, world);
-      }
-    }
-    Undertow.builder()
-        .addListener(
-                Integer.parseInt(properties.getProperty("web.port")),
-                properties.getProperty("web.host"))
-        .setBufferSize(1024 * 16)
-        .setIoThreads(Runtime.getRuntime().availableProcessors() * 2) //this seems slightly faster in some configurations
-        .setSocketOption(Options.BACKLOG, 10000)
-        .setServerOption(UndertowOptions.ALWAYS_SET_KEEP_ALIVE, false) //don't send a keep-alive header for HTTP/1.1 requests, as it is not required
-        .setHandler(Handlers.date(Handlers.header(Handlers.path()
-            .addPrefixPath("/json",
-                new JsonHandler(objectMapper))
-            .addPrefixPath("/db/mysql",
-                new DbSqlHandler(objectMapper, mysql, false))
-            .addPrefixPath("/queries/mysql",
-                new DbSqlHandler(objectMapper, mysql, true))
-            .addPrefixPath("/db/postgresql",
-                new DbSqlHandler(objectMapper, postgresql, false))
-            .addPrefixPath("/queries/postgresql",
-                new DbSqlHandler(objectMapper, postgresql, true))
-            .addPrefixPath("/db/mongodb",
-                new DbMongoHandler(objectMapper, mongodb, false))
-            .addPrefixPath("/queries/mongodb",
-                new DbMongoHandler(objectMapper, mongodb, true))
-            .addPrefixPath("/fortunes/mysql",
-                new FortunesSqlHandler(mustacheFactory, mysql))
-            .addPrefixPath("/fortunes/postgresql",
-                new FortunesSqlHandler(mustacheFactory, postgresql))
-            .addPrefixPath("/fortunes/mongodb",
-                new FortunesMongoHandler(mustacheFactory, mongodb))
-            .addPrefixPath("/updates/mysql",
-                new UpdatesSqlHandler(objectMapper, mysql))
-            .addPrefixPath("/updates/postgresql",
-                new UpdatesSqlHandler(objectMapper, postgresql))
-            .addPrefixPath("/updates/mongodb",
-                new UpdatesMongoHandler(objectMapper, mongodb))
-            .addPrefixPath("/plaintext",
-                new PlaintextHandler())
-            .addPrefixPath("/cache",
-                new CacheHandler(objectMapper, worldCache)),
-            Headers.SERVER_STRING, "U-tow")))
-        .setWorkerThreads(200)
-        .build()
-        .start();
-  }
-}

+ 0 - 82
frameworks/Java/undertow-edge/src/main/java/hello/Helper.java

@@ -1,82 +0,0 @@
-package hello;
-
-import io.undertow.server.HttpServerExchange;
-import org.apache.commons.dbcp.ConnectionFactory;
-import org.apache.commons.dbcp.DriverManagerConnectionFactory;
-import org.apache.commons.dbcp.PoolableConnectionFactory;
-import org.apache.commons.dbcp.PoolingDataSource;
-import org.apache.commons.pool.impl.GenericObjectPool;
-
-import javax.sql.DataSource;
-import java.util.Deque;
-import java.util.concurrent.ThreadLocalRandom;
-
-/**
- * Provides utility methods for the benchmark tests.
- */
-final class Helper {
-  private Helper() {
-    throw new AssertionError();
-  }
-
-  /**
-   * Constructs a new SQL data source with the given parameters.  Connections
-   * to this data source are pooled.
-   *
-   * @param uri the URI for database connections
-   * @param user the username for the database
-   * @param password the password for the database
-   * @return a new SQL data source
-   */
-  static DataSource newDataSource(String uri,
-                                  String user,
-                                  String password) {
-    GenericObjectPool connectionPool = new GenericObjectPool();
-    connectionPool.setMaxActive(256);
-    connectionPool.setMaxIdle(256);
-    ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(
-        uri, user, password);
-    //
-    // This constructor modifies the connection pool, setting its connection
-    // factory to this.  (So despite how it may appear, all of the objects
-    // declared in this method are incorporated into the returned result.)
-    //
-    new PoolableConnectionFactory(
-        connectionFactory, connectionPool, null, null, false, true);
-    return new PoolingDataSource(connectionPool);
-  }
-
-  /**
-   * Returns the value of the "queries" request parameter, which is an integer
-   * bound between 1 and 500 with a default value of 1.
-   *
-   * @param exchange the current HTTP exchange
-   * @return the value of the "queries" request parameter
-   */
-  static int getQueries(HttpServerExchange exchange) {
-    Deque<String> values = exchange.getQueryParameters().get("queries");
-    if (values == null) {
-      return 1;
-    }
-    String textValue = values.peekFirst();
-    if (textValue == null) {
-      return 1;
-    }
-    try {
-      int parsedValue = Integer.parseInt(textValue);
-      return Math.min(500, Math.max(1, parsedValue));
-    } catch (NumberFormatException e) {
-      return 1;
-    }
-  }
-
-  /**
-   * Returns a random integer that is a suitable value for both the {@code id}
-   * and {@code randomNumber} properties of a world object.
-   *
-   * @return a random world number
-   */
-  static int randomWorld() {
-    return 1 + ThreadLocalRandom.current().nextInt(10000);
-  }
-}

+ 0 - 32
frameworks/Java/undertow-edge/src/main/java/hello/JsonHandler.java

@@ -1,32 +0,0 @@
-package hello;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import io.undertow.server.HttpHandler;
-import io.undertow.server.HttpServerExchange;
-import io.undertow.util.Headers;
-
-import java.nio.ByteBuffer;
-import java.util.Collections;
-import java.util.Objects;
-
-import static hello.HelloWebServer.JSON_UTF8;
-
-/**
- * Handles the JSON test.
- */
-final class JsonHandler implements HttpHandler {
-  private final ObjectMapper objectMapper;
-
-  public JsonHandler(ObjectMapper objectMapper) {
-    this.objectMapper = Objects.requireNonNull(objectMapper);
-  }
-
-  @Override
-  public void handleRequest(HttpServerExchange exchange) throws Exception {
-    exchange.getResponseHeaders().put(
-        Headers.CONTENT_TYPE, JSON_UTF8);
-    exchange.getResponseSender().send(ByteBuffer.wrap(
-            objectMapper.writeValueAsBytes(
-                    Collections.singletonMap("message", "Hello, World!"))));
-  }
-}

+ 0 - 33
frameworks/Java/undertow-edge/src/main/java/hello/PlaintextHandler.java

@@ -1,33 +0,0 @@
-package hello;
-
-import io.undertow.server.HttpHandler;
-import io.undertow.server.HttpServerExchange;
-import io.undertow.util.Headers;
-import java.nio.ByteBuffer;
-
-import static hello.HelloWebServer.TEXT_PLAIN;
-
-/**
- * Handles the plaintext test.
- */
-final class PlaintextHandler implements HttpHandler {
-  private static final ByteBuffer buffer;
-  private static final String MESSAGE = "Hello, World!";
-
-  static {
-      buffer = ByteBuffer.allocateDirect(MESSAGE.length());   
-      try {
-          buffer.put(MESSAGE.getBytes("US-ASCII"));
-      } catch (Exception e) {
-          throw new RuntimeException(e);
-      }
-      buffer.flip();
-  }
-     
-  @Override
-  public void handleRequest(HttpServerExchange exchange) throws Exception {
-    exchange.getResponseHeaders().put(
-        Headers.CONTENT_TYPE, TEXT_PLAIN);
-    exchange.getResponseSender().send(buffer.duplicate());
-  }
-}

+ 0 - 60
frameworks/Java/undertow-edge/src/main/java/hello/UpdatesMongoHandler.java

@@ -1,60 +0,0 @@
-package hello;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.mongodb.BasicDBObject;
-import com.mongodb.DB;
-import com.mongodb.DBObject;
-
-import io.undertow.server.HttpHandler;
-import io.undertow.server.HttpServerExchange;
-import io.undertow.util.Headers;
-
-import java.util.Objects;
-
-import static hello.HelloWebServer.JSON_UTF8;
-
-/**
- * Handles the updates test using MongoDB.
- */
-final class UpdatesMongoHandler implements HttpHandler {
-  private final ObjectMapper objectMapper;
-  private final DB database;
-
-  UpdatesMongoHandler(ObjectMapper objectMapper, DB database) {
-    this.objectMapper = Objects.requireNonNull(objectMapper);
-    this.database = Objects.requireNonNull(database);
-  }
-
-  @Override
-  public void handleRequest(HttpServerExchange exchange) throws Exception {
-    if (exchange.isInIoThread()) {
-      exchange.dispatch(this);
-      return;
-    }
-    int queries = Helper.getQueries(exchange);
-    World[] worlds = new World[queries];
-    for (int i = 0; i < queries; i++) {
-      int id = Helper.randomWorld();
-      DBObject key = new BasicDBObject("_id", id);
-      //
-      // The requirements for the test dictate that we must fetch the World
-      // object from the data store and read its randomNumber field, even though
-      // we could technically avoid doing either of those things and still
-      // produce the correct output and side effects.
-      //
-      DBObject object = database.getCollection("World").findOne(key);
-      
-      @SuppressWarnings("unused")
-      // Per test requirement the old value must be read
-      int oldRandomNumber = ((Number) object.get("randomNumber")).intValue(); 
-      
-      int newRandomNumber = Helper.randomWorld();
-      object.put("randomNumber", newRandomNumber);
-      database.getCollection("World").update(key, object);
-      worlds[i] = new World(id, newRandomNumber);
-    }
-    exchange.getResponseHeaders().put(
-        Headers.CONTENT_TYPE, JSON_UTF8);
-    exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds));
-  }
-}

+ 0 - 63
frameworks/Java/undertow-edge/src/main/java/hello/UpdatesSqlHandler.java

@@ -1,63 +0,0 @@
-package hello;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import io.undertow.server.HttpHandler;
-import io.undertow.server.HttpServerExchange;
-import io.undertow.util.Headers;
-
-import javax.sql.DataSource;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.util.Objects;
-
-import static hello.HelloWebServer.JSON_UTF8;
-
-/**
- * Handles the updates test using a SQL database.
- */
-final class UpdatesSqlHandler implements HttpHandler {
-  private final ObjectMapper objectMapper;
-  private final DataSource database;
-
-  UpdatesSqlHandler(ObjectMapper objectMapper, DataSource database) {
-    this.objectMapper = Objects.requireNonNull(objectMapper);
-    this.database = Objects.requireNonNull(database);
-  }
-
-  @Override
-  public void handleRequest(HttpServerExchange exchange) throws Exception {
-    if (exchange.isInIoThread()) {
-      exchange.dispatch(this);
-      return;
-    }
-    int queries = Helper.getQueries(exchange);
-    World[] worlds = new World[queries];
-    try (Connection connection = database.getConnection();
-         PreparedStatement query = connection.prepareStatement(
-             "SELECT * FROM World WHERE id = ?",
-             ResultSet.TYPE_FORWARD_ONLY,
-             ResultSet.CONCUR_READ_ONLY);
-         PreparedStatement update = connection.prepareStatement(
-             "UPDATE World SET randomNumber = ? WHERE id= ?")) {
-      for (int i = 0; i < queries; i++) {
-        query.setInt(1, Helper.randomWorld());
-        World world;
-        try (ResultSet resultSet = query.executeQuery()) {
-          resultSet.next();
-          world = new World(
-              resultSet.getInt("id"),
-              resultSet.getInt("randomNumber"));
-        }
-        world.randomNumber = Helper.randomWorld();
-        update.setInt(1, world.randomNumber);
-        update.setInt(2, world.id);
-        update.executeUpdate();
-        worlds[i] = world;
-      }
-    }
-    exchange.getResponseHeaders().put(
-        Headers.CONTENT_TYPE, JSON_UTF8);
-    exchange.getResponseSender().send(objectMapper.writeValueAsString(worlds));
-  }
-}

+ 0 - 20
frameworks/Java/undertow-edge/src/main/java/hello/World.java

@@ -1,20 +0,0 @@
-package hello;
-
-/**
- * The model for the "world" database table.
- */
-public final class World {
-    public int id;
-    public int randomNumber;
-
-    /**
-     * Constructs a new world object with the given parameters.
-     *
-     * @param id           the ID of the world
-     * @param randomNumber the random number of the world
-     */
-    public World(int id, int randomNumber) {
-        this.id = id;
-        this.randomNumber = randomNumber;
-    }
-}

+ 0 - 20
frameworks/Java/undertow-edge/src/main/resources/hello/fortunes.mustache

@@ -1,20 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <title>Fortunes</title>
-</head>
-<body>
-<table>
-    <tr>
-        <th>id</th>
-        <th>message</th>
-    </tr>
-    {{#.}}
-      <tr>
-          <td>{{id}}</td>
-          <td>{{message}}</td>
-      </tr>
-    {{/.}}
-</table>
-</body>
-</html>

+ 0 - 14
frameworks/Java/undertow-edge/src/main/resources/hello/server.properties

@@ -1,14 +0,0 @@
-web.port = 8080
-web.host = 0.0.0.0
-mysql.uri = jdbc:mysql://127.0.0.1:3306/hello_world?jdbcCompliantTruncation=false&elideSetAutoCommits=true&useLocalSessionState=true&cachePrepStmts=true&cacheCallableStmts=true&alwaysSendSetIsolation=false&prepStmtCacheSize=4096&cacheServerConfiguration=true&prepStmtCacheSqlLimit=2048&zeroDateTimeBehavior=convertToNull&traceProtocol=false&useUnbufferedInput=false&useReadAheadInput=false&maintainTimeStats=false&useServerPrepStmts&cacheRSMetadata=true
-mysql.user = benchmarkdbuser
-mysql.password = benchmarkdbpass
-#
-# TODO: Audit this postgresql connection string.
-# It looks copy & pasted from MySQL.  Do these parameters even do anything?
-#
-postgresql.uri = jdbc:postgresql://127.0.0.1:5432/hello_world?jdbcCompliantTruncation=false&elideSetAutoCommits=true&useLocalSessionState=true&cachePrepStmts=true&cacheCallableStmts=true&alwaysSendSetIsolation=false&prepStmtCacheSize=4096&cacheServerConfiguration=true&prepStmtCacheSqlLimit=2048&zeroDateTimeBehavior=convertToNull&traceProtocol=false&useUnbufferedInput=false&useReadAheadInput=false&maintainTimeStats=false&useServerPrepStmts&cacheRSMetadata=true
-postgresql.user = benchmarkdbuser
-postgresql.password = benchmarkdbpass
-mongodb.host = 127.0.0.1:27017
-mongodb.name = hello_world

+ 1 - 1
frameworks/JavaScript/ringojs/benchmark_config.json

@@ -17,7 +17,7 @@
       "language": "JavaScript",
       "flavor": "RingoJS",
       "orm": "Raw",
-      "platform": "ringojs",
+      "platform": "Jetty",
       "webserver": "None",
       "os": "Linux",
       "database_os": "Linux",

+ 1 - 1
frameworks/Nim/jester/benchmark_config.json

@@ -11,7 +11,7 @@
       "framework": "jester",
       "language": "Nim",
       "orm": "Raw",
-      "platform": "Nim",
+      "platform": "None",
       "webserver": "nginx",
       "os": "Linux",
       "database_os": "Linux",

+ 1 - 2
frameworks/Perl/mojolicious/benchmark_config.json

@@ -16,7 +16,7 @@
       "framework": "mojolicious",
       "language": "Perl",
       "orm": "Raw",
-      "platform": "Mojolicious",
+      "platform": "None",
       "webserver": "Hypnotoad",
       "os": "Linux",
       "database_os": "Linux",
@@ -26,4 +26,3 @@
     }
   }]
 }
-

+ 2 - 2
frameworks/Python/cherrypy/benchmark_config.json

@@ -13,7 +13,7 @@
       "approach": "Realistic",
       "classification": "Micro",
       "database": "MySQL",
-      "framework": "CherryPy",
+      "framework": "None",
       "language": "Python",
       "flavor": "Python2",
       "orm": "Full",
@@ -36,7 +36,7 @@
       "approach": "Realistic",
       "classification": "Micro",
       "database": "MySQL",
-      "framework": "CherryPy",
+      "framework": "None",
       "language": "Python",
       "flavor": "Python3",
       "orm": "Full",

+ 6 - 6
frameworks/Python/django/benchmark_config.json

@@ -17,8 +17,8 @@
       "language": "Python",
       "flavor": "Python2",
       "orm": "Full",
-      "platform": "Meinheld",
-      "webserver": "None",
+      "platform": "None",
+      "webserver": "Meinheld",
       "os": "Linux",
       "database_os": "Linux",
       "display_name": "Django",
@@ -41,8 +41,8 @@
       "language": "Python",
       "flavor": "Python3",
       "orm": "Full",
-      "platform": "Meinheld",
-      "webserver": "None",
+      "platform": "None",
+      "webserver": "Meinheld",
       "os": "Linux",
       "database_os": "Linux",
       "display_name": "Django",
@@ -63,8 +63,8 @@
       "language": "Python",
       "flavor": "Python2",
       "orm": "Full",
-      "platform": "Meinheld",
-      "webserver": "None",
+      "platform": "None",
+      "webserver": "Meinheld",
       "os": "Linux",
       "database_os": "Linux",
       "display_name": "Django",

+ 6 - 6
frameworks/Python/falcon/benchmark_config.json

@@ -13,8 +13,8 @@
       "language": "Python",
       "flavor": "Python2",
       "orm": "Raw",
-      "platform": "Gunicorn/Meinheld",
-      "webserver": "None",
+      "platform": "None",
+      "webserver": "Meinheld",
       "os": "Linux",
       "database_os": "Linux",
       "display_name": "Falcon",
@@ -33,8 +33,8 @@
       "language": "Python",
       "flavor": "Python3",
       "orm": "Raw",
-      "platform": "Gunicorn/Meinheld",
-      "webserver": "None",
+      "platform": "None",
+      "webserver": "Meinheld",
       "os": "Linux",
       "database_os": "Linux",
       "display_name": "Falcon",
@@ -53,8 +53,8 @@
       "language": "Python",
       "flavor": "PyPy",
       "orm": "Raw",
-      "platform": "Gunicorn/Tornado",
-      "webserver": "None",
+      "platform": "None",
+      "webserver": "Tornado",
       "os": "Linux",
       "database_os": "Linux",
       "display_name": "Falcon",

+ 3 - 3
frameworks/Python/flask/benchmark_config.json

@@ -87,8 +87,8 @@
       "language": "Python",
       "flavor": "PyPy",
       "orm": "Full",
-      "platform": "Tornado",
-      "webserver": "None",
+      "platform": "None",
+      "webserver": "Tornado",
       "os": "Linux",
       "database_os": "Linux",
       "display_name": "Flask",
@@ -133,7 +133,7 @@
       "language": "Python",
       "flavor": "Python2",
       "orm": "Full",
-      "platform": "uWSGI",
+      "platform": "None",
       "webserver": "nginx",
       "os": "Linux",
       "database_os": "Linux",

+ 4 - 4
frameworks/Python/pyramid/benchmark_config.json

@@ -17,8 +17,8 @@
       "language": "Python",
       "flavor": "Python3",
       "orm": "Full",
-      "platform": "Meinheld",
-      "webserver": "None",
+      "platform": "None",
+      "webserver": "Meinheld",
       "os": "Linux",
       "database_os": "Linux",
       "display_name": "Pyramid",
@@ -41,8 +41,8 @@
       "language": "Python",
       "flavor": "Python2",
       "orm": "Full",
-      "platform": "Meinheld",
-      "webserver": "None",
+      "platform": "None",
+      "webserver": "Meinheld",
       "os": "Linux",
       "database_os": "Linux",
       "display_name": "Pyramid",

+ 6 - 6
frameworks/Python/tornado/benchmark_config.json

@@ -15,8 +15,8 @@
       "language": "Python",
       "flavor": "Python2",
       "orm": "Raw",
-      "platform": "Tornado",
-      "webserver": "None",
+      "platform": "None",
+      "webserver": "Tornado",
       "os": "Linux",
       "database_os": "Linux",
       "display_name": "Tornado-raw",
@@ -35,8 +35,8 @@
       "language": "Python",
       "flavor": "Python2",
       "orm": "Raw",
-      "platform": "Tornado",
-      "webserver": "None",
+      "platform": "None",
+      "webserver": "Tornado",
       "os": "Linux",
       "database_os": "Linux",
       "display_name": "Tornado-raw",
@@ -57,8 +57,8 @@
       "language": "Python",
       "flavor": "Python3",
       "orm": "Raw",
-      "platform": "Tornado",
-      "webserver": "None",
+      "platform": "None",
+      "webserver": "Tornado",
       "os": "Linux",
       "database_os": "Linux",
       "display_name": "Tornado-raw",

+ 2 - 2
frameworks/Python/turbogears/benchmark_config.json

@@ -17,8 +17,8 @@
       "language": "Python",
       "flavor": "Python2",
       "orm": "Full",
-      "platform": "Meinheld",
-      "webserver": "None",
+      "platform": "None",
+      "webserver": "Meinheld",
       "os": "Linux",
       "database_os": "Linux",
       "display_name": "TurboGears",

+ 2 - 2
frameworks/Python/uwsgi/benchmark_config.json

@@ -12,7 +12,7 @@
       "language": "Python",
       "flavor": "Python2",
       "orm": "Raw",
-      "platform": "wsgi",
+      "platform": "None",
       "webserver": "uWSGI",
       "os": "Linux",
       "database_os": "Linux",
@@ -31,7 +31,7 @@
       "language": "Python",
       "flavor": "Python2",
       "orm": "Raw",
-      "platform": "wsgi",
+      "platform": "None",
       "webserver": "nginx-uWSGI",
       "os": "Linux",
       "database_os": "Linux",

+ 4 - 4
frameworks/Python/wheezyweb/benchmark_config.json

@@ -17,8 +17,8 @@
       "language": "Python",
       "flavor": "Python2",
       "orm": "Full",
-      "platform": "Meinheld",
-      "webserver": "None",
+      "platform": "None",
+      "webserver": "Meinheld",
       "os": "Linux",
       "database_os": "Linux",
       "display_name": "wheezy.web",
@@ -40,8 +40,8 @@
       "language": "Python",
       "flavor": "Python3",
       "orm": "Full",
-      "platform": "Meinheld",
-      "webserver": "None",
+      "platform": "None",
+      "webserver": "Meinheld",
       "os": "Linux",
       "database_os": "Linux",
       "display_name": "wheezy.web",

+ 2 - 2
frameworks/Python/wsgi/benchmark_config.json

@@ -13,8 +13,8 @@
       "language": "Python",
       "flavor": "Python3",
       "orm": "Raw",
-      "platform": "Meinheld",
-      "webserver": "None",
+      "platform": "None",
+      "webserver": "Meinheld",
       "os": "Linux",
       "database_os": "Linux",
       "display_name": "wsgi",

+ 1 - 1
frameworks/Ruby/ngx_mruby/benchmark_config.json

@@ -14,7 +14,7 @@
       "framework": "ngx_mruby",
       "language": "Ruby",
       "orm": "Raw",
-      "platform": "ngx_mruby",
+      "platform": "None",
       "webserver": "nginx",
       "os": "Linux",
       "database_os": "Linux",

+ 1 - 1
frameworks/Scala/spray/benchmark_config.json

@@ -12,7 +12,7 @@
       "framework": "spray",
       "language": "Scala",
       "orm": "Raw",
-      "platform": "Spray",
+      "platform": "Akka",
       "webserver": "None",
       "os": "Linux",
       "database_os": "Linux",