Browse Source

Refactor benchmark_configs

This is a work in progress.

1. Add more attributes to each test, which will be use to drive the
   filter and meta attributes for frameworks on the results website.
2. Add "database os" attribute to each test, so that the benchmarker can
   know which tests should be executed in a given hardware configuration.
   (See servicestack for an example of four different Windows/Linux
   combinations.)
3. Remove "sort" attribute from all tests.  This was used as a unique
   identifier for tests to attach their results to the meta data on the
   results website.  Now that the meta data comes from the tests
   themselves, this is unnecessary.  (Besides, we already had unique IDs
   for each test without a "sort":  the tests' names.)
4. Separate notion of "database server" and "client" for the installer.
   Previously, it would attempt to install all db and client software on
   the same machine.
Michael Hixson 12 years ago
parent
commit
7ed73e78a9
100 changed files with 2580 additions and 326 deletions
  1. 65 10
      HttpListener/benchmark_config
  2. 65 10
      aspnet-stripped/benchmark_config
  3. 234 28
      aspnet/benchmark_config
  4. 13 1
      beego/benchmark_config
  5. 52 4
      bottle/benchmark_config
  6. 13 1
      cake/benchmark_config
  7. 26 2
      compojure/benchmark_config
  8. 0 0
      config/database_sftp_batch
  9. 13 1
      cowboy/benchmark_config
  10. 53 5
      cpoll_cppsp/benchmark_config
  11. 26 2
      dancer/benchmark_config
  12. 26 2
      dart-start/benchmark_config
  13. 26 2
      dart-stream/benchmark_config
  14. 13 1
      dart/benchmark_config
  15. 39 3
      django/benchmark_config
  16. 23 11
      dropwizard/benchmark_config
  17. BIN
      elli/.benchmark_config.swp
  18. 13 1
      elli/benchmark_config
  19. 39 3
      express/benchmark_config
  20. 39 3
      falcon/benchmark_config
  21. 13 1
      falcore/benchmark_config
  22. 23 13
      finagle/benchmark_config
  23. 65 5
      flask/benchmark_config
  24. 13 1
      gemini/benchmark_config
  25. 13 1
      go/benchmark_config
  26. 13 1
      grails/benchmark_config
  27. 13 1
      grizzly-bm/benchmark_config
  28. 13 1
      grizzly-jersey/benchmark_config
  29. 39 3
      hapi/benchmark_config
  30. 13 1
      http-kit/benchmark_config
  31. 13 1
      jester/benchmark_config
  32. 26 2
      kelp/benchmark_config
  33. 13 1
      lapis/benchmark_config
  34. 13 1
      lift-stateless/benchmark_config
  35. 26 2
      luminus/benchmark_config
  36. 26 2
      mojolicious/benchmark_config
  37. 26 3
      nancy/benchmark_config
  38. 13 1
      netty/benchmark_config
  39. 65 5
      nodejs/benchmark_config
  40. 26 2
      onion/benchmark_config
  41. 13 1
      openresty/benchmark_config
  42. 26 2
      php-codeigniter/benchmark_config
  43. 13 1
      php-fuel/benchmark_config
  44. 26 2
      php-kohana/benchmark_config
  45. 26 2
      php-laravel/benchmark_config
  46. 13 1
      php-lithium/benchmark_config
  47. 13 1
      php-micromvc/benchmark_config
  48. 13 1
      php-phalcon-micro/benchmark_config
  49. 13 1
      php-phalcon/benchmark_config
  50. 13 1
      php-phpixie/benchmark_config
  51. 13 1
      php-silex-orm/benchmark_config
  52. 26 2
      php-silex/benchmark_config
  53. 13 1
      php-silica/benchmark_config
  54. 13 1
      php-slim/benchmark_config
  55. 39 3
      php-symfony2/benchmark_config
  56. 13 1
      php-yaf/benchmark_config
  57. 26 2
      php/benchmark_config
  58. 13 1
      phreeze/benchmark_config
  59. 13 1
      plack/benchmark_config
  60. 26 15
      plain/benchmark_config
  61. 13 1
      play-java-jpa/benchmark_config
  62. 13 1
      play-java/benchmark_config
  63. 13 1
      play-scala-mongodb/benchmark_config
  64. 13 1
      play-scala/benchmark_config
  65. 13 1
      play-slick/benchmark_config
  66. 13 1
      play1/benchmark_config
  67. 13 1
      play1siena/benchmark_config
  68. 26 2
      rack/benchmark_config
  69. 13 1
      racket-ws/benchmark_config
  70. 26 2
      rails-stripped/benchmark_config
  71. 26 2
      rails/benchmark_config
  72. 39 3
      restexpress/benchmark_config
  73. 13 1
      revel-jet/benchmark_config
  74. 13 1
      revel-qbs/benchmark_config
  75. 13 1
      revel/benchmark_config
  76. 14 2
      ringojs-convenient/benchmark_config
  77. 26 2
      ringojs/benchmark_config
  78. 26 2
      scalatra/benchmark_config
  79. 156 16
      servicestack/benchmark_config
  80. 39 3
      servlet/benchmark_config
  81. 26 2
      sinatra/benchmark_config
  82. 13 1
      snap/benchmark_config
  83. 13 1
      spark/benchmark_config
  84. 22 11
      spray/benchmark_config
  85. 13 1
      spring/benchmark_config
  86. 13 1
      tapestry/benchmark_config
  87. 64 37
      toolset/benchmark/benchmarker.py
  88. 13 4
      toolset/benchmark/framework_test.py
  89. 10 6
      toolset/run-tests.py
  90. 57 22
      toolset/setup/linux/installer.py
  91. 39 3
      tornado/benchmark_config
  92. 13 1
      treefrog/benchmark_config
  93. 52 4
      undertow/benchmark_config
  94. 13 1
      unfiltered/benchmark_config
  95. 13 1
      uwsgi/benchmark_config
  96. 13 1
      vertx/benchmark_config
  97. 13 1
      wai/benchmark_config
  98. 26 2
      web-simple/benchmark_config
  99. 13 1
      webgo/benchmark_config
  100. 13 1
      wicket/benchmark_config

+ 65 - 10
HttpListener/benchmark_config

@@ -3,51 +3,106 @@
   "tests": [{
   "tests": [{
     "default": {
     "default": {
       "setup_file": "setup",
       "setup_file": "setup",
-      "os": "nt",
       "json_url": "/json",
       "json_url": "/json",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 150
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "",
+      "framework": "http-listener",
+      "language": "C#",
+      "orm": "",
+      "platform": "",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "",
+      "display_name": "http-listener",
+      "notes": "",
+      "versus": ""
     },
     },
     "mysql-raw": {
     "mysql-raw": {
       "setup_file": "setup",
       "setup_file": "setup",
-      "os": "nt",
       "db_url": "/db?provider=mysql",
       "db_url": "/db?provider=mysql",
       "query_url": "/db?provider=mysql&queries=",
       "query_url": "/db?provider=mysql&queries=",
       "fortune_url": "/fortunes?provider=mysql",
       "fortune_url": "/fortunes?provider=mysql",
       "update_url": "/updates?provider=mysql&queries=",
       "update_url": "/updates?provider=mysql&queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 151
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "http-listener",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "Linux",
+      "display_name": "http-listener",
+      "notes": "",
+      "versus": "http-listener"
     },
     },
     "postgresql-raw": {
     "postgresql-raw": {
       "setup_file": "setup",
       "setup_file": "setup",
-      "os": "nt",
       "db_url": "/db?provider=postgresql",
       "db_url": "/db?provider=postgresql",
       "query_url": "/db?provider=postgresql&queries=",
       "query_url": "/db?provider=postgresql&queries=",
       "fortune_url": "/fortunes?provider=postgresql",
       "fortune_url": "/fortunes?provider=postgresql",
       "update_url": "/updates?provider=postgresql&queries=",
       "update_url": "/updates?provider=postgresql&queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 152
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "Postgres",
+      "framework": "http-listener",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": "http-listener"
     },
     },
     "mongodb-raw": {
     "mongodb-raw": {
       "setup_file": "setup",
       "setup_file": "setup",
-      "os": "nt",
       "db_url": "/mongodbdb",
       "db_url": "/mongodbdb",
       "query_url": "/mongodbdb?queries=",
       "query_url": "/mongodbdb?queries=",
       "fortune_url": "/mongodbfortunes",
       "fortune_url": "/mongodbfortunes",
       "update_url": "/mongodbupdates?queries=",
       "update_url": "/mongodbupdates?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 153
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MongoDB",
+      "framework": "http-listener",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": "http-listener"
     },
     },
     "sqlserver-raw": {
     "sqlserver-raw": {
       "setup_file": "setup",
       "setup_file": "setup",
-      "os": "nt",
       "db_url": "/db?provider=sqlserver",
       "db_url": "/db?provider=sqlserver",
       "query_url": "/db?provider=sqlserver&queries=",
       "query_url": "/db?provider=sqlserver&queries=",
       "fortune_url": "/fortunes?provider=sqlserver",
       "fortune_url": "/fortunes?provider=sqlserver",
       "update_url": "/updates?provider=sqlserver&queries=",
       "update_url": "/updates?provider=sqlserver&queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 154
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "SQLServer",
+      "framework": "http-listener",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "IIS",
+      "webserver": "",
+      "os": "Windows",
+      "database_os": "Windows",
+      "display_name": "http-listener",
+      "notes": "",
+      "versus": "http-listener"
     }
     }
   }]
   }]
 }
 }

+ 65 - 10
aspnet-stripped/benchmark_config

