Browse Source

Merge branch 'master' into wicket-5-database-updates

Martin Tzvetanov Grigorov 11 years ago
parent
commit
33a7e4da9d
100 changed files with 157 additions and 75 deletions
  1. 2 1
      .gitignore
  2. 1 1
      aspnet/nginx.conf
  3. 2 2
      beego/src/hello/hello.go
  4. 4 4
      bottle/app.py
  5. 1 1
      cake/deploy/nginx.conf
  6. 2 2
      compojure/benchmark_config
  7. 6 7
      compojure/hello/project.clj
  8. 12 11
      compojure/hello/src/hello/handler.clj
  9. 6 0
      config/benchmark_profile
  10. 2 2
      config/create-postgres.sql
  11. 1 1
      config/nginx_uwsgi.conf
  12. 2 3
      cowboy/benchmark_config
  13. 1 1
      cowboy/src/db_handler.erl
  14. 2 1
      cowboy/src/hello_world_app.erl
  15. 29 0
      cowboy/src/query_handler.erl
  16. 24 0
      cpoll_cppsp/cppsp_rel0.2.3/cppsp/stringutils.C
  17. 1 0
      cpoll_cppsp/setup.py
  18. 1 1
      cpoll_cppsp/www/json
  19. 7 2
      dancer/app.pl
  20. 1 1
      dancer/nginx.conf
  21. 3 3
      dart-start/server.dart
  22. 1 1
      dart-start/setup.py
  23. 1 1
      dart-stream/setup.py
  24. 1 1
      dart/server.dart
  25. 1 1
      dart/setup.py
  26. 1 0
      django/hello/templates/base.html
  27. 6 2
      django/hello/world/views.py
  28. 1 2
      dropwizard/src/main/java/com/example/helloworld/resources/WorldResource.java
  29. 2 3
      elli/benchmark_config
  30. 14 0
      elli/src/elli_bench_cb.erl
  31. 7 1
      express/app.js
  32. 3 3
      finagle/build.sbt
  33. 3 3
      flask/app.py
  34. 4 1
      flask/templates/fortunes.html
  35. BIN
      gemini/Docroot/WEB-INF/lib/mustache-compiler-0.8.0.jar
  36. BIN
      gemini/Docroot/WEB-INF/lib/mustache-compiler-0.8.13.jar
  37. 1 1
      gemini/source_code
  38. 0 0
      go/pkg/.gitkeep
  39. BIN
      go/pkg/linux_amd64/code.google.com/p/go.net/websocket.a
  40. BIN
      go/pkg/linux_amd64/github.com/coocood/qbs.a
  41. BIN
      go/pkg/linux_amd64/github.com/eaigner/jet.a
  42. BIN
      go/pkg/linux_amd64/github.com/go-sql-driver/mysql.a
  43. BIN
      go/pkg/linux_amd64/github.com/howeyc/fsnotify.a
  44. BIN
      go/pkg/linux_amd64/github.com/robfig/config.a
  45. BIN
      go/pkg/linux_amd64/github.com/robfig/pathtree.a
  46. BIN
      go/pkg/linux_amd64/github.com/robfig/revel.a
  47. BIN
      go/pkg/linux_amd64/github.com/robfig/revel/harness.a
  48. BIN
      go/pkg/linux_amd64/github.com/robfig/revel/modules/testrunner/app/controllers.a
  49. BIN
      go/pkg/linux_amd64/github.com/streadway/simpleuuid.a
  50. 1 0
      go/setup.py
  51. BIN
      go/src/code.google.com/p/go.net/.hg/00changelog.i
  52. 0 1
      go/src/code.google.com/p/go.net/.hg/branch
  53. 0 2
      go/src/code.google.com/p/go.net/.hg/cache/branchheads
  54. 0 2
      go/src/code.google.com/p/go.net/.hg/cache/tags
  55. BIN
      go/src/code.google.com/p/go.net/.hg/dirstate
  56. 0 2
      go/src/code.google.com/p/go.net/.hg/hgrc
  57. 0 4
      go/src/code.google.com/p/go.net/.hg/requires
  58. BIN
      go/src/code.google.com/p/go.net/.hg/store/00changelog.i
  59. BIN
      go/src/code.google.com/p/go.net/.hg/store/00manifest.i
  60. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/_a_u_t_h_o_r_s.i
  61. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/_c_o_n_t_r_i_b_u_t_o_r_s.i
  62. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/_l_i_c_e_n_s_e.i
  63. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/_p_a_t_e_n_t_s.i
  64. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/_r_e_a_d_m_e.i
  65. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/codereview.cfg.i
  66. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/dict/dict.go.i
  67. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/atom/atom.go.i
  68. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/atom/atom__test.go.i
  69. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/atom/gen.go.i
  70. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/atom/table.go.i
  71. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/atom/table__test.go.i
  72. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/const.go.i
  73. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/doc.go.i
  74. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/doctype.go.i
  75. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/entity.go.i
  76. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/entity__test.go.i
  77. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/escape.go.i
  78. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/escape__test.go.i
  79. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/example__test.go.i
  80. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/foreign.go.i
  81. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/node.go.i
  82. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/node__test.go.i
  83. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/parse.go.i
  84. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/parse__test.go.i
  85. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/render.go.i
  86. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/render__test.go.i
  87. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/go1.html.i
  88. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/_r_e_a_d_m_e.i
  89. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/adoption01.dat.i
  90. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/adoption02.dat.i
  91. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/comments01.dat.i
  92. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/doctype01.dat.i
  93. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/entities01.dat.i
  94. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/entities02.dat.i
  95. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/html5test-com.dat.i
  96. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/inbody01.dat.i
  97. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/isindex.dat.i
  98. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/pending-spec-changes-plain-text-unsafe.dat.i
  99. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/pending-spec-changes.dat.i
  100. BIN
      go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/plain-text-unsafe.dat.i