@@ -3,51 +3,106 @@
   "tests": [{
   "tests": [{
     "default": {
     "default": {
       "setup_file": "setup_iis",
       "setup_file": "setup_iis",
-      "os": "nt",
       "json_url": "/json",
       "json_url": "/json",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 309
+      "approach": "Stripped",
+      "classification": "Fullstack",
+      "database": "",
+      "framework": "aspnet",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "NET",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "",
+      "display_name": "",
+      "notes": "",
+      "versus": ""
     },
     },
     "mysql-raw": {
     "mysql-raw": {
       "setup_file": "setup_iis",
       "setup_file": "setup_iis",
-      "os": "nt",
       "db_url": "/db?provider=mysql",
       "db_url": "/db?provider=mysql",
       "query_url": "/db?provider=mysql&queries=",
       "query_url": "/db?provider=mysql&queries=",
       "fortune_url": "/fortunes?provider=mysql",
       "fortune_url": "/fortunes?provider=mysql",
       "update_url": "/updates?provider=mysql&queries=",
       "update_url": "/updates?provider=mysql&queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 310
+      "approach": "Stripped",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "aspnet",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "NET",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": ""
     },
     },
     "postgresql-raw": {
     "postgresql-raw": {
       "setup_file": "setup_iis",
       "setup_file": "setup_iis",
-      "os": "nt",
       "db_url": "/db?provider=postgresql",
       "db_url": "/db?provider=postgresql",
       "query_url": "/db?provider=postgresql&queries=",
       "query_url": "/db?provider=postgresql&queries=",
       "fortune_url": "/fortunes?provider=postgresql",
       "fortune_url": "/fortunes?provider=postgresql",
       "update_url": "/updates?provider=postgresql&queries=",
       "update_url": "/updates?provider=postgresql&queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 311
+      "approach": "Stripped",
+      "classification": "Fullstack",
+      "database": "Postgres",
+      "framework": "aspnet",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "NET",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": ""
     },
     },
     "mongodb-raw": {
     "mongodb-raw": {
       "setup_file": "setup_iis",
       "setup_file": "setup_iis",
-      "os": "nt",
       "db_url": "/mongodbdb",
       "db_url": "/mongodbdb",
       "query_url": "/mongodbdb?queries=",
       "query_url": "/mongodbdb?queries=",
       "fortune_url": "/mongodbfortunes",
       "fortune_url": "/mongodbfortunes",
       "update_url": "/mongodbupdates?queries=",
       "update_url": "/mongodbupdates?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 312
+      "approach": "Stripped",
+      "classification": "Fullstack",
+      "database": "MongoDB",
+      "framework": "aspnet",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "NET",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": ""
     },
     },
     "sqlserver-raw": {
     "sqlserver-raw": {
       "setup_file": "setup_iis",
       "setup_file": "setup_iis",
-      "os": "nt",
       "db_url": "/db?provider=sqlserver",
       "db_url": "/db?provider=sqlserver",
       "query_url": "/db?provider=sqlserver&queries=",
       "query_url": "/db?provider=sqlserver&queries=",
       "fortune_url": "/fortunes?provider=sqlserver",
       "fortune_url": "/fortunes?provider=sqlserver",
       "update_url": "/updates?provider=sqlserver&queries=",
       "update_url": "/updates?provider=sqlserver&queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 313
+      "approach": "Stripped",
+      "classification": "Fullstack",
+      "database": "SQLServer",
+      "framework": "aspnet",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "NET",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "Windows",
+      "display_name": "",
+      "notes": "",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 234 - 28
aspnet/benchmark_config

@@ -3,114 +3,260 @@
   "tests": [{
   "tests": [{
     "default": {
     "default": {
       "setup_file": "setup_iis",
       "setup_file": "setup_iis",
-      "os": "nt",
       "json_url": "/json/default",
       "json_url": "/json/default",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 90
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "aspnet-mvc",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "NET",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": ""
     },
     },
     "jsonnet": {
     "jsonnet": {
       "setup_file": "setup_iis",
       "setup_file": "setup_iis",
-      "os": "nt",
       "json_url": "/json/jsonnet",
       "json_url": "/json/jsonnet",
       "port": 8080,
       "port": 8080,
-      "sort": 138
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "aspnet",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "NET",
+      "webserver": "nginx",
+      "os": "Windows",
+      "database_os": "Linux",
+      "display_name": "aspnet-jsonnet",
+      "notes": "",
+      "versus": ""
     },
     },
     "servicestack": {
     "servicestack": {
       "setup_file": "setup_iis",
       "setup_file": "setup_iis",
-      "os": "nt",
       "json_url": "/json/servicestack",
       "json_url": "/json/servicestack",
       "port": 8080,
       "port": 8080,
-      "sort": 139
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "aspnet",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "NET",
+      "webserver": "nginx",
+      "os": "Windows",
+      "database_os": "Linux",
+      "display_name": "aspnet-svcstk",
+      "notes": "",
+      "versus": ""
     },
     },
     "mysql-raw": {
     "mysql-raw": {
       "setup_file": "setup_iis",
       "setup_file": "setup_iis",
-      "os": "nt",
       "db_url": "/ado/mysql",
       "db_url": "/ado/mysql",
       "query_url": "/ado/mysql?queries=",
       "query_url": "/ado/mysql?queries=",
       "fortune_url": "/ado/mysql/fortunes",
       "fortune_url": "/ado/mysql/fortunes",
       "update_url": "/ado/mysql/update?queries=",
       "update_url": "/ado/mysql/update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 91
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "aspnet-mvc",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "NET",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": ""
     },
     },
     "postgresql-raw": {
     "postgresql-raw": {
       "setup_file": "setup_iis",
       "setup_file": "setup_iis",
-      "os": "nt",
       "db_url": "/ado/postgresql",
       "db_url": "/ado/postgresql",
       "query_url": "/ado/postgresql?queries=",
       "query_url": "/ado/postgresql?queries=",
       "fortune_url": "/ado/postgresql/fortunes",
       "fortune_url": "/ado/postgresql/fortunes",
       "update_url": "/ado/postgresql/update?queries=",
       "update_url": "/ado/postgresql/update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 92
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "Postgres",
+      "framework": "aspnet-mvc",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "NET",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": ""
     },
     },
     "mongodb-raw": {
     "mongodb-raw": {
       "setup_file": "setup_iis",
       "setup_file": "setup_iis",
-      "os": "nt",
       "db_url": "/mongodb",
       "db_url": "/mongodb",
       "query_url": "/mongodb?queries=",
       "query_url": "/mongodb?queries=",
       "fortune_url": "/mongodb/fortunes",
       "fortune_url": "/mongodb/fortunes",
       "update_url": "/mongodb/update?queries=",
       "update_url": "/mongodb/update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 93
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MongoDB",
+      "framework": "aspnet-mvc",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "NET",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": ""
     },
     },
     "sqlserver-raw": {
     "sqlserver-raw": {
       "setup_file": "setup_iis",
       "setup_file": "setup_iis",
-      "os": "nt",
       "db_url": "/ado/sqlserver",
       "db_url": "/ado/sqlserver",
       "query_url": "/ado/sqlserver?queries=",
       "query_url": "/ado/sqlserver?queries=",
       "fortune_url": "/ado/sqlserver/fortunes",
       "fortune_url": "/ado/sqlserver/fortunes",
       "update_url": "/ado/sqlserver/update?queries=",
       "update_url": "/ado/sqlserver/update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 94
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "SQLServer",
+      "framework": "aspnet-mvc",
+      "language": "C#",
+      "orm": "Full",
+      "platform": "NET",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "Windows",
+      "display_name": "",
+      "notes": "",
+      "versus": ""
     },
     },
     "mysql-entityframework": {
     "mysql-entityframework": {
       "setup_file": "setup_iis",
       "setup_file": "setup_iis",
-      "os": "nt",
       "db_url": "/entityframework/mysql",
       "db_url": "/entityframework/mysql",
       "query_url": "/entityframework/mysql?queries=",
       "query_url": "/entityframework/mysql?queries=",
       "fortune_url": "/entityframework/mysql/fortunes",
       "fortune_url": "/entityframework/mysql/fortunes",
       "update_url": "/entityframework/mysql/update?queries=",
       "update_url": "/entityframework/mysql/update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 95
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "aspnet-mvc",
+      "language": "C#",
+      "orm": "Full",
+      "platform": "NET",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": ""
     },
     },
     "postgresql-entityframework": {
     "postgresql-entityframework": {
       "setup_file": "setup_iis",
       "setup_file": "setup_iis",
-      "os": "nt",
       "db_url": "/entityframework/postgresql",
       "db_url": "/entityframework/postgresql",
       "query_url": "/entityframework/postgresql?queries=",
       "query_url": "/entityframework/postgresql?queries=",
       "fortune_url": "/entityframework/postgresql/fortunes",
       "fortune_url": "/entityframework/postgresql/fortunes",
       "update_url": "/entityframework/postgresql/update?queries=",
       "update_url": "/entityframework/postgresql/update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 302
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "Postgres",
+      "framework": "aspnet-mvc",
+      "language": "C#",
+      "orm": "Full",
+      "platform": "NET",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": ""
     },
     },
     "sqlserver-entityframework": {
     "sqlserver-entityframework": {
       "setup_file": "setup_iis",
       "setup_file": "setup_iis",
-      "os": "nt",
       "db_url": "/entityframework/sqlserver",
       "db_url": "/entityframework/sqlserver",
       "query_url": "/entityframework/sqlserver?queries=",
       "query_url": "/entityframework/sqlserver?queries=",
       "fortune_url": "/entityframework/sqlserver/fortunes",
       "fortune_url": "/entityframework/sqlserver/fortunes",
       "update_url": "/entityframework/sqlserver/update?queries=",
       "update_url": "/entityframework/sqlserver/update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 303
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "SQLServer",
+      "framework": "aspnet-mvc",
+      "language": "C#",
+      "orm": "Full",
+      "platform": "NET",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "Windows",
+      "display_name": "",
+      "notes": "",
+      "versus": ""
     },
     },
     "mono": {
     "mono": {
       "setup_file": "setup_nginx",
       "setup_file": "setup_nginx",
       "json_url": "/json/default",
       "json_url": "/json/default",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 100
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "aspnet-mvc",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "Mono",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "aspnet-mvc-mono",
+      "notes": "",
+      "versus": ""
     },
     },
     "mono-jsonnet": {
     "mono-jsonnet": {
       "setup_file": "setup_nginx",
       "setup_file": "setup_nginx",
       "json_url": "/json/jsonnet",
       "json_url": "/json/jsonnet",
       "port": 8080,
       "port": 8080,
-      "sort": 136
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "aspnet",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "Mono",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "aspnet-jsonnet-mono",
+      "notes": "",
+      "versus": ""
     },
     },
     "mono-servicestack": {
     "mono-servicestack": {
       "setup_file": "setup_nginx",
       "setup_file": "setup_nginx",
       "json_url": "/json/servicestack",
       "json_url": "/json/servicestack",
       "port": 8080,
       "port": 8080,
-      "sort": 140
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "aspnet",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "Mono",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "aspnet-svcstk-mono",
+      "notes": "",
+      "versus": ""
     },
     },
     "mono-mysql-raw": {
     "mono-mysql-raw": {
       "setup_file": "setup_nginx",
       "setup_file": "setup_nginx",
@@ -119,7 +265,19 @@
       "fortune_url": "/ado/mysql/fortunes",
       "fortune_url": "/ado/mysql/fortunes",
       "update_url": "/ado/mysql/update?queries=",
       "update_url": "/ado/mysql/update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 101
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "aspnet-mvc",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "Mono",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "aspnet-mvc-mono",
+      "notes": "",
+      "versus": ""
     },
     },
     "mono-postgresql-raw": {
     "mono-postgresql-raw": {
       "setup_file": "setup_nginx",
       "setup_file": "setup_nginx",
@@ -128,7 +286,19 @@
       "fortune_url": "/ado/postgresql/fortunes",
       "fortune_url": "/ado/postgresql/fortunes",
       "update_url": "/ado/postgresql/update?queries=",
       "update_url": "/ado/postgresql/update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 102
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "Postgres",
+      "framework": "aspnet-mvc",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "Mono",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "aspnet-mvc-mono",
+      "notes": "",
+      "versus": ""
     },
     },
     "mono-mongodb-raw": {
     "mono-mongodb-raw": {
       "setup_file": "setup_nginx",
       "setup_file": "setup_nginx",
@@ -137,7 +307,19 @@
       "fortune_url": "/mongodb/fortunes",
       "fortune_url": "/mongodb/fortunes",
       "update_url": "/mongodb/update?queries=",
       "update_url": "/mongodb/update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 103
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MongoDB",
+      "framework": "aspnet-mvc",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "Mono",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "aspnet-mvc-mono",
+      "notes": "",
+      "versus": ""
     },
     },
     "mono-mysql-entityframework": {
     "mono-mysql-entityframework": {
       "setup_file": "setup_nginx",
       "setup_file": "setup_nginx",
@@ -146,7 +328,19 @@
       "fortune_url": "/entityframework/mysql/fortunes",
       "fortune_url": "/entityframework/mysql/fortunes",
       "update_url": "/entityframework/mysql/update?queries=",
       "update_url": "/entityframework/mysql/update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 104
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "aspnet-mvc",
+      "language": "C#",
+      "orm": "Full",
+      "platform": "Mono",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "aspnet-mvc-mono",
+      "notes": "Entity framework",
+      "versus": ""
     },
     },
     "mono-postgresql-entityframework": {
     "mono-postgresql-entityframework": {
       "setup_file": "setup_nginx",
       "setup_file": "setup_nginx",
@@ -155,7 +349,19 @@
       "fortune_url": "/entityframework/postgresql/fortunes",
       "fortune_url": "/entityframework/postgresql/fortunes",
       "update_url": "/entityframework/postgresql/update?queries=",
       "update_url": "/entityframework/postgresql/update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 105
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "Postgres",
+      "framework": "aspnet-mvc",
+      "language": "C#",
+      "orm": "Full",
+      "platform": "Mono",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "aspnet-mvc-mono",
+      "notes": "Entity framework",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
beego/benchmark_config

@@ -5,7 +5,19 @@
       "setup_file": "setup",
       "setup_file": "setup",
       "json_url": "/json",
       "json_url": "/json",
       "port": 8080,
       "port": 8080,
-      "sort": 119
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "beego",
+      "language": "Go",
+      "orm": "Raw",
+      "platform": "Go",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": "go"
     }
     }
   }]
   }]
 }
 }

+ 52 - 4
bottle/benchmark_config

@@ -10,7 +10,19 @@
       "update_url": "/updates?queries=",
       "update_url": "/updates?queries=",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 88
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "bottle",
+      "language": "Python",
+      "orm": "Full",
+      "platform": "wsgi",
+      "webserver": "Gunicorn",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": "wsgi"
     },
     },
     "py3": {
     "py3": {
       "setup_file": "setup_py3",
       "setup_file": "setup_py3",
@@ -21,7 +33,19 @@
       "update_url": "/updates?queries=",
       "update_url": "/updates?queries=",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 239
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "bottle",
+      "language": "Python",
+      "orm": "Full",
+      "platform": "wsgi",
+      "webserver": "Gunicorn",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": "wsgi"
     },
     },
     "pypy": {
     "pypy": {
       "setup_file": "setup_pypy",
       "setup_file": "setup_pypy",
@@ -32,7 +56,19 @@
       "update_url": "/updates?queries=",
       "update_url": "/updates?queries=",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 240
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "bottle",
+      "language": "Python",
+      "orm": "Full",
+      "platform": "wsgi",
+      "webserver": "Gunicorn",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": "wsgi"
     },
     },
     "mysql-raw": {
     "mysql-raw": {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -41,7 +77,19 @@
       "fortune_url": "/fortuneraw",
       "fortune_url": "/fortuneraw",
       "update_url": "/raw-updates?queries=",
       "update_url": "/raw-updates?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 89
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "bottle",
+      "language": "Python",
+      "orm": "Raw",
+      "platform": "wsgi",
+      "webserver": "Gunicorn",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": "wsgi"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
cake/benchmark_config

@@ -9,7 +9,19 @@
       "fortunes_url": "/fortunes",
       "fortunes_url": "/fortunes",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 1
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "cake",
+      "language": "PHP",
+      "orm": "Full",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": "php"
     }
     }
   }]
   }]
 }
 }

+ 26 - 2
compojure/benchmark_config

@@ -9,14 +9,38 @@
       "fortune_url": "/compojure/fortune-hiccup",
       "fortune_url": "/compojure/fortune-hiccup",
       "plaintext_url": "/compojure/plaintext",
       "plaintext_url": "/compojure/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 2
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "compojure",
+      "language": "Clojure",
+      "orm": "Micro",
+      "platform": "Servlet",
+      "webserver": "Resin",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": "servlet"
     },
     },
     "raw": {
     "raw": {
       "setup_file": "setup",
       "setup_file": "setup",
       "db_url": "/compojure/dbraw/1",
       "db_url": "/compojure/dbraw/1",
       "query_url": "/compojure/dbraw/",
       "query_url": "/compojure/dbraw/",
       "port": 8080,
       "port": 8080,
-      "sort": 85
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "compojure",
+      "language": "Clojure",
+      "orm": "Raw",
+      "platform": "Servlet",
+      "webserver": "Resin",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": "servlet"
     }
     }
   }]
   }]
 }
 }

+ 0 - 0
config/client_sftp_batch → config/database_sftp_batch


+ 13 - 1
cowboy/benchmark_config

@@ -7,6 +7,18 @@
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 40
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "cowboy",
+      "language": "Erlang",
+      "orm": "Raw",
+      "platform": "Cowboy",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": ""
   }}]
   }}]
 }
 }

+ 53 - 5
cpoll_cppsp/benchmark_config

@@ -4,9 +4,21 @@
     "default": {
     "default": {
       "setup_file": "setup",
       "setup_file": "setup",
       "json_url": "/json",
       "json_url": "/json",
-	"plaintext_url": "/plaintext",
+      "plaintext_url": "/plaintext",
       "port": 16969,
       "port": 16969,
-      "sort": 115
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "cpoll-cppsp",
+      "language": "C++",
+      "orm": "Raw",
+      "platform": "CPoll",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": ""
     },
     },
     "raw": {
     "raw": {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -15,21 +27,57 @@
       "fortune_url": "/fortune",
       "fortune_url": "/fortune",
       "update_url": "/update?queries=",
       "update_url": "/update?queries=",
       "port": 16969,
       "port": 16969,
-      "sort": 130
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "cpoll-cppsp",
+      "language": "C++",
+      "orm": "Raw",
+      "platform": "CPoll",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": ""
     },
     },
     "postgres-raw": {
     "postgres-raw": {
       "setup_file": "setup",
       "setup_file": "setup",
       "db_url": "/db_pg_async",
       "db_url": "/db_pg_async",
       "query_url": "/db_pg_async?queries=", 
       "query_url": "/db_pg_async?queries=", 
       "port": 16969,
       "port": 16969,
-      "sort": 131
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "Postgres",
+      "framework": "cpoll-cppsp",
+      "language": "C++",
+      "orm": "Raw",
+      "platform": "CPoll",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": ""
     },
     },
     "postgres-raw-threadpool": {
     "postgres-raw-threadpool": {
       "setup_file": "setup",
       "setup_file": "setup",
       "db_url": "/db_pg_threadpool",
       "db_url": "/db_pg_threadpool",
       "query_url": "/db_pg_threadpool?queries=", 
       "query_url": "/db_pg_threadpool?queries=", 
       "port": 16969,
       "port": 16969,
-      "sort": 132
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "Postgres",
+      "framework": "cpoll-cppsp",
+      "language": "C++",
+      "orm": "Raw",
+      "platform": "CPoll",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "cpoll-pool",
+      "notes": "Threadpool",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 26 - 2
dancer/benchmark_config

@@ -5,14 +5,38 @@
       "setup_file": "setup",
       "setup_file": "setup",
       "json_url": "/json",
       "json_url": "/json",
       "port": 8080,
       "port": 8080,
-      "sort": 76
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "dancer",
+      "language": "Perl",
+      "orm": "Full",
+      "platform": "Plack",
+      "webserver": "Starman",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": ""
     },
     },
     "raw": {
     "raw": {
       "setup_file": "setup",
       "setup_file": "setup",
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 77
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "dancer",
+      "language": "Perl",
+      "orm": "Raw",
+      "platform": "Plack",
+      "webserver": "Starman",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 26 - 2
dart-start/benchmark_config

@@ -10,7 +10,19 @@
       "update_url": "/updates?queries=",
       "update_url": "/updates?queries=",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 318
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "Postgres",
+      "framework": "start",
+      "language": "Dart",
+      "orm": "Raw",
+      "platform": "Dart",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": "dart"
     },
     },
     "mongodb-raw": {
     "mongodb-raw": {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -19,7 +31,19 @@
       "fortune_url": "/fortunes-mongo",
       "fortune_url": "/fortunes-mongo",
       "update_url": "/updates-mongo?queries=",
       "update_url": "/updates-mongo?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 319
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MongoDB",
+      "framework": "start",
+      "language": "Dart",
+      "orm": "Raw",
+      "platform": "Dart",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": "dart"
     }
     }
   }]
   }]
 }
 }

+ 26 - 2
dart-stream/benchmark_config

@@ -10,7 +10,19 @@
       "update_url": "/updates?queries=",
       "update_url": "/updates?queries=",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 320
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "Postgres",
+      "framework": "stream",
+      "language": "Dart",
+      "orm": "Raw",
+      "platform": "Dart",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": "dart"
     },
     },
     "mongodb-raw": {
     "mongodb-raw": {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -19,7 +31,19 @@
       "fortune_url": "/fortunes-mongo",
       "fortune_url": "/fortunes-mongo",
       "update_url": "/updates-mongo?queries=",
       "update_url": "/updates-mongo?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 321
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MongoDB",
+      "framework": "stream",
+      "language": "Dart",
+      "orm": "Raw",
+      "platform": "Dart",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": "dart"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
dart/benchmark_config

@@ -10,7 +10,19 @@
       "update_url": "/updates?queries=",
       "update_url": "/updates?queries=",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 129
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "Postgres",
+      "framework": "dart",
+      "language": "Dart",
+      "orm": "Raw",
+      "platform": "Dart",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 39 - 3
django/benchmark_config

@@ -9,7 +9,19 @@
       "fortune_url": "/fortunes",
       "fortune_url": "/fortunes",
       "update_url": "/update?queries=",
       "update_url": "/update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 3
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "django",
+      "language": "Python",
+      "orm": "Full",
+      "platform": "wsgi",
+      "webserver": "Gunicorn",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": "wsgi"
     },
     },
     "py3": {
     "py3": {
       "setup_file": "setup_py3",
       "setup_file": "setup_py3",
@@ -19,7 +31,19 @@
       "fortune_url": "/fortunes",
       "fortune_url": "/fortunes",
       "update_url": "/update?queries=",
       "update_url": "/update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 242
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "django",
+      "language": "Python",
+      "orm": "Full",
+      "platform": "wsgi",
+      "webserver": "Gunicorn",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "django-py3",
+      "notes": "",
+      "versus": "wsgi"
     },
     },
     "postgresql": {
     "postgresql": {
       "setup_file": "setup_pg",
       "setup_file": "setup_pg",
@@ -29,7 +53,19 @@
       "fortune_url": "/fortunes",
       "fortune_url": "/fortunes",
       "update_url": "/update?queries=",
       "update_url": "/update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 317
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "Postgres",
+      "framework": "django",
+      "language": "Python",
+      "orm": "Full",
+      "platform": "wsgi",
+      "webserver": "Gunicorn",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": "wsgi"
     }
     }
   }]
   }]
 }
 }

+ 23 - 11
dropwizard/benchmark_config

@@ -1,13 +1,25 @@
 {
 {
-    "framework": "dropwizard",
-    "tests": [{
-        "default": {
-            "setup_file": "setup",
-            "json_url": "/json",
-            "db_url": "/db",
-            "query_url": "/db?queries=",
-            "port": 9000,
-            "sort": 69
-        }
-    }]
+  "framework": "dropwizard",
+  "tests": [{
+    "default": {
+      "setup_file": "setup",
+      "json_url": "/json",
+      "db_url": "/db",
+      "query_url": "/db?queries=",
+      "port": 9000,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "dropwizard",
+      "language": "Java",
+      "orm": "Full",
+      "platform": "Jetty",
+      "webserver": "Jetty",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": ""
+    }
+  }]
 }
 }

BIN
elli/.benchmark_config.swp


+ 13 - 1
elli/benchmark_config

@@ -7,6 +7,18 @@
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 39
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "elli",
+      "language": "Erlang",
+      "orm": "Raw",
+      "platform": "elli",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": ""
   }}]
   }}]
 }
 }

+ 39 - 3
express/benchmark_config

@@ -5,7 +5,19 @@
       "setup_file": "setup",
       "setup_file": "setup",
       "json_url": "/json",
       "json_url": "/json",
       "port": 8080,
       "port": 8080,
-      "sort": 4
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "",
+      "framework": "express",
+      "language": "JavaScript",
+      "orm": "Full",
+      "platform": "Node.js",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "",
+      "notes": "",
+      "versus": "node"
     },
     },
     "mongodb": {
     "mongodb": {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -13,7 +25,19 @@
       "query_url": "/mongoose?queries=",
       "query_url": "/mongoose?queries=",
       "update_url": "/mongoose-update?queries=",
       "update_url": "/mongoose-update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 5
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MongoDB",
+      "framework": "express",
+      "language": "JavaScript",
+      "orm": "Full",
+      "platform": "Node.js",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": "node"
     },
     },
     "mysql": {
     "mysql": {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -22,7 +46,19 @@
       "fortune_url": "/fortune",
       "fortune_url": "/fortune",
       "update_url": "/mysql-orm-update?queries=",
       "update_url": "/mysql-orm-update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 6
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "express",
+      "language": "JavaScript",
+      "orm": "Full",
+      "platform": "Node.js",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": "node"
     }
     }
   }]
   }]
 }
 }

+ 39 - 3
falcon/benchmark_config

@@ -6,21 +6,57 @@
       "json_url": "/json",
       "json_url": "/json",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 245
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "",
+      "framework": "falcon",
+      "language": "Python",
+      "orm": "Raw",
+      "platform": "wsgi",
+      "webserver": "Gunicorn",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "",
+      "notes": "",
+      "versus": "wsgi"
     },
     },
     "py3": {
     "py3": {
       "setup_file": "setup_py3",
       "setup_file": "setup_py3",
       "json_url": "/json",
       "json_url": "/json",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 246
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "",
+      "framework": "falcon",
+      "language": "Python",
+      "orm": "Raw",
+      "platform": "wsgi",
+      "webserver": "Gunicorn",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "falcon-py3",
+      "notes": "",
+      "versus": "wsgi"
     },
     },
     "pypy": {
     "pypy": {
       "setup_file": "setup_pypy",
       "setup_file": "setup_pypy",
       "json_url": "/json",
       "json_url": "/json",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 247
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "",
+      "framework": "falcon",
+      "language": "Python",
+      "orm": "Raw",
+      "platform": "wsgi",
+      "webserver": "Gunicorn",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "falcon-pypy",
+      "notes": "",
+      "versus": "wsgi"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
falcore/benchmark_config

@@ -10,7 +10,19 @@
       "update_url": "/update?queries=",
       "update_url": "/update?queries=",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 300
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "falcore",
+      "language": "Go",
+      "orm": "Raw",
+      "platform": "Go",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": "go"
     }
     }
   }]
   }]
 }
 }

+ 23 - 13
finagle/benchmark_config

@@ -1,15 +1,25 @@
 {
 {
-    "framework" : "finagle",
-    "tests" : [{
-        "default" : {
-            "setup_file" : "setup",
-            "json_url" : "/json",
-            "db_url" : "/db",
-            "query_url" : "/db?queries=",
-            "port": 8080,
-            "sort": 44
-            }
-        }
-        ]
-
+  "framework": "finagle",
+  "tests": [{
+    "default": {
+      "setup_file": "setup",
+      "json_url": "/json",
+      "db_url": "/db",
+      "query_url": "/db?queries=",
+      "port": 8080,
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "finagle",
+      "language": "Scala",
+      "orm": "Micro",
+      "platform": "Netty",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": "netty"
+    }
+  }]
 }
 }

+ 65 - 5
flask/benchmark_config

@@ -10,7 +10,19 @@
       "update_url": "/updates?queries=",
       "update_url": "/updates?queries=",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 31
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "flask",
+      "language": "Python",
+      "orm": "Full",
+      "platform": "wsgi",
+      "webserver": "Unicorn",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "flask",
+      "notes": "",
+      "versus": "wsgi"
     },
     },
     "mysql-raw": {
     "mysql-raw": {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -19,7 +31,19 @@
       "fortune_url": "/fortunesraw",
       "fortune_url": "/fortunesraw",
       "update_url": "/raw-updates?queries=",
       "update_url": "/raw-updates?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 84
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "flask",
+      "language": "Python",
+      "orm": "Raw",
+      "platform": "wsgi",
+      "webserver": "Unicorn",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "flask",
+      "notes": "",
+      "versus": "wsgi"
     },
     },
     "py3": {
     "py3": {
       "setup_file": "setup_py3",
       "setup_file": "setup_py3",
@@ -30,7 +54,19 @@
       "update_url": "/updates?queries=",
       "update_url": "/updates?queries=",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 241
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "flask",
+      "language": "Python",
+      "orm": "Full",
+      "platform": "wsgi",
+      "webserver": "Unicorn",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "flask-py3",
+      "notes": "",
+      "versus": "wsgi"
     },
     },
     "pypy": {
     "pypy": {
       "setup_file": "setup_pypy",
       "setup_file": "setup_pypy",
@@ -41,7 +77,19 @@
       "update_url": "/updates?queries=",
       "update_url": "/updates?queries=",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 110
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "flask",
+      "language": "Python",
+      "orm": "Full",
+      "platform": "wsgi",
+      "webserver": "Unicorn",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "flask-pypy",
+      "notes": "",
+      "versus": "wsgi"
     },
     },
     "pypy-mysql-raw": {
     "pypy-mysql-raw": {
       "setup_file": "setup_pypy",
       "setup_file": "setup_pypy",
@@ -50,7 +98,19 @@
       "fortune_url": "/fortunesraw",
       "fortune_url": "/fortunesraw",
       "update_url": "/raw-updates?queries=",
       "update_url": "/raw-updates?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 111
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "flask",
+      "language": "Python",
+      "orm": "Raw",
+      "platform": "wsgi",
+      "webserver": "Unicorn",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "flask-pypy",
+      "notes": "",
+      "versus": "wsgi"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
gemini/benchmark_config

@@ -10,7 +10,19 @@
       "update_url": "/update?queries=",
       "update_url": "/update?queries=",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 0
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "gemini",
+      "language": "Java",
+      "orm": "Micro",
+      "platform": "Servlet",
+      "webserver": "Resin",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "gemini",
+      "notes": "",
+      "versus": "servlet"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
go/benchmark_config

@@ -10,7 +10,19 @@
       "update_url": "/update?queries=",
       "update_url": "/update?queries=",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 27
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "go",
+      "language": "Go",
+      "orm": "Raw",
+      "platform": "Go",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": "go"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
grails/benchmark_config

@@ -7,7 +7,19 @@
       "db_url": "/grails/hello/db",
       "db_url": "/grails/hello/db",
       "query_url": "/grails/hello/db?queries=",
       "query_url": "/grails/hello/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 7
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "grails",
+      "language": "Groovy",
+      "orm": "Full",
+      "platform": "Servlet",
+      "webserver": "Resin",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "",
+      "notes": "",
+      "versus": "servlet"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
grizzly-bm/benchmark_config

@@ -6,7 +6,19 @@
       "json_url": "/json",
       "json_url": "/json",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 238
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "",
+      "framework": "grizzly-bm",
+      "language": "Java",
+      "orm": "Raw",
+      "platform": "Servlet",
+      "webserver": "Grizzly",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "grizzly-bm",
+      "notes": "",
+      "versus": "servlet"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
grizzly-jersey/benchmark_config

@@ -8,7 +8,19 @@
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "fortune_url": "/fortunes",
       "fortune_url": "/fortunes",
       "port": 8080,
       "port": 8080,
-      "sort": 38
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "grizzly-jersey",
+      "language": "Java",
+      "orm": "Full",
+      "platform": "Servlet",
+      "webserver": "Grizzly",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "grizzly-jersey",
+      "notes": "",
+      "versus": "servlet"
     }
     }
   }]
   }]
 }
 }