+ 2 - 1
.gitignore

@@ -67,4 +67,5 @@ benchmark.cfg
 *.war
 
 # go
-go/pkg/
+go/pkg/*
+beego/pkg/*

+ 1 - 1
aspnet/nginx.conf

@@ -1,6 +1,6 @@
 # worker_processes n;
 pid /tmp/nginx.pid;
-error_log /dev/null crit;
+error_log stderr error;
 
 events {
     worker_connections 8192;

+ 2 - 2
beego/src/hello/hello.go

@@ -6,7 +6,7 @@ import (
 )
 
 type MessageStruct struct {
-	Message string
+	Message string `json:"message"`
 }
 
 type JsonController struct {
@@ -14,7 +14,7 @@ type JsonController struct {
 }
 
 func (this *JsonController) Get() {
-	m := MessageStruct{"Hello, world"}
+	m := MessageStruct{"Hello, World!"}
 	this.Data["json"] = &m
 	this.ServeJson()
 }

+ 4 - 4
bottle/app.py

@@ -62,9 +62,9 @@ def get_random_world(db):
 @app.route("/dbs")
 def get_random_world_single(db):
     wid = randint(1, 10000)
-    worlds = [db.query(World).get(wid).serialize]
+    world = db.query(World).get(wid).serialize
     response.content_type = 'application/json'
-    return json.dumps(worlds)
+    return json.dumps(world)
   
 @app.route("/dbraw")
 def get_random_world_raw():
@@ -84,7 +84,7 @@ def get_random_world_single_raw():
     connection = db_engine.connect()
     wid = randint(1, 10000)
     result = connection.execute("SELECT * FROM world WHERE id = " + str(wid)).fetchone()
-    worlds = [{'id': result[0], 'randomNumber': result[1]}]
+    worlds = {'id': result[0], 'randomNumber': result[1]}
     connection.close()
     response.content_type = 'application/json'
     return json.dumps(worlds)
@@ -92,7 +92,7 @@ def get_random_world_single_raw():
 @app.route("/fortune")
 def fortune_orm(db):
   fortunes=db.query(Fortune).all()
-  fortunes.append(Fortune(message="Additional fortune added at request time."))
+  fortunes.append(Fortune(id=0, message="Additional fortune added at request time."))
   fortunes=sorted(fortunes, key=attrgetter('message'))
   return template('fortune-obj', fortunes=fortunes)
 

+ 1 - 1
cake/deploy/nginx.conf

@@ -1,6 +1,6 @@
 #user  nobody;
 worker_processes  8;
-error_log /dev/null crit;
+error_log stderr error;
 
 #error_log  logs/error.log;
 #error_log  logs/error.log  notice;

+ 2 - 2
compojure/benchmark_config

@@ -4,7 +4,7 @@
     "default": {
       "setup_file": "setup",
       "json_url": "/compojure/json",
-      "db_url": "/compojure/db/1",
+      "db_url": "/compojure/db",
       "query_url": "/compojure/db/",
       "fortune_url": "/compojure/fortune-hiccup",
       "plaintext_url": "/compojure/plaintext",
@@ -25,7 +25,7 @@
     },
     "raw": {
       "setup_file": "setup",
-      "db_url": "/compojure/dbraw/1",
+      "db_url": "/compojure/dbraw",
       "query_url": "/compojure/dbraw/",
       "port": 8080,
       "approach": "Realistic",

+ 6 - 7
compojure/hello/project.clj

@@ -1,18 +1,17 @@
 (defproject hello "compojure"
   :description "JSON/Database tests"
-  :url "http://example.com/FIXME"
+  :url "http://localhost:3000/"
   :dependencies [[org.clojure/clojure "1.5.1"]
-                 [compojure "1.1.5"]
+                 [compojure "1.1.6"]
                  [ring/ring-json "0.2.0"]
-                 [korma "0.3.0-RC5"]
+                 [korma "0.3.0-RC6"]
                  [log4j "1.2.15" :exclusions [javax.mail/mail javax.jms/jms com.sun.jdmk/jmxtools com.sun.jmx/jmxri]]
                  [mysql/mysql-connector-java "5.1.6"]
                  [org.clojure/java.jdbc "0.3.0-alpha1"]
                  [c3p0/c3p0 "0.9.1.2"]
-                 [hiccup "1.0.3"]
-                 [enlive "1.1.1"]
+                 [hiccup "1.0.4"]
                  ]
-  :plugins [[lein-ring "0.8.2"]]
+  :plugins [[lein-ring "0.8.10"]]
   :ring {:handler hello.handler/app}
   :profiles
-  {:dev {:dependencies [[ring-mock "0.1.3"]]}})
+  {:dev {:dependencies [[ring-mock "0.1.5"]]}})

+ 12 - 11
compojure/hello/src/hello/handler.clj

@@ -6,12 +6,12 @@
         korma.db
         korma.core
         hiccup.core
-        hiccup.util)
+        hiccup.util
+        hiccup.page)
   (:require [compojure.handler :as handler]
             [compojure.route :as route]
             [clojure.java.jdbc :as jdbc]
-            [clojure.java.jdbc.sql :as sql]
-            [net.cgrand.enlive-html :as html]))
+            [clojure.java.jdbc.sql :as sql]))
 
 ; Database connection
 (defdb db (mysql {:subname "//localhost: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"
@@ -38,11 +38,10 @@
 
 ; Run the specified number of queries, return the results
 (defn run-queries [queries]
-  (vec ; Return as a vector
    (flatten ; Make it a list of maps
     (take
      queries ; Number of queries to run
-     (repeatedly get-world)))))
+     (repeatedly get-world))))
 
 ; Database connection for java.jdbc "raw"
 ; https://github.com/clojure/java.jdbc/blob/master/doc/clojure/java/jdbc/ConnectionPooling.md
@@ -74,16 +73,17 @@
 (defn get-world-raw []
   (let [id (inc (rand-int 9999))] ; Num between 1 and 10,000
     (jdbc/with-connection (db-raw)
-      (jdbc/with-query-results rs [(str "select * from world where id = ?") id]
-        (doall rs)))))
+      ; Set a naming strategy to preserve column name case
+      (jdbc/with-naming-strategy {:keyword identity}
+        (jdbc/with-query-results rs [(str "select * from world where id = ?") id]
+          (doall rs))))))
 
 ; Run the specified number of queries, return the results
 (defn run-queries-raw [queries]
-  (vec ; Return as a vector
    (flatten ; Make it a list of maps
     (take
      queries ; Number of queries to run
-     (repeatedly get-world-raw)))))
+     (repeatedly get-world-raw))))
 
 (defn get-query-count [queries]
   "Parse provided string value of query count, clamping values to between 1 and 500."
@@ -95,7 +95,6 @@
         1 ; clamp to 1 min
         q)))) ; otherwise use provided value
 
-
 ; Set up entity World and the database representation
 (defentity fortune
   (pk :id)
@@ -116,7 +115,7 @@ message text, and then return the results."
 
 (defn fortunes-hiccup [fortunes]
   "Render the given fortunes to simple HTML using Hiccup."
-  (html
+  (html5
    [:head
     [:title "Fortunes"]]
    [:body
@@ -142,7 +141,9 @@ message text, and then return the results."
         :headers {"Content-Type" "text/plain; charset=utf-8"}
         :body "Hello, World!"})
   (GET "/json" [] (response {:message "Hello, World!"}))
+  (GET "/db" [] (response (first (run-queries 1))))
   (GET "/db/:queries" [queries] (response (run-queries (get-query-count queries))))
+  (GET "/dbraw" [] (response (first (run-queries-raw 1))))
   (GET "/dbraw/:queries" [queries] (response (run-queries-raw (get-query-count queries))))
   (GET "/fortune" [] (response (get-fortunes)))
   (GET "/fortune-hiccup" [] (fortunes-hiccup (get-fortunes)))

+ 6 - 0
config/benchmark_profile

@@ -17,4 +17,10 @@ export PATH="$JAVA_HOME/bin:$GRAILS_HOME/bin:$PLAY_HOME:$PLAY1_HOME:$VERTX_HOME/
 
 export LD_LIBRARY_PATH='$LD_LIBRARY_PATH:/usr/local/apr/lib'
 
+export TFB_SERVER_HOST=172.16.98.122'
+export TFB_CLIENT_HOST='172.16.98.98'
+export TFB_CLIENT_USER='tfb'
+export TFB_CLIENT_IDENTITY_FILE='/home/tfb/.ssh/id_rsa-tfb-1'
+export TFB_DATABASE_HOST='172.16.98.118'
+
 source ~/.rvm/scripts/'rvm'

+ 2 - 2
config/create-postgres.sql

@@ -2,11 +2,11 @@
 DROP TABLE IF EXISTS World;
 CREATE TABLE  World (
   id integer NOT NULL,
-  "randomNumber" integer NOT NULL default 0,
+  randomnumber integer NOT NULL default 0,
   PRIMARY KEY  (id)
 );
 
-INSERT INTO World (id, randomNumber)
+INSERT INTO World (id, randomnumber)
 SELECT x.id, random() * 10000 + 1 FROM generate_series(1,10000) as x(id);
 
 DROP TABLE IF EXISTS Fortune;

+ 1 - 1
config/nginx_uwsgi.conf

@@ -2,7 +2,7 @@
 
 # One worker process per core
 worker_processes auto;
-error_log /dev/null crit;
+error_log stderr error;
 
 events {
     # This needed to be increased because the nginx error log said so.

+ 2 - 3
cowboy/benchmark_config

@@ -5,7 +5,7 @@
       "setup_file": "setup_erlang",
       "json_url": "/json",
       "db_url": "/db",
-      "query_url": "/db?queries=",
+      "query_url": "/query?queries=",
       "port": 8080,
       "approach": "Realistic",
       "classification": "Platform",
@@ -19,7 +19,6 @@
       "database_os": "Linux",
       "display_name": "cowboy",
       "notes": "",
-      "versus": "",
-      "skip": "true"
+      "versus": ""
   }}]
 }

+ 1 - 1
cowboy/src/db_handler.erl

@@ -22,7 +22,7 @@ handle(Req, State) ->
 			        {result_packet, _, _, [[ID, Rand]], _} <- [emysql:execute(test_pool, db_stmt, [random:uniform(10000)]) || _ <- lists:seq(1, I) ]],
 			{Res, Req1}
 		end,
-	{ok, Req3} = cowboy_req:reply(200, [{<<"Content-Type">>, <<"application/json">>}], jiffy:encode(JSON), Req2),
+	{ok, Req3} = cowboy_req:reply(200, [{<<"Content-Type">>, <<"application/json">>}], jiffy:encode(lists:nth(1,JSON)), Req2),
 	{ok, Req3, State}.
 
 terminate(_Reason, _Req, _State) ->

+ 2 - 1
cowboy/src/hello_world_app.erl

@@ -20,7 +20,8 @@ start(_Type, _Args) ->
 	Dispatch = cowboy_router:compile([
 		{'_', [
 			{"/json", json_handler, []},
-			{"/db", db_handler, []}
+			{"/db", db_handler, []},
+      {"/query", query_handler, []}
 		]}
 	]),
 	{ok, _} = cowboy:start_http(http, 5000, [{port, 8080}], [

+ 29 - 0
cowboy/src/query_handler.erl

@@ -0,0 +1,29 @@
+%% Feel free to use, reuse and abuse the code in this file.
+
+%% @doc Hello world handler.
+-module(query_handler).
+
+-export([init/3]).
+-export([handle/2]).
+-export([terminate/3]).
+
+init(_Transport, Req, []) ->
+  {ok, Req, undefined}.
+
+handle(Req, State) ->
+        random:seed(erlang:now()),
+        {JSON, Req2} = case cowboy_req:qs_val(<<"queries">>, Req) of
+    {undefined, Req1} ->
+      {result_packet, _, _, [[ID, Rand]], _} = emysql:execute(test_pool, db_stmt, [random:uniform(10000)]),
+      {[{[{<<"id">>, ID}, {<<"randomNumber">>, Rand}]}], Req1};
+    {N, Req1} ->
+      I = list_to_integer(binary_to_list(N)),
+      Res = [ {[{<<"id">>, ID}, {<<"randomNumber">>, Rand}]} || 
+              {result_packet, _, _, [[ID, Rand]], _} <- [emysql:execute(test_pool, db_stmt, [random:uniform(10000)]) || _ <- lists:seq(1, I) ]],
+      {Res, Req1}
+    end,
+  {ok, Req3} = cowboy_req:reply(200, [{<<"Content-Type">>, <<"application/json">>}], jiffy:encode(JSON), Req2),
+  {ok, Req3, State}.
+
+terminate(_Reason, _Req, _State) ->
+  ok.

+ 24 - 0
cpoll_cppsp/cppsp_rel0.2.3/cppsp/stringutils.C

@@ -182,6 +182,12 @@ namespace cppsp
 				case '>':
 					sz += 4;
 					break;
+				case '"':
+				  sz += 6;
+				  break;
+				case '\'':
+					sz += 6;
+					break;
 				default:
 					sz++;
 					break;
@@ -214,6 +220,24 @@ namespace cppsp
 					c[3] = ';';
 					c += 4;
 					break;
+				case '"':
+					c[0] = '&';
+					c[1] = 'q';
+					c[2] = 'u';
+					c[3] = 'o';
+					c[4] = 't';
+					c[5] = ';';
+					c += 6;
+					break;
+				case '\'':
+					c[0] = '&';
+					c[1] = 'a';
+					c[2] = 'p';
+					c[3] = 'o';
+					c[4] = 's';
+					c[5] = ';';
+					c += 6;
+					break;
 				default:
 					*(c++) = in[i];
 			}

+ 1 - 0
cpoll_cppsp/setup.py

@@ -5,6 +5,7 @@ import setup_util
 
 def start(args, logfile, errfile):
   setup_util.replace_text("cpoll_cppsp/www/connectioninfo.H", "\\#define BENCHMARK_DB_HOST \".*\"", "#define BENCHMARK_DB_HOST \"" + args.database_host + "\"")
+  subprocess.check_call("make clean", shell=True, cwd="cpoll_cppsp", stderr=errfile, stdout=logfile)
   subprocess.check_call("make", shell=True, cwd="cpoll_cppsp", stderr=errfile, stdout=logfile)
   subprocess.Popen("./run_application \"$(pwd)\"/www -g g++-4.8 -m /forcedynamic.cppsm", shell=True, cwd="cpoll_cppsp", stderr=errfile, stdout=logfile);
   return 0

+ 1 - 1
cpoll_cppsp/www/json

@@ -8,7 +8,7 @@ int64_t fib(int64_t n){
 %><%
 
 json_object *hello=json_object_new_object();
-json_object_object_add(hello, "message", json_object_new_string("Hello, world"));
+json_object_object_add(hello, "message", json_object_new_string("Hello, World!"));
 
 const char *hello_str=json_object_to_json_string(hello);
 

+ 7 - 2
dancer/app.pl

@@ -22,8 +22,13 @@ get '/db' => sub {
         my $id = int rand 10000 + 1;
         $sth->execute($id);
         if ( my $row = $sth->fetchrow_hashref ) {
-            push @response,
-              { id => $id, randomNumber => $row->{randomNumber} };
+            if ( $queries == 1 ) {
+                return { id => $id, randomNumber => $row->{randomNumber} };
+            }
+            else {
+                push @response,
+                  { id => $id, randomNumber => $row->{randomNumber} };
+            }
         }
     }
     return \@response;

+ 1 - 1
dancer/nginx.conf

@@ -1,5 +1,5 @@
 user tfb;
-error_log /dev/null crit;
+error_log stderr error;
 
 worker_processes 2;
 

+ 3 - 3
dart-start/server.dart

@@ -50,7 +50,7 @@ class World {
 
   World(this.id, this.randomnumber);
 
-  toJson() => { "id": id, "randomnumber": randomnumber };
+  toJson() => { "id": id, "randomNumber": randomnumber };
 }
 
 main(List<String> args) {
@@ -225,7 +225,7 @@ main(List<String> args) {
           _mongoQuery().then((data) {
             request.response.json({
               "id": data["_id"],
-              "randomnumber": data["randomNumber"]
+              "randomNumber": data["randomNumber"]
             });
           });
         });
@@ -248,7 +248,7 @@ main(List<String> args) {
               var results = response.map((world) {
                 return {
                   "id": world["_id"],
-                  "randomnumber": world["randomNumber"]
+                  "randomNumber": world["randomNumber"]
                 };
               });
               request.response.send(JSON.encode(results.toList()));

+ 1 - 1
dart-start/setup.py

@@ -21,7 +21,7 @@ def start(args, logfile, errfile):
     #
     conf = []
     conf.append('worker_processes ' + str(args.max_threads) + ';')
-    conf.append('error_log /dev/null crit;')
+    conf.append('error_log /dev/null error;')
     conf.append('events {')
     conf.append('    worker_connections 1024;')
     conf.append('}')

+ 1 - 1
dart-stream/setup.py

@@ -21,7 +21,7 @@ def start(args, logfile, errfile):
     #
     conf = []
     conf.append('worker_processes ' + str(args.max_threads) + ';')
-    conf.append('error_log /dev/null crit;')
+    conf.append('error_log /dev/null error;')
     conf.append('events {')
     conf.append('    worker_connections 1024;')
     conf.append('}')

+ 1 - 1
dart/server.dart

@@ -32,7 +32,7 @@ class World {
 
   World(this.id, this.randomnumber);
 
-  toJson() => { 'id': id, 'randomnumber': randomnumber };
+  toJson() => { 'id': id, 'randomNumber': randomnumber };
 }
 
 /// The entity used in the fortunes test.

+ 1 - 1
dart/setup.py

@@ -20,7 +20,7 @@ def start(args, logfile, errfile):
     #
     conf = []
     conf.append('worker_processes ' + str(args.max_threads) + ';')
-    conf.append('error_log /dev/null crit;')
+    conf.append('error_log stderr error;')
     conf.append('events {')
     conf.append('    worker_connections 1024;')
     conf.append('}')

+ 1 - 0
django/hello/templates/base.html

@@ -1,6 +1,7 @@
 <!DOCTYPE html>
 <html>
 <head>
+<title>Fortunes</title>
 </head>
 <body>
   {% block content %}{% endblock %}

+ 6 - 2
django/hello/world/views.py

@@ -43,12 +43,16 @@ def db(request):
   # by creating dicts, we don't need to user the model serializer, which is probably slow and only appropriate
   # for complicated serializations of joins and crazy query sets etc
   # test xrange vs range if the query number is gigantic
-  worlds = uj_dumps([{'id' : r, 'randomNumber' : g(id=r).randomnumber} for r in [rp() for q in xrange(queries)]])  
+  if queries == 1:
+    r = random.randint(1,10000)
+    worlds = uj_dumps({'id' : r, 'randomNumber' : g(id=r).randomnumber})
+  else:
+    worlds = uj_dumps([{'id' : r, 'randomNumber' : g(id=r).randomnumber} for r in [rp() for q in xrange(queries)]])
   return HttpResponse(worlds, mimetype="application/json")
 
 def fortunes(request):
   fortunes = list(Fortune.objects.all())
-  fortunes.append(Fortune(id=0, message="Additional message added at runtime."))
+  fortunes.append(Fortune(id=0, message="Additional fortune added at request time."))
 
   fortunes = sorted(fortunes, key=attrgetter('message'))
 

+ 1 - 2
dropwizard/src/main/java/com/example/helloworld/resources/WorldResource.java

@@ -1,4 +1,3 @@
-
 package com.example.helloworld.resources;
 
 import java.util.Random;
@@ -35,7 +34,7 @@ public class WorldResource
 
     for (int i = 0; i < totalQueries; i++)
     {
-      worlds[i] = this.worldDAO.findById((long)random.nextInt(10000)).orNull();
+      worlds[i] = this.worldDAO.findById((long)(random.nextInt(10000) + 1)).orNull();
     }
     return worlds;
   }

+ 2 - 3
elli/benchmark_config

@@ -5,7 +5,7 @@
       "setup_file": "setup_erlang",
       "json_url": "/json",
       "db_url": "/db",
-      "query_url": "/db?queries=",
+      "query_url": "/query?queries=",
       "port": 8080,
       "approach": "Realistic",
       "classification": "Platform",
@@ -19,7 +19,6 @@
       "database_os": "Linux",
       "display_name": "elli",
       "notes": "",
-      "versus": "",
-      "skip": "true"
+      "versus": ""
   }}]
 }

+ 14 - 0
elli/src/elli_bench_cb.erl

@@ -25,6 +25,20 @@ handle('GET',[<<"db">>], Req) ->
 			        {result_packet, _, _, [[ID, Rand]], _} <- [emysql:execute(test_pool, db_stmt, [random:uniform(10000)]) || _ <- lists:seq(1, I) ]],
 			Res
 		end,
+    {ok, [{<<"Content-Type">>, <<"application/json">>}], jiffy:encode(lists:nth(1,JSON))};
+
+handle('GET',[<<"query">>], Req) ->
+        random:seed(erlang:now()),
+        JSON = case elli_request:get_arg(<<"queries">>, Req) of
+        undefined ->
+            {result_packet, _, _, [[ID, Rand]], _} = emysql:execute(test_pool, db_stmt, [random:uniform(10000)]),
+            [{[{<<"id">>, ID}, {<<"randomNumber">>, Rand}]}];
+        N ->
+            I = list_to_integer(binary_to_list(N)),
+            Res = [ {[{<<"id">>, ID}, {<<"randomNumber">>, Rand}]} || 
+                    {result_packet, _, _, [[ID, Rand]], _} <- [emysql:execute(test_pool, db_stmt, [random:uniform(10000)]) || _ <- lists:seq(1, I) ]],
+            Res
+        end,
     {ok, [{<<"Content-Type">>, <<"application/json">>}], jiffy:encode(JSON)};
 
 handle(_, _, _Req) ->

+ 7 - 1
express/app.js

@@ -61,7 +61,7 @@ if (cluster.isMaster) {
   // Routes
 
   app.get('/json', function(req, res) {
-    res.send({ message: 'Hello World!' })
+    res.send({ message: 'Hello, World!' })
   });
   
   app.get('/mongoose', function(req, res) {
@@ -79,6 +79,9 @@ if (cluster.isMaster) {
     }
 
     async.parallel(queryFunctions, function(err, results) {
+      if (queries == 1) {
+        worlds = worlds[0];
+      }
       res.send(worlds);
     });
   });
@@ -100,6 +103,9 @@ if (cluster.isMaster) {
     }
 
     async.parallel(queryFunctions, function(err, results) {
+      if (queries == 1) {
+        worlds = worlds[0];
+      }
       res.send(worlds);
     });
   });

+ 3 - 3
finagle/build.sbt

@@ -2,7 +2,7 @@ name := "finagle"
 
 organization := "com.falmarri"
 
-scalaVersion := "2.10.0"
+scalaVersion := "2.10.3"
 
 version := "1.0"
 
@@ -10,5 +10,5 @@ libraryDependencies ++= Seq(
                 "com.twitter" %% "finagle-http" % "6.+",
                 "com.twitter" %% "finagle-mysql" % "6.+",
                 "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.+",
-		"com.fasterxml.jackson.core" % "jackson-databind" % "2.2.1"
-                )
+				"com.fasterxml.jackson.core" % "jackson-databind" % "2.3.0"
+            )

+ 3 - 3
flask/app.py

@@ -6,7 +6,7 @@ from random import randint
 import sys
 
 import flask
-from flask import Flask, request, render_template, make_response
+from flask import Flask, request, render_template, make_response, jsonify
 from flask.ext.sqlalchemy import SQLAlchemy
 from sqlalchemy import create_engine
 
@@ -75,7 +75,7 @@ def get_random_world():
 @app.route("/dbs")
 def get_random_world_single():
     wid = randint(1, 10000)
-    worlds = [World.query.get(wid).serialize]
+    worlds = World.query.get(wid).serialize
     return json_response(worlds)
 
 
@@ -97,7 +97,7 @@ def get_random_world_single_raw():
     connection = dbraw_engine.connect()
     wid = randint(1, 10000)
     result = connection.execute("SELECT * FROM World WHERE id = " + str(wid)).fetchone()
-    worlds = [{'id': result[0], 'randomNumber': result[1]}]
+    worlds = {'id': result[0], 'randomNumber': result[1]}
     connection.close()
     return json_response(worlds)
 

+ 4 - 1
flask/templates/fortunes.html

@@ -1,5 +1,8 @@
 <!DOCTYPE html>
-<html><head></head>
+<html>
+<head>
+<title>Fortunes</title>
+</head>
 <body>
 <table>
 <tr>

BIN
gemini/Docroot/WEB-INF/lib/mustache-compiler-0.8.0.jar


BIN
gemini/Docroot/WEB-INF/lib/mustache-compiler-0.8.13.jar


+ 1 - 1
gemini/source_code

@@ -24,7 +24,7 @@
 ./gemini/Docroot/WEB-INF/lib
 ./gemini/Docroot/WEB-INF/lib/kryonet-1.04-all.jar
 ./gemini/Docroot/WEB-INF/lib/mysql-connector-java-5.1.23-bin.jar
-./gemini/Docroot/WEB-INF/lib/mustache-compiler-0.8.0.jar
+./gemini/Docroot/WEB-INF/lib/mustache-compiler-0.8.13.jar
 ./gemini/Docroot/WEB-INF/lib/mail.jar
 ./gemini/Docroot/WEB-INF/lib/activation.jar
 ./gemini/Docroot/WEB-INF/lib/guava-14.0.1.jar

+ 0 - 0
go/pkg/.gitkeep


BIN
go/pkg/linux_amd64/code.google.com/p/go.net/websocket.a


BIN
go/pkg/linux_amd64/github.com/coocood/qbs.a


BIN
go/pkg/linux_amd64/github.com/eaigner/jet.a


BIN
go/pkg/linux_amd64/github.com/go-sql-driver/mysql.a


BIN
go/pkg/linux_amd64/github.com/howeyc/fsnotify.a


BIN
go/pkg/linux_amd64/github.com/robfig/config.a


BIN
go/pkg/linux_amd64/github.com/robfig/pathtree.a


BIN
go/pkg/linux_amd64/github.com/robfig/revel.a


BIN
go/pkg/linux_amd64/github.com/robfig/revel/harness.a


BIN
go/pkg/linux_amd64/github.com/robfig/revel/modules/testrunner/app/controllers.a


BIN
go/pkg/linux_amd64/github.com/streadway/simpleuuid.a


+ 1 - 0
go/setup.py

@@ -12,6 +12,7 @@ def start(args, logfile, errfile):
     subprocess.call("set GOPATH=C:\\FrameworkBenchmarks\\go&& go get ./...", shell=True, cwd="go", stderr=errfile, stdout=logfile)
     subprocess.Popen("setup.bat", shell=True, cwd="go", stderr=errfile, stdout=logfile) 
     return 0
+  os.environ["GOPATH"] = os.path.expanduser('~/FrameworkBenchmarks/go')
   subprocess.call("go get ./...", shell=True, cwd="go", stderr=errfile, stdout=logfile) 
   subprocess.Popen("go run src/hello/hello.go".rsplit(" "), cwd="go", stderr=errfile, stdout=logfile)
   return 0

BIN
go/src/code.google.com/p/go.net/.hg/00changelog.i


+ 0 - 1
go/src/code.google.com/p/go.net/.hg/branch

@@ -1 +0,0 @@
-default

+ 0 - 2
go/src/code.google.com/p/go.net/.hg/cache/branchheads

@@ -1,2 +0,0 @@
-d6167d29456ccb4d1ac0e774631589202a411c8a 82
-d6167d29456ccb4d1ac0e774631589202a411c8a default

+ 0 - 2
go/src/code.google.com/p/go.net/.hg/cache/tags

@@ -1,2 +0,0 @@
-82 d6167d29456ccb4d1ac0e774631589202a411c8a
-

BIN
go/src/code.google.com/p/go.net/.hg/dirstate


+ 0 - 2
go/src/code.google.com/p/go.net/.hg/hgrc

@@ -1,2 +0,0 @@
-[paths]
-default = https://code.google.com/p/go.net

+ 0 - 4
go/src/code.google.com/p/go.net/.hg/requires

@@ -1,4 +0,0 @@
-revlogv1
-fncache
-store
-dotencode

BIN
go/src/code.google.com/p/go.net/.hg/store/00changelog.i


BIN
go/src/code.google.com/p/go.net/.hg/store/00manifest.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/_a_u_t_h_o_r_s.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/_c_o_n_t_r_i_b_u_t_o_r_s.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/_l_i_c_e_n_s_e.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/_p_a_t_e_n_t_s.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/_r_e_a_d_m_e.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/codereview.cfg.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/dict/dict.go.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/atom/atom.go.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/atom/atom__test.go.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/atom/gen.go.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/atom/table.go.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/atom/table__test.go.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/const.go.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/doc.go.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/doctype.go.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/entity.go.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/entity__test.go.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/escape.go.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/escape__test.go.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/example__test.go.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/foreign.go.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/node.go.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/node__test.go.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/parse.go.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/parse__test.go.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/render.go.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/render__test.go.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/go1.html.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/_r_e_a_d_m_e.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/adoption01.dat.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/adoption02.dat.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/comments01.dat.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/doctype01.dat.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/entities01.dat.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/entities02.dat.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/html5test-com.dat.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/inbody01.dat.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/isindex.dat.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/pending-spec-changes-plain-text-unsafe.dat.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/pending-spec-changes.dat.i


BIN
go/src/code.google.com/p/go.net/.hg/store/data/html/testdata/webkit/plain-text-unsafe.dat.i


Some files were not shown because too many files changed in this diff