+ 39 - 3
hapi/benchmark_config

@@ -5,7 +5,19 @@
       "setup_file": "setup",
       "setup_file": "setup",
       "json_url": "/json",
       "json_url": "/json",
       "port": 8080,
       "port": 8080,
-      "sort": 121
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "hapi",
+      "language": "JavaScript",
+      "orm": "Raw",
+      "platform": "Node.js",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "hapi",
+      "notes": "",
+      "versus": "node"
     },
     },
     "mongodb": {
     "mongodb": {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -13,7 +25,19 @@
       "query_url": "/mongoose/",
       "query_url": "/mongoose/",
       "update_url": "/mongoose-update/",
       "update_url": "/mongoose-update/",
       "port": 8080,
       "port": 8080,
-      "sort": 122
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MongoDB",
+      "framework": "hapi",
+      "language": "JavaScript",
+      "orm": "Raw",
+      "platform": "Node.js",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "hapi",
+      "notes": "",
+      "versus": "node"
     },
     },
     "mysql": {
     "mysql": {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -22,7 +46,19 @@
       "fortune_url": "/fortune",
       "fortune_url": "/fortune",
       "update_url": "/mysql-orm-update/",
       "update_url": "/mysql-orm-update/",
       "port": 8080,
       "port": 8080,
-      "sort": 123
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "hapi",
+      "language": "JavaScript",
+      "orm": "Raw",
+      "platform": "Node.js",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "hapi",
+      "notes": "",
+      "versus": "node"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
http-kit/benchmark_config

@@ -7,7 +7,19 @@
       "db_url": "/http-kit/db/1",
       "db_url": "/http-kit/db/1",
       "query_url": "/http-kit/db/",
       "query_url": "/http-kit/db/",
       "port": 8080,
       "port": 8080,
-      "sort": 36
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "http-kit",
+      "language": "Clojure",
+      "orm": "Raw",
+      "platform": "http-kit",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "http-kit",
+      "notes": "",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
jester/benchmark_config

@@ -5,7 +5,19 @@
       "setup_file": "setup",
       "setup_file": "setup",
       "json_url": "/json",
       "json_url": "/json",
       "port": 8080,
       "port": 8080,
-      "sort": 133
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "jester",
+      "language": "Nimrod",
+      "orm": "Raw",
+      "platform": "Nimrod",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "jester",
+      "notes": "",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 26 - 2
kelp/benchmark_config

@@ -5,14 +5,38 @@
       "setup_file": "setup",
       "setup_file": "setup",
       "json_url": "/json",
       "json_url": "/json",
       "port": 8080,
       "port": 8080,
-      "sort": 78
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "",
+      "framework": "kelp",
+      "language": "Perl",
+      "orm": "Full",
+      "platform": "Plack",
+      "webserver": "Starman",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "kelp",
+      "notes": "",
+      "versus": ""
     },
     },
     "raw": {
     "raw": {
       "setup_file": "setup",
       "setup_file": "setup",
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 79
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "kelp",
+      "language": "Perl",
+      "orm": "Raw",
+      "platform": "Plack",
+      "webserver": "Starman",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "kelp",
+      "notes": "",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
lapis/benchmark_config

@@ -10,7 +10,19 @@
       "update_url": "/update?queries=",
       "update_url": "/update?queries=",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 143
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "Postgres",
+      "framework": "lapis",
+      "language": "Lua",
+      "orm": "Full",
+      "platform": "OpenResty",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "lapis",
+      "notes": "",
+      "versus": "openresty"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
lift-stateless/benchmark_config

@@ -7,7 +7,19 @@
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db/",
       "query_url": "/db/",
       "port": 8080,
       "port": 8080,
-      "sort": 45
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "lift",
+      "language": "Scala",
+      "orm": "Full",
+      "platform": "Netty",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "lift-stateless",
+      "notes": "",
+      "versus": "netty"
     }
     }
   }]
   }]
 }
 }

+ 26 - 2
luminus/benchmark_config

@@ -8,14 +8,38 @@
       "query_url": "/luminus/db/",
       "query_url": "/luminus/db/",
       "fortune_url": "/luminus/fortune",
       "fortune_url": "/luminus/fortune",
       "port": 8080,
       "port": 8080,
-      "sort": 125
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "luminus",
+      "language": "Clojure",
+      "orm": "Full",
+      "platform": "Servlet",
+      "webserver": "Resin",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "luminus",
+      "notes": "",
+      "versus": "servlet"
     },
     },
     "raw": {
     "raw": {
       "setup_file": "setup",
       "setup_file": "setup",
       "db_url": "/luminus/dbraw/1",
       "db_url": "/luminus/dbraw/1",
       "query_url": "/luminus/dbraw/",
       "query_url": "/luminus/dbraw/",
       "port": 8080,
       "port": 8080,
-      "sort": 126
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "luminus",
+      "language": "Clojure",
+      "orm": "Raw",
+      "platform": "Servlet",
+      "webserver": "Resin",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "luminus",
+      "notes": "",
+      "versus": "servlet"
     }
     }
   }]
   }]
 }
 }

+ 26 - 2
mojolicious/benchmark_config

@@ -5,14 +5,38 @@
       "setup_file": "setup",
       "setup_file": "setup",
       "json_url": "/json",
       "json_url": "/json",
       "port": 8080,
       "port": 8080,
-      "sort": 80
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "mojolicious",
+      "language": "Perl",
+      "orm": "Full",
+      "platform": "Plack",
+      "webserver": "Starman",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "mojolicious",
+      "notes": "",
+      "versus": ""
     },
     },
     "raw": {
     "raw": {
       "setup_file": "setup",
       "setup_file": "setup",
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 81
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "mojolicious",
+      "language": "Perl",
+      "orm": "Raw",
+      "platform": "Plack",
+      "webserver": "Starman",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "mojolicious",
+      "notes": "",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 26 - 3
nancy/benchmark_config

@@ -3,12 +3,23 @@
   "tests": [{
   "tests": [{
     "default": {
     "default": {
       "setup_file": "setup_iis",
       "setup_file": "setup_iis",
-      "os": "nt",
       "json_url": "/json",
       "json_url": "/json",
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db/",
       "query_url": "/db/",
       "port": 8080,
       "port": 8080,
-      "sort": 141
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "nancy",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "NET",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "Linux",
+      "display_name": "nancy",
+      "notes": "",
+      "versus": ""
     },
     },
     "mono": {
     "mono": {
       "setup_file": "setup_nginx",
       "setup_file": "setup_nginx",
@@ -16,7 +27,19 @@
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db/",
       "query_url": "/db/",
       "port": 8080,
       "port": 8080,
-      "sort": 137
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "Database",
+      "framework": "nancy",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "Mono",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "nancy",
+      "notes": "",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
netty/benchmark_config

@@ -6,7 +6,19 @@
       "json_url": "/",
       "json_url": "/",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 30
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "",
+      "framework": "netty",
+      "language": "Java",
+      "orm": "Raw",
+      "platform": "Netty",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "netty",
+      "notes": "",
+      "versus": "netty"
     }
     }
   }]
   }]
 }
 }

+ 65 - 5
nodejs/benchmark_config

@@ -6,14 +6,38 @@
       "json_url": "/json",
       "json_url": "/json",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 8
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "",
+      "framework": "nodejs",
+      "language": "JavaScript",
+      "orm": "Raw",
+      "platform": "Node.js",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "nodejs",
+      "notes": "",
+      "versus": "nodejs"
     },
     },
     "mongodb": {
     "mongodb": {
       "setup_file": "setup",
       "setup_file": "setup",
       "db_url": "/mongoose",
       "db_url": "/mongoose",
       "query_url": "/mongoose?queries=",
       "query_url": "/mongoose?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 9
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MongoDB",
+      "framework": "nodejs",
+      "language": "JavaScript",
+      "orm": "Full",
+      "platform": "Node.js",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "nodejs",
+      "notes": "",
+      "versus": "nodejs"
     },
     },
     "mongodb-raw": {
     "mongodb-raw": {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -21,14 +45,38 @@
       "query_url": "/mongodbdriver?queries=",
       "query_url": "/mongodbdriver?queries=",
       "update_url": "/update-mongodb?queries=",
       "update_url": "/update-mongodb?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 47
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MongoDB",
+      "framework": "nodejs",
+      "language": "JavaScript",
+      "orm": "Raw",
+      "platform": "Node.js",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "nodejs",
+      "notes": "",
+      "versus": "nodejs"
     },
     },
     "mysql": {
     "mysql": {
       "setup_file": "setup",
       "setup_file": "setup",
       "db_url": "/mysql-orm",
       "db_url": "/mysql-orm",
       "query_url": "/mysql-orm?queries=",
       "query_url": "/mysql-orm?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 10
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "nodejs",
+      "language": "JavaScript",
+      "orm": "Full",
+      "platform": "Node.js",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "nodejs",
+      "notes": "",
+      "versus": "nodejs"
     },
     },
     "mysql-raw": {
     "mysql-raw": {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -36,7 +84,19 @@
       "query_url": "/mysql?queries=",
       "query_url": "/mysql?queries=",
       "update_url": "/update?queries=",
       "update_url": "/update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 28
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "nodejs",
+      "language": "JavaScript",
+      "orm": "Raw",
+      "platform": "Node.js",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "nodejs",
+      "notes": "",
+      "versus": "nodejs"
     }
     }
   }]
   }]
 }
 }

+ 26 - 2
onion/benchmark_config

@@ -5,7 +5,19 @@
       "setup_file": "setup",
       "setup_file": "setup",
       "json_url": "/json",
       "json_url": "/json",
       "port": 8080,
       "port": 8080,
-      "sort": 42
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "",
+      "framework": "onion",
+      "language": "C",
+      "orm": "Raw",
+      "platform": "Onion",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "onion",
+      "notes": "",
+      "versus": ""
     },
     },
     "raw": {
     "raw": {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -13,7 +25,19 @@
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "fortune_url": "/fortune",
       "fortune_url": "/fortune",
       "port": 8080,
       "port": 8080,
-      "sort": 43
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "onion",
+      "language": "C",
+      "orm": "Raw",
+      "platform": "Onion",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "onion",
+      "notes": "",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
openresty/benchmark_config

@@ -8,7 +8,19 @@
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 50
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "openresty",
+      "language": "Lua",
+      "orm": "Raw",
+      "platform": "OpenResty",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "openresty",
+      "notes": "",
+      "versus": "openresty"
     }
     }
   }]
   }]
 }
 }

+ 26 - 2
php-codeigniter/benchmark_config

@@ -5,7 +5,19 @@
       "setup_file": "setup",
       "setup_file": "setup",
       "json_url": "/index.php/bench/json",
       "json_url": "/index.php/bench/json",
       "port": 8080,
       "port": 8080,
-      "sort": 55
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "",
+      "framework": "codeigniter",
+      "language": "PHP",
+      "orm": "Raw",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "codeigniter",
+      "notes": "",
+      "versus": "php"
     },
     },
     "raw": {
     "raw": {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -13,7 +25,19 @@
       "query_url": "/index.php/bench/db/",
       "query_url": "/index.php/bench/db/",
       "fortune_url": "/index.php/bench/fortunes",
       "fortune_url": "/index.php/bench/fortunes",
       "port": 8080,
       "port": 8080,
-      "sort": 63
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "codeigniter",
+      "language": "PHP",
+      "orm": "Raw",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "codeigniter",
+      "notes": "",
+      "versus": "php"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
php-fuel/benchmark_config

@@ -8,7 +8,19 @@
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "fortune_url": "/fortunes",
       "fortune_url": "/fortunes",
       "port": 8080,
       "port": 8080,
-      "sort": 67
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "fuel",
+      "language": "PHP",
+      "orm": "Raw",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "fuel",
+      "notes": "",
+      "versus": "php"
     }
     }
   }]
   }]
 }
 }

+ 26 - 2
php-kohana/benchmark_config

@@ -5,7 +5,19 @@
       "setup_file": "setup",
       "setup_file": "setup",
       "json_url": "/bench/json",
       "json_url": "/bench/json",
       "port": 8080,
       "port": 8080,
-      "sort": 60
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "",
+      "framework": "kohana",
+      "language": "PHP",
+      "orm": "Raw",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "kohana",
+      "notes": "",
+      "versus": "php"
     },
     },
     "raw": {
     "raw": {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -13,7 +25,19 @@
       "query_url": "/bench/db/",
       "query_url": "/bench/db/",
       "fortune_url": "/bench/fortunes",
       "fortune_url": "/bench/fortunes",
       "port": 8080,
       "port": 8080,
-      "sort": 61
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "kohana",
+      "language": "PHP",
+      "orm": "Raw",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "kohana",
+      "notes": "",
+      "versus": "php"
     }
     }
   }]
   }]
 }
 }

+ 26 - 2
php-laravel/benchmark_config

@@ -5,7 +5,19 @@
       "setup_file": "setup",
       "setup_file": "setup",
       "json_url": "/json",
       "json_url": "/json",
       "port": 8080,
       "port": 8080,
-      "sort": 59
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "",
+      "framework": "laravel",
+      "language": "PHP",
+      "orm": "Raw",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "laravel",
+      "notes": "",
+      "versus": "php"
     },
     },
     "raw": {
     "raw": {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -13,7 +25,19 @@
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "fortune_url": "/fortunes",
       "fortune_url": "/fortunes",
       "port": 8080,
       "port": 8080,
-      "sort": 62
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "laravel",
+      "language": "PHP",
+      "orm": "Raw",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "laravel",
+      "notes": "",
+      "versus": "php"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
php-lithium/benchmark_config

@@ -7,7 +7,19 @@
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 57
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "lithium",
+      "language": "PHP",
+      "orm": "Full",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "lithium",
+      "notes": "",
+      "versus": "php"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
php-micromvc/benchmark_config

@@ -7,7 +7,19 @@
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 70
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "micromvc",
+      "language": "PHP",
+      "orm": "Raw",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "micromvc",
+      "notes": "",
+      "versus": "php"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
php-phalcon-micro/benchmark_config

@@ -8,7 +8,19 @@
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "fortune_url": "/fortunes",
       "fortune_url": "/fortunes",
       "port": 8080,
       "port": 8080,
-      "sort": 98
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "phalcon",
+      "language": "PHP",
+      "orm": "Full",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "phalcon",
+      "notes": "",
+      "versus": "php"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
php-phalcon/benchmark_config

@@ -9,7 +9,19 @@
       "fortune_url": "/fortunes",
       "fortune_url": "/fortunes",
       "update_url": "/update?queries=",
       "update_url": "/update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 72
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "phalcon",
+      "language": "PHP",
+      "orm": "Full",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "phalcon",
+      "notes": "",
+      "versus": "php"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
php-phpixie/benchmark_config

@@ -10,7 +10,19 @@
       "update_url": "/updates?queries=",
       "update_url": "/updates?queries=",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 301
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "phpixie",
+      "language": "PHP",
+      "orm": "Full",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "phpixie",
+      "notes": "",
+      "versus": "php"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
php-silex-orm/benchmark_config

@@ -7,7 +7,19 @@
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 82 
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "silex",
+      "language": "PHP",
+      "orm": "Full",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "silex",
+      "notes": "",
+      "versus": "php"
     }
     }
   }]
   }]
 }
 }

+ 26 - 2
php-silex/benchmark_config

@@ -6,7 +6,19 @@
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 64
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "silex",
+      "language": "PHP",
+      "orm": "Raw",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "silex",
+      "notes": "",
+      "versus": "php"
     },
     },
     "raw": {
     "raw": {
       "setup_file": "setup_raw",
       "setup_file": "setup_raw",
@@ -17,7 +29,19 @@
       "update_url": "/update?queries=",
       "update_url": "/update?queries=",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 144
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "silex",
+      "language": "PHP",
+      "orm": "Raw",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "silex",
+      "notes": "",
+      "versus": "php"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
php-silica/benchmark_config

@@ -6,7 +6,19 @@
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 142
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "silica",
+      "language": "PHP",
+      "orm": "Raw",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "silica",
+      "notes": "",
+      "versus": "php"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
php-slim/benchmark_config

@@ -7,7 +7,19 @@
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 68
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "slim",
+      "language": "PHP",
+      "orm": "Raw",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "slim",
+      "notes": "",
+      "versus": "php"
     }
     }
   }]
   }]
 }
 }

+ 39 - 3
php-symfony2/benchmark_config

@@ -8,13 +8,37 @@
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "fortune_url": "/fortunes",
       "fortune_url": "/fortunes",
       "port": 8080,
       "port": 8080,
-      "sort": 51
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "symfony2",
+      "language": "PHP",
+      "orm": "Full",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "symfony2",
+      "notes": "",
+      "versus": "php"
     },
     },
     "php-templates": {
     "php-templates": {
       "setup_file": "setup",
       "setup_file": "setup",
       "fortune_url": "/fortunes-php",
       "fortune_url": "/fortunes-php",
       "port": 8080,
       "port": 8080,
-      "sort": 96
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "symfony2",
+      "language": "PHP",
+      "orm": "Full",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "symfony2",
+      "notes": "",
+      "versus": "php"
     },
     },
     "raw": {
     "raw": {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -22,7 +46,19 @@
       "query_url": "/db-raw?queries=",
       "query_url": "/db-raw?queries=",
       "fortune_url": "/fortunes-raw",
       "fortune_url": "/fortunes-raw",
       "port": 8080,
       "port": 8080,
-      "sort": 97
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "symfony2",
+      "language": "PHP",
+      "orm": "Raw",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "symfony2",
+      "notes": "",
+      "versus": "php"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
php-yaf/benchmark_config

@@ -8,7 +8,19 @@
       "query_url": "/bench/raw/db?queries=",
       "query_url": "/bench/raw/db?queries=",
       "fortune_url": "/bench/raw/fortunes",
       "fortune_url": "/bench/raw/fortunes",
       "port": 8080,
       "port": 8080,
-      "sort": 124
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "yaf",
+      "language": "PHP",
+      "orm": "Raw",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "yaf",
+      "notes": "",
+      "versus": "php"
     }
     }
   }]
   }]
 }
 }

+ 26 - 2
php/benchmark_config

@@ -8,7 +8,19 @@
       "db_url": "/dborm.php",
       "db_url": "/dborm.php",
       "query_url": "/dborm.php?queries=",
       "query_url": "/dborm.php?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 11
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "php",
+      "language": "PHP",
+      "orm": "Full",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "php",
+      "notes": "",
+      "versus": "php"
     },
     },
     "raw": {
     "raw": {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -17,7 +29,19 @@
       "fortune_url": "/fortune.php",
       "fortune_url": "/fortune.php",
       "update_url": "/updateraw.php?queries=",
       "update_url": "/updateraw.php?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 12
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "php",
+      "language": "PHP",
+      "orm": "Raw",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "php",
+      "notes": "",
+      "versus": "php"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
phreeze/benchmark_config

@@ -7,7 +7,19 @@
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 49
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "phreeze",
+      "language": "PHP",
+      "orm": "Micro",
+      "platform": "PHP-FPM",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "phreeze",
+      "notes": "",
+      "versus": "php"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
plack/benchmark_config

@@ -6,7 +6,19 @@
       "json_url": "/json",
       "json_url": "/json",
       "db_url": "/db",
       "db_url": "/db",
       "port": 8080,
       "port": 8080,
-      "sort": 118
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "plack",
+      "language": "Perl",
+      "orm": "Raw",
+      "platform": "Plack",
+      "webserver": "Starman",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "plack",
+      "notes": "",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 26 - 15
plain/benchmark_config

@@ -1,17 +1,28 @@
 {
 {
-    "framework" : "plain",
-    "tests" : [{
-        "default" : {
-            "setup_file" : "setup",
-            "json_url" : "/json",
-            "plaintext_url": "/plaintext",
-            "db_url": "/db",
-            "query_url": "/db?queries=",
-            "update_url": "/update?queries=",
-            "fortune_url": "/fortunes",
-            "port": 9080,
-            "sort": 316
-            }
-        }
-    ]
+  "framework": "plain",
+  "tests": [{
+    "default": {
+      "setup_file": "setup",
+      "json_url": "/json",
+      "plaintext_url": "/plaintext",
+      "db_url": "/db",
+      "query_url": "/db?queries=",
+      "update_url": "/update?queries=",
+      "fortune_url": "/fortunes",
+      "port": 9080,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "plain",
+      "language": "Scala",
+      "orm": "Full",
+      "platform": "Plain",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "plain",
+      "notes": "",
+      "versus": ""
+    }
+  }]
 }
 }

+ 13 - 1
play-java-jpa/benchmark_config

@@ -6,7 +6,19 @@
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "port": 9000,
       "port": 9000,
-      "sort": 113
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "play-java",
+      "language": "Java",
+      "orm": "Full",
+      "platform": "Netty",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "play-java-jpa",
+      "notes": "JPA alternate",
+      "versus": "netty"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
play-java/benchmark_config

@@ -7,7 +7,19 @@
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "port": 9000,
       "port": 9000,
-      "sort": 13
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "play-java",
+      "language": "Java",
+      "orm": "Full",
+      "platform": "Netty",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "play",
+      "notes": "",
+      "versus": "netty"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
play-scala-mongodb/benchmark_config

@@ -6,7 +6,19 @@
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "port": 9000,
       "port": 9000,
-      "sort": 83
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MongoDB",
+      "framework": "play-scala",
+      "language": "Scala",
+      "orm": "Raw",
+      "platform": "Netty",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "play-scala",
+      "notes": "",
+      "versus": "netty"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
play-scala/benchmark_config

@@ -9,7 +9,19 @@
       "fortune_url": "/fortunes",
       "fortune_url": "/fortunes",
       "update_url": "/update?queries=",
       "update_url": "/update?queries=",
       "port": 9000,
       "port": 9000,
-      "sort": 32
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "play-scala",
+      "language": "Scala",
+      "orm": "Full",
+      "platform": "Netty",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "play-scala",
+      "notes": "",
+      "versus": "netty"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
play-slick/benchmark_config

@@ -8,7 +8,19 @@
       "fortune_url": "/fortunes",
       "fortune_url": "/fortunes",
       "update_url": "/update?queries=",
       "update_url": "/update?queries=",
       "port": 9000,
       "port": 9000,
-      "sort": 135
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "play-scala",
+      "language": "Scala",
+      "orm": "Raw",
+      "platform": "Netty",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "play-slick",
+      "notes": "",
+      "versus": "netty"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
play1/benchmark_config

@@ -7,7 +7,19 @@
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 65
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "play1",
+      "language": "Java",
+      "orm": "Full",
+      "platform": "Netty",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "play1",
+      "notes": "",
+      "versus": "netty"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
play1siena/benchmark_config

@@ -7,7 +7,19 @@
       "db_url": "/play1/db",
       "db_url": "/play1/db",
       "query_url": "/play1/db?queries=",
       "query_url": "/play1/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 66
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "play1-siena",
+      "language": "Java",
+      "orm": "Full",
+      "platform": "Netty",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "play1-seina",
+      "notes": "Siena alternate",
+      "versus": "netty"
     }
     }
   }]
   }]
 }
 }

+ 26 - 2
rack/benchmark_config

@@ -6,14 +6,38 @@
       "json_url": "/json",
       "json_url": "/json",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 14
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "",
+      "framework": "rack",
+      "language": "Ruby",
+      "orm": "Full",
+      "platform": "Rack",
+      "webserver": "Unicorn",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "rack",
+      "notes": "",
+      "versus": ""
     },
     },
     "jruby": {
     "jruby": {
       "setup_file": "setup_jruby",
       "setup_file": "setup_jruby",
       "json_url": "/rack/json",
       "json_url": "/rack/json",
       "plaintext_url": "/rack/plaintext",
       "plaintext_url": "/rack/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 15
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "",
+      "framework": "rack",
+      "language": "Ruby",
+      "orm": "Full",
+      "platform": "JRuby",
+      "webserver": "Resin",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "rack",
+      "notes": "",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
racket-ws/benchmark_config

@@ -7,7 +7,19 @@
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/dbs/",
       "query_url": "/dbs/",
       "port": 8000,
       "port": 8000,
-      "sort": 322
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "racket-ws",
+      "language": "Racket",
+      "orm": "Micro",
+      "platform": "Racket",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "racket-ws",
+      "notes": "",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 26 - 2
rails-stripped/benchmark_config

@@ -7,7 +7,19 @@
       "db_url": "/hello_world/db",
       "db_url": "/hello_world/db",
       "query_url": "/hello_world/db?queries=",
       "query_url": "/hello_world/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 34
+      "approach": "Stripped",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "rails",
+      "language": "Ruby",
+      "orm": "Full",
+      "platform": "Rack",
+      "webserver": "Unicorn",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "rails",
+      "notes": "",
+      "versus": "rack"
     },
     },
     "jruby": {
     "jruby": {
       "setup_file": "setup_jruby",
       "setup_file": "setup_jruby",
@@ -15,7 +27,19 @@
       "db_url": "/rails/hello_world/db",
       "db_url": "/rails/hello_world/db",
       "query_url": "/rails/hello_world/db?queries=",
       "query_url": "/rails/hello_world/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 35
+      "approach": "Stripped",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "rails",
+      "language": "Ruby",
+      "orm": "Full",
+      "platform": "JRuby",
+      "webserver": "Resin",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "rails",
+      "notes": "",
+      "versus": "rack"
     }
     }
   }]
   }]
 }
 }

+ 26 - 2
rails/benchmark_config

@@ -9,7 +9,19 @@
       "fortune_url": "/fortune",
       "fortune_url": "/fortune",
       "update_url": "/update?queries=",
       "update_url": "/update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 16
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "rails",
+      "language": "Ruby",
+      "orm": "Full",
+      "platform": "Rack",
+      "webserver": "Unicorn",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "rails",
+      "notes": "",
+      "versus": "rack"
     },
     },
     "jruby": {
     "jruby": {
       "setup_file": "setup_jruby",
       "setup_file": "setup_jruby",
@@ -19,7 +31,19 @@
       "fortune_url": "/rails/fortune",
       "fortune_url": "/rails/fortune",
       "update_url": "/rails/update?queries=",
       "update_url": "/rails/update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 17
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "rails",
+      "language": "Ruby",
+      "orm": "Full",
+      "platform": "JRuby",
+      "webserver": "Resin",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "rails",
+      "notes": "",
+      "versus": "rack"
     }
     }
   }]
   }]
 }
 }

+ 39 - 3
restexpress/benchmark_config

@@ -5,21 +5,57 @@
       "setup_file": "setup",
       "setup_file": "setup",
       "json_url": "/restexpress/json",
       "json_url": "/restexpress/json",
       "port": 8080,
       "port": 8080,
-      "sort": 107
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "",
+      "framework": "rest-express",
+      "language": "Java",
+      "orm": "Raw",
+      "platform": "Netty",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "rest-express",
+      "notes": "",
+      "versus": "netty"
     },
     },
     "mysql-raw": {
     "mysql-raw": {
       "setup_file": "setup",
       "setup_file": "setup",
       "db_url": "/restexpress/mysql",
       "db_url": "/restexpress/mysql",
       "query_url": "/restexpress/mysql?queries=",
       "query_url": "/restexpress/mysql?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 108
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "rest-express",
+      "language": "Java",
+      "orm": "Raw",
+      "platform": "Netty",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "rest-express",
+      "notes": "",
+      "versus": "netty"
     },
     },
     "mongodb": {
     "mongodb": {
       "setup_file": "setup",
       "setup_file": "setup",
       "db_url": "/restexpress/mongodb",
       "db_url": "/restexpress/mongodb",
       "query_url": "/restexpress/mongodb?queries=",
       "query_url": "/restexpress/mongodb?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 109
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MongoDB",
+      "framework": "rest-express",
+      "language": "Java",
+      "orm": "Raw",
+      "platform": "Netty",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "rest-express",
+      "notes": "",
+      "versus": "netty"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
revel-jet/benchmark_config

@@ -8,7 +8,19 @@
       "fortune_url": "/fortune",
       "fortune_url": "/fortune",
       "update_url": "/update?queries=",
       "update_url": "/update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 315
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "revel",
+      "language": "Go",
+      "orm": "Raw",
+      "platform": "Go",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "revel-jet",
+      "notes": "",
+      "versus": "go"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
revel-qbs/benchmark_config

@@ -8,7 +8,19 @@
       "fortune_url": "/fortune",
       "fortune_url": "/fortune",
       "update_url": "/update?queries=",
       "update_url": "/update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 314
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "revel",
+      "language": "Go",
+      "orm": "Raw",
+      "platform": "Go",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "revel-qbs",
+      "notes": "",
+      "versus": "go"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
revel/benchmark_config

@@ -10,7 +10,19 @@
       "update_url": "/update?queries=",
       "update_url": "/update?queries=",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 112
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "revel",
+      "language": "Go",
+      "orm": "Raw",
+      "platform": "Go",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "revel",
+      "notes": "",
+      "versus": "go"
     }
     }
   }]
   }]
 }
 }

+ 14 - 2
ringojs-convenient/benchmark_config

@@ -1,5 +1,5 @@
 {
 {
-  "framework": "ringojs-convinient",
+  "framework": "ringojs-convenient",
   "tests": [{
   "tests": [{
     "default": {
     "default": {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -10,7 +10,19 @@
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "update_url": "/updates/",
       "update_url": "/updates/",
       "port": 8080,
       "port": 8080,
-      "sort": 75
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "ringo",
+      "language": "JavaScript",
+      "orm": "Micro",
+      "platform": "Jetty",
+      "webserver": "Jetty",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "ringo-conv",
+      "notes": "Convenient",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 26 - 2
ringojs/benchmark_config

@@ -6,7 +6,19 @@
       "json_url": "/json",
       "json_url": "/json",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 73
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "",
+      "framework": "ringo",
+      "language": "JavaScript",
+      "orm": "Raw",
+      "platform": "Jetty",
+      "webserver": "Jetty",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "ringojs",
+      "notes": "",
+      "versus": ""
     },
     },
     "raw": {
     "raw": {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -15,7 +27,19 @@
       "fortune_url": "/fortune",
       "fortune_url": "/fortune",
       "update_url": "/updates?queries=",
       "update_url": "/updates?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 74
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "ringo",
+      "language": "JavaScript",
+      "orm": "Raw",
+      "platform": "Jetty",
+      "webserver": "Jetty",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "ringojs",
+      "notes": "",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 26 - 2
scalatra/benchmark_config

@@ -5,14 +5,38 @@
       "setup_file": "setup",
       "setup_file": "setup",
       "json_url": "/scalatra/json",
       "json_url": "/scalatra/json",
       "port": 8080,
       "port": 8080,
-      "sort": 56
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "",
+      "framework": "scalatra",
+      "language": "Scala",
+      "orm": "Full",
+      "platform": "Servlet",
+      "webserver": "Resin",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "scalatra",
+      "notes": "",
+      "versus": "servlet"
     },
     },
     "raw": {
     "raw": {
       "setup_file": "setup",
       "setup_file": "setup",
       "db_url": "/scalatra/db",
       "db_url": "/scalatra/db",
       "query_url": "/scalatra/db?queries=",
       "query_url": "/scalatra/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 58
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "scalatra",
+      "language": "Scala",
+      "orm": "Raw",
+      "platform": "Servlet",
+      "webserver": "Resin",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "scalatra",
+      "notes": "",
+      "versus": "servlet"
     }
     }
   }]
   }]
 }
 }

+ 156 - 16
servicestack/benchmark_config

@@ -3,48 +3,104 @@
   "tests": [{
   "tests": [{
     "iis-default": {
     "iis-default": {
       "setup_file": "setup_iis",
       "setup_file": "setup_iis",
-      "os": "nt",
       "json_url": "/json",
       "json_url": "/json",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 127
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "",
+      "framework": "servicestack",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "NET",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "",
+      "display_name": "servicestack",
+      "notes": "",
+      "versus": ""
     },
     },
     "iis-sqlserver": {
     "iis-sqlserver": {
       "setup_file": "setup_iis",
       "setup_file": "setup_iis",
-      "os": "nt",
       "db_url": "/sqlserver/db",
       "db_url": "/sqlserver/db",
       "query_url": "/sqlserver/queries/",
       "query_url": "/sqlserver/queries/",
       "fortune_url": "/sqlserver/fortunes",
       "fortune_url": "/sqlserver/fortunes",
       "update_url": "/sqlserver/updates/",
       "update_url": "/sqlserver/updates/",
       "port": 8080,
       "port": 8080,
-      "sort": 156
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "SQLServer",
+      "framework": "servicestack",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "NET",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "Windows",
+      "display_name": "servicestack",
+      "notes": "",
+      "versus": ""
     },
     },
     "iis-mysql": {
     "iis-mysql": {
       "setup_file": "setup_iis",
       "setup_file": "setup_iis",
-      "os": "nt",
       "db_url": "/mysql/db",
       "db_url": "/mysql/db",
       "query_url": "/mysql/queries/",
       "query_url": "/mysql/queries/",
       "fortune_url": "/mysql/fortunes",
       "fortune_url": "/mysql/fortunes",
       "update_url": "/mysql/updates/",
       "update_url": "/mysql/updates/",
       "port": 8080,
       "port": 8080,
-      "sort": 157
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "servicestack",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "NET",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "Linux",
+      "display_name": "servicestack",
+      "notes": "",
+      "versus": ""
     },
     },
     "iis-postgresql": {
     "iis-postgresql": {
       "setup_file": "setup_iis",
       "setup_file": "setup_iis",
-      "os": "nt",
       "db_url": "/postgresql/db",
       "db_url": "/postgresql/db",
       "query_url": "/postgresql/queries/",
       "query_url": "/postgresql/queries/",
       "fortune_url": "/postgresql/fortunes",
       "fortune_url": "/postgresql/fortunes",
       "update_url": "/postgresql/updates/",
       "update_url": "/postgresql/updates/",
       "port": 8080,
       "port": 8080,
-      "sort": 158
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "Postgres",
+      "framework": "servicestack",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "NET",
+      "webserver": "IIS",
+      "os": "Windows",
+      "database_os": "Linux",
+      "display_name": "servicestack",
+      "notes": "",
+      "versus": ""
     },
     },
     "nginx-default": {
     "nginx-default": {
       "setup_file": "setup_nginx",
       "setup_file": "setup_nginx",
       "json_url": "/json",
       "json_url": "/json",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 128
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "",
+      "framework": "servicestack",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "Mono",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "servicestack",
+      "notes": "",
+      "versus": ""
     },
     },
     "nginx-sqlserver": {
     "nginx-sqlserver": {
       "setup_file": "setup_nginx",
       "setup_file": "setup_nginx",
@@ -53,7 +109,19 @@
       "fortune_url": "/sqlserver/fortunes",
       "fortune_url": "/sqlserver/fortunes",
       "update_url": "/sqlserver/updates/",
       "update_url": "/sqlserver/updates/",
       "port": 8080,
       "port": 8080,
-      "sort": 159
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "SQLServer",
+      "framework": "servicestack",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "Mono",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Windows",
+      "display_name": "servicestack",
+      "notes": "",
+      "versus": ""
     },
     },
     "nginx-mysql": {
     "nginx-mysql": {
       "setup_file": "setup_nginx",
       "setup_file": "setup_nginx",
@@ -62,7 +130,19 @@
       "fortune_url": "/mysql/fortunes",
       "fortune_url": "/mysql/fortunes",
       "update_url": "/mysql/updates/",
       "update_url": "/mysql/updates/",
       "port": 8080,
       "port": 8080,
-      "sort": 160
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "servicestack",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "Mono",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "servicestack",
+      "notes": "",
+      "versus": ""
     },
     },
     "nginx-postgresql": {
     "nginx-postgresql": {
       "setup_file": "setup_nginx",
       "setup_file": "setup_nginx",
@@ -71,14 +151,38 @@
       "fortune_url": "/postgresql/fortunes",
       "fortune_url": "/postgresql/fortunes",
       "update_url": "/postgresql/updates/",
       "update_url": "/postgresql/updates/",
       "port": 8080,
       "port": 8080,
-      "sort": 161
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "Postgres",
+      "framework": "servicestack",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "Mono",
+      "webserver": "nginx",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "servicestack",
+      "notes": "",
+      "versus": ""
     },
     },
     "xsp-default": {
     "xsp-default": {
       "setup_file": "setup_xsp",
       "setup_file": "setup_xsp",
       "json_url": "/json",
       "json_url": "/json",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 162
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "",
+      "framework": "servicestack",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "Mono",
+      "webserver": "XSP",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "servicestack",
+      "notes": "",
+      "versus": ""
     }, 
     }, 
     "xsp-sqlserver": {
     "xsp-sqlserver": {
       "setup_file": "setup_xsp",
       "setup_file": "setup_xsp",
@@ -87,7 +191,19 @@
       "fortune_url": "/sqlserver/fortunes",
       "fortune_url": "/sqlserver/fortunes",
       "update_url": "/sqlserver/updates/",
       "update_url": "/sqlserver/updates/",
       "port": 8080,
       "port": 8080,
-      "sort": 163
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "SQLServer",
+      "framework": "servicestack",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "Mono",
+      "webserver": "XSP",
+      "os": "Linux",
+      "database_os": "Windows",
+      "display_name": "servicestack",
+      "notes": "",
+      "versus": ""
     },
     },
     "xsp-mysql": {
     "xsp-mysql": {
       "setup_file": "setup_xsp",
       "setup_file": "setup_xsp",
@@ -96,7 +212,19 @@
       "fortune_url": "/mysql/fortunes",
       "fortune_url": "/mysql/fortunes",
       "update_url": "/mysql/updates/",
       "update_url": "/mysql/updates/",
       "port": 8080,
       "port": 8080,
-      "sort": 164
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "servicestack",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "Mono",
+      "webserver": "XSP",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "servicestack",
+      "notes": "",
+      "versus": ""
     },
     },
     "xsp-postgresql": {
     "xsp-postgresql": {
       "setup_file": "setup_xsp",
       "setup_file": "setup_xsp",
@@ -105,7 +233,19 @@
       "fortune_url": "/postgresql/fortunes",
       "fortune_url": "/postgresql/fortunes",
       "update_url": "/postgresql/updates/",
       "update_url": "/postgresql/updates/",
       "port": 8080,
       "port": 8080,
-      "sort": 165
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "Postgres",
+      "framework": "servicestack",
+      "language": "C#",
+      "orm": "Raw",
+      "platform": "Mono",
+      "webserver": "XSP",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "servicestack",
+      "notes": "",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 39 - 3
servlet/benchmark_config

@@ -6,7 +6,19 @@
       "json_url": "/servlet/json",
       "json_url": "/servlet/json",
       "plaintext_url": "/servlet/plaintext",
       "plaintext_url": "/servlet/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 18
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "",
+      "framework": "servlet",
+      "language": "Java",
+      "orm": "Raw",
+      "platform": "Servlet",
+      "webserver": "Resin",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "servlet",
+      "notes": "",
+      "versus": "servlet"
     },
     },
     "raw": {
     "raw": {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -15,7 +27,19 @@
       "fortune_url": "/servlet//fortunes",
       "fortune_url": "/servlet//fortunes",
       "update_url": "/servlet/update?queries=",
       "update_url": "/servlet/update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 19
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "servlet",
+      "language": "Java",
+      "orm": "Raw",
+      "platform": "Servlet",
+      "webserver": "Resin",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "servlet",
+      "notes": "",
+      "versus": "servlet"
     },
     },
     "postgres-raw": {
     "postgres-raw": {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -23,7 +47,19 @@
       "query_url": "/servlet/postgres?queries=",
       "query_url": "/servlet/postgres?queries=",
       "update_url": "/servlet/postgres-update?queries=",
       "update_url": "/servlet/postgres-update?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 99
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "Postgres",
+      "framework": "servlet",
+      "language": "Java",
+      "orm": "Raw",
+      "platform": "Servlet",
+      "webserver": "Resin",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "servlet",
+      "notes": "",
+      "versus": "servlet"
     }
     }
   }]
   }]
 }
 }

+ 26 - 2
sinatra/benchmark_config

@@ -7,7 +7,19 @@
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 20
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "sinatra",
+      "language": "Ruby",
+      "orm": "Full",
+      "platform": "Rack",
+      "webserver": "Unicorn",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "sinatra",
+      "notes": "",
+      "versus": "rack-ruby"
     },
     },
     "jruby": {
     "jruby": {
       "setup_file": "setup_jruby",
       "setup_file": "setup_jruby",
@@ -15,7 +27,19 @@
       "db_url": "/sinatra/db",
       "db_url": "/sinatra/db",
       "query_url": "/sinatra/db?queries=",
       "query_url": "/sinatra/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 21
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "sinatra",
+      "language": "Ruby",
+      "orm": "Full",
+      "platform": "JRuby",
+      "webserver": "Resin",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "sinatra-jruby",
+      "notes": "",
+      "versus": "rack-jruby"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
snap/benchmark_config

@@ -8,7 +8,19 @@
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8000,
       "port": 8000,
-      "sort": 41
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "snap",
+      "language": "Haskell",
+      "orm": "Full",
+      "platform": "Snap",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "snap",
+      "notes": "",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
spark/benchmark_config

@@ -7,7 +7,19 @@
       "db_url": "/spark/db",
       "db_url": "/spark/db",
       "query_url": "/spark/db?queries=",
       "query_url": "/spark/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 71
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "spark",
+      "language": "Java",
+      "orm": "Full",
+      "platform": "Servlet",
+      "webserver": "Resin",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "spark",
+      "notes": "",
+      "versus": "servlet"
     }
     }
   }]
   }]
 }
 }

+ 22 - 11
spray/benchmark_config

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

+ 13 - 1
spring/benchmark_config

@@ -8,7 +8,19 @@
       "query_url": "/spring/db?queries=",
       "query_url": "/spring/db?queries=",
       "fortune_url": "/spring/fortunes",
       "fortune_url": "/spring/fortunes",
       "port": 8080,
       "port": 8080,
-      "sort": 22
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "spring",
+      "language": "Java",
+      "orm": "Full",
+      "platform": "Servlet",
+      "webserver": "Resin",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "spring",
+      "notes": "",
+      "versus": "servlet"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
tapestry/benchmark_config

@@ -7,7 +7,19 @@
       "db_url": "/tapestry/hellodb",
       "db_url": "/tapestry/hellodb",
       "query_url": "/tapestry/hellodb?queries=",
       "query_url": "/tapestry/hellodb?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 23
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "tapestry",
+      "language": "Java",
+      "orm": "Full",
+      "platform": "Servlet",
+      "webserver": "Resin",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "tapestry",
+      "notes": "",
+      "versus": "servlet"
     }
     }
   }]
   }]
 }
 }

+ 64 - 37
toolset/benchmark/benchmarker.py

@@ -24,31 +24,13 @@ class Benchmarker:
     all_tests = self.__gather_tests()
     all_tests = self.__gather_tests()
 
 
     for test in all_tests:
     for test in all_tests:
-      print str(test.sort) + ": " + test.name
+      print test.name
 
 
     self.__finish()
     self.__finish()
 
 
   ############################################################
   ############################################################
   # End run_list_tests
   # End run_list_tests
   ############################################################
   ############################################################
-
-  ############################################################
-  # next_sort
-  # Prints the next available sort number that should be used 
-  # for any new tests
-  ############################################################
-  def next_sort_value(self):
-    all_tests = self.__gather_tests()
-
-    # all_tests is already sorted by sort, so we can just get
-    # the last one and add one to it.
-    print " Next sort number is: " + str(all_tests[-1].sort + 1)
-
-    self.__finish()
-
-  ############################################################
-  # End next_sort_value
-  ############################################################
   
   
   ############################################################
   ############################################################
   # parse_timestamp
   # parse_timestamp
@@ -87,10 +69,11 @@ class Benchmarker:
     ##########################
     ##########################
     print textwrap.dedent("""
     print textwrap.dedent("""
       =====================================================
       =====================================================
-        Preparing up Server and Client ...
+        Preparing Server, Database, and Client ...
       =====================================================
       =====================================================
       """)
       """)
     self.__setup_server()
     self.__setup_server()
+    self.__setup_database()
     self.__setup_client()
     self.__setup_client()
 
 
     ##########################
     ##########################
@@ -116,19 +99,35 @@ class Benchmarker:
   ############################################################
   ############################################################
 
 
   ############################################################
   ############################################################
-  # sftp_string(batch_file)
+  # database_sftp_string(batch_file)
+  # generates a fully qualified URL for sftp to database
+  ############################################################
+  def database_sftp_string(self, batch_file):
+    sftp_string =  "sftp -oStrictHostKeyChecking=no "
+    if batch_file != None: sftp_string += " -b " + batch_file + " "
+
+    if self.database_identity_file != None:
+      sftp_string += " -i " + self.database_identity_file + " "
+
+    return sftp_string + self.database_user + "@" + self.database_host
+  ############################################################
+  # End database_sftp_string
+  ############################################################
+
+  ############################################################
+  # client_sftp_string(batch_file)
   # generates a fully qualified URL for sftp to client
   # generates a fully qualified URL for sftp to client
   ############################################################
   ############################################################
-  def sftp_string(self, batch_file):
-    sftp_string =  "sftp -oStrictHostKeyChecking=no " 
+  def client_sftp_string(self, batch_file):
+    sftp_string =  "sftp -oStrictHostKeyChecking=no "
     if batch_file != None: sftp_string += " -b " + batch_file + " "
     if batch_file != None: sftp_string += " -b " + batch_file + " "
-    
-    if self.identity_file != None:
-      sftp_string += " -i " + self.identity_file + " "
+
+    if self.client_identity_file != None:
+      sftp_string += " -i " + self.client_identity_file + " "
 
 
     return sftp_string + self.client_user + "@" + self.client_host
     return sftp_string + self.client_user + "@" + self.client_host
   ############################################################
   ############################################################
-  # End sftp_string
+  # End client_sftp_string
   ############################################################
   ############################################################
 
 
   ############################################################
   ############################################################
@@ -178,7 +177,7 @@ class Benchmarker:
     if test not in self.results['rawData'].keys():
     if test not in self.results['rawData'].keys():
       self.results['rawData'][test] = dict()
       self.results['rawData'][test] = dict()
 
 
-    self.results['rawData'][test][framework.sort] = results
+    self.results['rawData'][test][framework.name] = results
 
 
   ############################################################
   ############################################################
   # End report_results
   # End report_results
@@ -230,7 +229,7 @@ class Benchmarker:
 
 
         tests = tests + framework_test.parse_config(config, dirname[2:], self)
         tests = tests + framework_test.parse_config(config, dirname[2:], self)
 
 
-    tests.sort(key=lambda x: x.sort)
+    tests.sort(key=lambda x: x.name)
     return tests
     return tests
   ############################################################
   ############################################################
   # End __gather_tests
   # End __gather_tests
@@ -261,6 +260,26 @@ class Benchmarker:
   # End __setup_server
   # End __setup_server
   ############################################################
   ############################################################
 
 
+  ############################################################
+  # Makes any necessary changes to the database machine that 
+  # should be made before running the tests. Is very similar
+  # to the server setup, but may also include database specific
+  # changes.
+  ############################################################
+  def __setup_database(self):
+    p = subprocess.Popen(self.database_ssh_string, stdin=subprocess.PIPE, shell=True)
+    p.communicate("""
+      sudo sysctl -w net.core.somaxconn=5000
+      sudo -s ulimit -n 16384
+      sudo sysctl net.ipv4.tcp_tw_reuse=1
+      sudo sysctl net.ipv4.tcp_tw_recycle=1
+      sudo sysctl -w kernel.shmmax=2147483648
+      sudo sysctl -w kernel.shmall=2097152
+    """)
+  ############################################################
+  # End __setup_database
+  ############################################################
+
   ############################################################
   ############################################################
   # Makes any necessary changes to the client machine that 
   # Makes any necessary changes to the client machine that 
   # should be made before running the tests. Is very similar
   # should be made before running the tests. Is very similar
@@ -268,7 +287,7 @@ class Benchmarker:
   # changes.
   # changes.
   ############################################################
   ############################################################
   def __setup_client(self):
   def __setup_client(self):
-    p = subprocess.Popen(self.ssh_string, stdin=subprocess.PIPE, shell=True)
+    p = subprocess.Popen(self.client_ssh_string, stdin=subprocess.PIPE, shell=True)
     p.communicate("""
     p.communicate("""
       sudo sysctl -w net.core.somaxconn=5000
       sudo sysctl -w net.core.somaxconn=5000
       sudo -s ulimit -n 16384
       sudo -s ulimit -n 16384
@@ -290,10 +309,12 @@ class Benchmarker:
   ############################################################
   ############################################################
   def __run_tests(self, tests):
   def __run_tests(self, tests):
     for test in tests:
     for test in tests:
-      if test.os == 'nt' and os.name != 'nt':
-        # this is a windows only test, but we're not on windows. abort.
+      if test.application_os != self.application_os or test.database_os != self.database_os:
+        # the operating system requirements of this test for the
+		# application server or the database server don't match
+		# our current environment
         continue
         continue
-        
+      
       # If the user specified which tests to run, then 
       # If the user specified which tests to run, then 
       # we can skip over tests that are not in that list
       # we can skip over tests that are not in that list
       if self.test != None and test.name not in self.test:
       if self.test != None and test.name not in self.test:
@@ -322,10 +343,11 @@ class Benchmarker:
       -----------------------------------------------------
       -----------------------------------------------------
       """.format(name=test.name))
       """.format(name=test.name))
       try:
       try:
-        p = subprocess.Popen(self.ssh_string, stdin=subprocess.PIPE, shell=True)
+        p = subprocess.Popen(self.database_ssh_string, stdin=subprocess.PIPE, shell=True)
         p.communicate("""
         p.communicate("""
           sudo restart mysql
           sudo restart mysql
           sudo restart mongodb
           sudo restart mongodb
+		  sudo /etc/init.d/postgresql restart
         """)
         """)
         time.sleep(10)
         time.sleep(10)
         
         
@@ -463,7 +485,9 @@ class Benchmarker:
     self.start_time = time.time()
     self.start_time = time.time()
 
 
     # setup some additional variables
     # setup some additional variables
+    if self.database_user == None: self.database_user = self.client_user
     if self.database_host == None: self.database_host = self.client_host
     if self.database_host == None: self.database_host = self.client_host
+    if self.database_identity_file == None: self.database_identity_file = self.client_identity_file
 
 
     self.result_directory = os.path.join("results", self.name)
     self.result_directory = os.path.join("results", self.name)
       
       
@@ -530,9 +554,12 @@ class Benchmarker:
       self.results['frameworks'] = [t.name for t in self.__gather_tests()]
       self.results['frameworks'] = [t.name for t in self.__gather_tests()]
 
 
     # Setup the ssh command string
     # Setup the ssh command string
-    self.ssh_string = "ssh -T -o StrictHostKeyChecking=no " + self.client_user + "@" + self.client_host
-    if self.identity_file != None:
-      self.ssh_string = self.ssh_string + " -i " + self.identity_file
+    self.database_ssh_string = "ssh -T -o StrictHostKeyChecking=no " + self.database_user + "@" + self.database_host
+    self.client_ssh_string = "ssh -T -o StrictHostKeyChecking=no " + self.client_user + "@" + self.client_host
+    if self.database_identity_file != None:
+      self.database_ssh_string = self.database_ssh_string + " -i " + self.database_identity_file
+    if self.client_identity_file != None:
+      self.client_ssh_string = self.client_ssh_string + " -i " + self.client_identity_file
 
 
     if self.install_software:
     if self.install_software:
       install = Installer(self)
       install = Installer(self)

+ 13 - 4
toolset/benchmark/framework_test.py

@@ -81,10 +81,19 @@ class FrameworkTest:
     done
     done
   """
   """
 
 
-  # The sort value is the order in which we represent all the tests. (Mainly helpful for our charts to give the underlying data)
-  # a consistent ordering even when we add or remove tests. Each test should give a sort value in it's benchmark_config file.
-  sort = 1000
-  os = 'linux'
+  language = None
+  platform = None
+  webserver = None
+  classification = None
+  database = None
+  approach = None
+  orm = None
+  framework = None
+  os = None
+  database_os = None
+  display_name = None
+  notes = None
+  versus = None
 
 
   ##########################################################################################
   ##########################################################################################
   # Public Methods
   # Public Methods

+ 10 - 6
toolset/run-tests.py

@@ -21,14 +21,16 @@ sys.path.append('toolset/setup/linux')
 # Set up argument parser
 # Set up argument parser
 ##########################################################
 ##########################################################
 parser = argparse.ArgumentParser(description='Run the Framework Benchmarking test suite.')
 parser = argparse.ArgumentParser(description='Run the Framework Benchmarking test suite.')
-parser.add_argument('-s', '--server-host', default='localhost')
-parser.add_argument('-c', '--client-host', default='localhost')
-parser.add_argument('-u', '--client-user', default='ubuntu')
-parser.add_argument('-d', '--database-host')
-parser.add_argument('-i', dest='identity_file', help='ssh key to ssh from the server instance to the client instance.')
+parser.add_argument('-s', '--server-host', default='localhost', help='The application server.')
+parser.add_argument('-c', '--client-host', default='localhost', help='The client / load generation server.')
+parser.add_argument('-u', '--client-user', help='The username to use for SSH to the client instance.')
+parser.add_argument('-i', '--client-identity-file', dest='client_identity_file', help='The key to use for SSH to the client instance.')
+parser.add_argument('-d', '--database-host', help='The database server.  If not provided, defaults to the value of --client-host.')
+parser.add_argument('--database-user', help='The username to use for SSH to the database instance.  If not provided, defaults to the value of --client-user.')
+parser.add_argument('--database-identity-file', dest='database_identity_file', help='The key to use for SSH to the database instance.  If not provided, defaults to the value of --client-identity-file.')
 parser.add_argument('-p', dest='password_prompt', action='store_true')
 parser.add_argument('-p', dest='password_prompt', action='store_true')
 parser.add_argument('--install-software', action='store_true', help='runs the installation script before running the rest of the commands')
 parser.add_argument('--install-software', action='store_true', help='runs the installation script before running the rest of the commands')
-parser.add_argument('--install', choices=['client', 'server', 'all'], default='all', help='Allows you to only install the server or client software')
+parser.add_argument('--install', choices=['client', 'database', 'server', 'all'], default='all', help='Allows you to only install the server, client, or database software')
 parser.add_argument('--install-error-action', choices=['abort', 'continue'], default='continue', help='action to take in case of error during installation')
 parser.add_argument('--install-error-action', choices=['abort', 'continue'], default='continue', help='action to take in case of error during installation')
 parser.add_argument('--test', nargs='+', help='names of tests to run')
 parser.add_argument('--test', nargs='+', help='names of tests to run')
 parser.add_argument('--exclude', nargs='+', help='names of tests to exclude')
 parser.add_argument('--exclude', nargs='+', help='names of tests to exclude')
@@ -45,6 +47,8 @@ parser.add_argument('--starting-concurrency', default=8, type=int)
 parser.add_argument('--sleep', type=int, default=60, help='the amount of time to sleep after starting each test to allow the server to start up.')
 parser.add_argument('--sleep', type=int, default=60, help='the amount of time to sleep after starting each test to allow the server to start up.')
 parser.add_argument('--parse', help='Parses the results of the given timestamp and merges that with the latest results')
 parser.add_argument('--parse', help='Parses the results of the given timestamp and merges that with the latest results')
 parser.add_argument('--name', default="ec2", help='The name to give this test. Results will be placed in a folder using this name.')
 parser.add_argument('--name', default="ec2", help='The name to give this test. Results will be placed in a folder using this name.')
+parser.add_argument('--application-os', choices=['linux', 'windows'], default='linux', help='The operating system of the application server.')
+parser.add_argument('--database-os', choices=['linux', 'windows'], default='linux', help='The operating system of the database server.')
 args = parser.parse_args()
 args = parser.parse_args()
 
 
 benchmarker = Benchmarker(vars(args))
 benchmarker = Benchmarker(vars(args))

+ 57 - 22
toolset/setup/linux/installer.py

@@ -13,6 +13,9 @@ class Installer:
     if self.benchmarker.install == 'all' or self.benchmarker.install == 'server':
     if self.benchmarker.install == 'all' or self.benchmarker.install == 'server':
         self.__install_server_software()
         self.__install_server_software()
 
 
+    if self.benchmarker.install == 'all' or self.benchmarker.install == 'database':
+        self.__install_database_software()
+
     if self.benchmarker.install == 'all' or self.benchmarker.install == 'client':
     if self.benchmarker.install == 'all' or self.benchmarker.install == 'client':
         self.__install_client_software()
         self.__install_client_software()
   ############################################################
   ############################################################
@@ -381,12 +384,12 @@ class Installer:
   ############################################################
   ############################################################
 
 
   ############################################################
   ############################################################
-  # __install_client_software
+  # __install_database_software
   ############################################################
   ############################################################
-  def __install_client_software(self):
-    print("\nINSTALL: Installing client software\n")
+  def __install_database_software(self):
+    print("\nINSTALL: Installing database software\n")
 
 
-    self.__run_command("cd .. && " + self.benchmarker.sftp_string(batch_file="config/client_sftp_batch"), True)
+    self.__run_command("cd .. && " + self.benchmarker.database_sftp_string(batch_file="config/database_sftp_batch"), True)
 
 
     remote_script = """
     remote_script = """
 
 
@@ -437,6 +440,53 @@ class Installer:
     sudo -u postgres -H /etc/init.d/postgresql start
     sudo -u postgres -H /etc/init.d/postgresql start
     sudo mv 60-postgresql-shm.conf /etc/sysctl.d/60-postgresql-shm.conf
     sudo mv 60-postgresql-shm.conf /etc/sysctl.d/60-postgresql-shm.conf
 
 
+    ##############################
+    # MongoDB
+    ##############################
+    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
+    sudo cp 10gen.list /etc/apt/sources.list.d/10gen.list
+    sudo apt-get update
+	yes | sudo apt-get remove mongodb-clients
+    yes | sudo apt-get install mongodb-10gen
+
+    sudo stop mongodb
+    sudo mv /etc/mongodb.conf /etc/mongodb.conf.orig
+    sudo mv mongodb.conf /etc/mongodb.conf
+    sudo cp -R -p /var/lib/mongodb /ssd/
+    sudo cp -R -p /var/log/mongodb /ssd/log/
+    sudo start mongodb
+    """
+    
+    print("\nINSTALL: %s" % self.benchmarker.database_ssh_string)
+    p = subprocess.Popen(self.benchmarker.database_ssh_string.split(" "), stdin=subprocess.PIPE)
+    p.communicate(remote_script)
+    returncode = p.returncode
+    if returncode != 0:
+      self.__install_error("status code %s running subprocess '%s'." % (returncode, self.benchmarker.database_ssh_string))
+
+    print("\nINSTALL: Finished installing database software\n")
+  ############################################################
+  # End __install_database_software
+  ############################################################
+
+  ############################################################
+  # __install_client_software
+  ############################################################
+  def __install_client_software(self):
+    print("\nINSTALL: Installing client software\n")
+
+    remote_script = """
+
+    ##############################
+    # Prerequisites
+    ##############################
+    yes | sudo apt-get update
+    yes | sudo apt-get install build-essential git libev-dev libpq-dev libreadline6-dev postgresql
+    sudo sh -c "echo '*               -    nofile          16384' >> /etc/security/limits.conf"
+
+    sudo mkdir -p /ssd
+    sudo mkdir -p /ssd/log
+
     ##############################
     ##############################
     # wrk
     # wrk
     ##############################
     ##############################
@@ -453,29 +503,14 @@ class Installer:
     make
     make
     sudo cp wrk /usr/local/bin/wrk-pipeline
     sudo cp wrk /usr/local/bin/wrk-pipeline
     cd ~
     cd ~
-
-    ##############################
-    # MongoDB
-    ##############################
-    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
-    sudo cp 10gen.list /etc/apt/sources.list.d/10gen.list
-    sudo apt-get update
-    yes | sudo apt-get install mongodb-10gen
-
-    sudo stop mongodb
-    sudo mv /etc/mongodb.conf /etc/mongodb.conf.orig
-    sudo mv mongodb.conf /etc/mongodb.conf
-    sudo cp -R -p /var/lib/mongodb /ssd/
-    sudo cp -R -p /var/log/mongodb /ssd/log/
-    sudo start mongodb
     """
     """
     
     
-    print("\nINSTALL: %s" % self.benchmarker.ssh_string)
-    p = subprocess.Popen(self.benchmarker.ssh_string.split(" "), stdin=subprocess.PIPE)
+    print("\nINSTALL: %s" % self.benchmarker.client_ssh_string)
+    p = subprocess.Popen(self.benchmarker.client_ssh_string.split(" "), stdin=subprocess.PIPE)
     p.communicate(remote_script)
     p.communicate(remote_script)
     returncode = p.returncode
     returncode = p.returncode
     if returncode != 0:
     if returncode != 0:
-      self.__install_error("status code %s running subprocess '%s'." % (returncode, self.benchmarker.ssh_string))
+      self.__install_error("status code %s running subprocess '%s'." % (returncode, self.benchmarker.client_ssh_string))
 
 
     print("\nINSTALL: Finished installing client software\n")
     print("\nINSTALL: Finished installing client software\n")
   ############################################################
   ############################################################

+ 39 - 3
tornado/benchmark_config

@@ -6,14 +6,38 @@
       "json_url": "/json",
       "json_url": "/json",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 52
+      "approach": "Realitic",
+      "classification": "Platform",
+      "database": "",
+      "framework": "tornado",
+      "language": "Python",
+      "orm": "Raw",
+      "platform": "Tornado",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "tornado",
+      "notes": "",
+      "versus": ""
     },
     },
     "raw": {
     "raw": {
       "setup_file": "setup",
       "setup_file": "setup",
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 53
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MongoDB",
+      "framework": "tornado",
+      "language": "Python",
+      "orm": "Raw",
+      "platform": "Tornado",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "tornado",
+      "notes": "",
+      "versus": ""
     },
     },
     "pypy-raw": {
     "pypy-raw": {
       "setup_file": "setup_pypy",
       "setup_file": "setup_pypy",
@@ -22,7 +46,19 @@
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
-      "sort": 134
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MongoDB",
+      "framework": "tornado",
+      "language": "Python",
+      "orm": "Raw",
+      "platform": "Tornado",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "tornado-pypy",
+      "notes": "",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
treefrog/benchmark_config

@@ -10,7 +10,19 @@
       "update_url": "/world/updates/",
       "update_url": "/world/updates/",
       "plaintext_url": "/world/plain",
       "plaintext_url": "/world/plain",
       "port": 8080,
       "port": 8080,
-      "sort": 305
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "treefrog",
+      "language": "C++",
+      "orm": "Micro",
+      "platform": "Treefrog",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "treefrog",
+      "notes": "",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 52 - 4
undertow/benchmark_config

@@ -7,7 +7,19 @@
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "cache_url": "/cache",
       "cache_url": "/cache",
       "port": 8080,
       "port": 8080,
-      "sort": 120
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "",
+      "framework": "undertow",
+      "language": "Java",
+      "orm": "Raw",
+      "platform": "Undertow",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "undertow",
+      "notes": "",
+      "versus": ""
     },
     },
     "mysql" : {
     "mysql" : {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -16,7 +28,19 @@
       "fortune_url": "/fortunes/mysql",
       "fortune_url": "/fortunes/mysql",
       "update_url": "/updates/mysql?queries=",
       "update_url": "/updates/mysql?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 306
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "undertow",
+      "language": "Java",
+      "orm": "Raw",
+      "platform": "Undertow",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "undertow",
+      "notes": "",
+      "versus": ""
     },
     },
     "postgresql" : {
     "postgresql" : {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -25,7 +49,19 @@
       "fortune_url": "/fortunes/postgresql",
       "fortune_url": "/fortunes/postgresql",
       "update_url": "/updates/postgresql?queries=",
       "update_url": "/updates/postgresql?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 307
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "Postgres",
+      "framework": "undertow",
+      "language": "Java",
+      "orm": "Raw",
+      "platform": "Undertow",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "undertow",
+      "notes": "",
+      "versus": ""
     },
     },
     "mongodb" : {
     "mongodb" : {
       "setup_file": "setup",
       "setup_file": "setup",
@@ -34,7 +70,19 @@
       "fortune_url": "/fortunes/mongodb",
       "fortune_url": "/fortunes/mongodb",
       "update_url": "/updates/mongodb?queries=",
       "update_url": "/updates/mongodb?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 308
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MongoDB",
+      "framework": "undertow",
+      "language": "Java",
+      "orm": "Raw",
+      "platform": "Undertow",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "undertow",
+      "notes": "",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
unfiltered/benchmark_config

@@ -7,7 +7,19 @@
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "port": 9000,
       "port": 9000,
-      "sort": 48
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "unfiltered",
+      "language": "Scala",
+      "orm": "Micro",
+      "platform": "Netty",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "unfiltered",
+      "notes": "",
+      "versus": "netty"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
uwsgi/benchmark_config

@@ -5,7 +5,19 @@
       "setup_file": "setup",
       "setup_file": "setup",
       "json_url": "/json",
       "json_url": "/json",
       "port": 8080,
       "port": 8080,
-      "sort": 244
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "",
+      "framework": "uwsgi",
+      "language": "Python",
+      "orm": "Raw",
+      "platform": "wsgi",
+      "webserver": "uwsgi",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "uwsgi",
+      "notes": "",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
vertx/benchmark_config

@@ -7,7 +7,19 @@
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 24
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MongoDB",
+      "framework": "vertx",
+      "language": "Java",
+      "orm": "Raw",
+      "platform": "Netty",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "vertx",
+      "notes": "",
+      "versus": "netty"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
wai/benchmark_config

@@ -5,7 +5,19 @@
       "setup_file": "setup",
       "setup_file": "setup",
       "json_url": "/json",
       "json_url": "/json",
       "port": 8000,
       "port": 8000,
-      "sort": 86
+      "approach": "Realistic",
+      "classification": "Platform",
+      "database": "MySQL",
+      "framework": "wai",
+      "language": "Haskell",
+      "orm": "Full",
+      "platform": "Wai",
+      "webserver": "Warp",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "wai",
+      "notes": "",
+      "versus": "wai"
     }
     }
   }]
   }]
 }
 }

+ 26 - 2
web-simple/benchmark_config

@@ -5,14 +5,38 @@
       "setup_file": "setup",
       "setup_file": "setup",
       "json_url": "/json",
       "json_url": "/json",
       "port": 8080,
       "port": 8080,
-      "sort":106 
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "",
+      "framework": "web-simple",
+      "language": "Perl",
+      "orm": "Raw",
+      "platform": "Plack",
+      "webserver": "Starman",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "web-simple",
+      "notes": "",
+      "versus": ""
     },
     },
     "raw": {
     "raw": {
       "setup_file": "setup",
       "setup_file": "setup",
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 117
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "web-simple",
+      "language": "Perl",
+      "orm": "Raw",
+      "platform": "Plack",
+      "webserver": "Starman",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "web-simple",
+      "notes": "",
+      "versus": ""
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
webgo/benchmark_config

@@ -5,7 +5,19 @@
       "setup_file": "setup",
       "setup_file": "setup",
       "json_url": "/json",
       "json_url": "/json",
       "port": 8080,
       "port": 8080,
-      "sort": 25
+      "approach": "Realistic",
+      "classification": "Micro",
+      "database": "MySQL",
+      "framework": "webgo",
+      "language": "Go",
+      "orm": "Full",
+      "platform": "Go",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "",
+      "display_name": "webgo",
+      "notes": "",
+      "versus": "goo"
     }
     }
   }]
   }]
 }
 }

+ 13 - 1
wicket/benchmark_config

@@ -7,7 +7,19 @@
       "db_url": "/wicket/db",
       "db_url": "/wicket/db",
       "query_url": "/wicket/db?queries=",
       "query_url": "/wicket/db?queries=",
       "port": 8080,
       "port": 8080,
-      "sort": 26
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "wicket",
+      "language": "Java",
+      "orm": "Full",
+      "platform": "Servlet",
+      "webserver": "Resin",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "wicket",
+      "notes": "",
+      "versus": "servlet"
     }
     }
   }]
   }]
 }
 }

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