Browse Source

Merge branch 'master' into wt-1007

Conflicts:
	toolset/setup/linux/frameworks/wt.sh
Hamilton Turner 11 years ago
parent
commit
0ec67404e8
100 changed files with 34 additions and 467 deletions
  1. 2 16
      .travis.yml
  2. 30 32
      README.md
  3. 0 3
      bottle/install.sh
  4. 2 1
      config/benchmark_profile
  5. 0 37
      config/requirements-py3.txt
  6. 0 36
      config/requirements-pypy.txt
  7. 0 38
      config/requirements.txt
  8. 0 4
      config/uwsgi_stop.ini
  9. 0 3
      django/install.sh
  10. 0 37
      django/setup.py
  11. 0 37
      django/setup_pg.py
  12. 0 37
      django/setup_py3.py
  13. 0 3
      falcon/install.sh
  14. 0 25
      falcon/setup_py3.py
  15. 0 3
      flask/install.sh
  16. 0 1
      flask/requirements.txt
  17. 0 43
      flask/setup.py
  18. 0 36
      flask/setup_nginxuwsgi.py
  19. 0 44
      flask/setup_py3.py
  20. 0 31
      flask/setup_pypy.py
  21. 0 0
      frameworks/C#/HttpListener/.gitignore
  22. 0 0
      frameworks/C#/HttpListener/.nuget/NuGet.Config
  23. 0 0
      frameworks/C#/HttpListener/.nuget/NuGet.targets
  24. 0 0
      frameworks/C#/HttpListener/HttpListener.sln
  25. 0 0
      frameworks/C#/HttpListener/HttpListener/App.config
  26. 0 0
      frameworks/C#/HttpListener/HttpListener/Fortunes.cshtml
  27. 0 0
      frameworks/C#/HttpListener/HttpListener/Fortunes.generated.cs
  28. 0 0
      frameworks/C#/HttpListener/HttpListener/HttpListener.csproj
  29. 0 0
      frameworks/C#/HttpListener/HttpListener/Models/Fortune.cs
  30. 0 0
      frameworks/C#/HttpListener/HttpListener/Models/MongoDB.cs
  31. 0 0
      frameworks/C#/HttpListener/HttpListener/Models/World.cs
  32. 0 0
      frameworks/C#/HttpListener/HttpListener/Program.cs
  33. 0 0
      frameworks/C#/HttpListener/HttpListener/Properties/AssemblyInfo.cs
  34. 0 0
      frameworks/C#/HttpListener/HttpListener/packages.config
  35. 0 0
      frameworks/C#/HttpListener/README.md
  36. 0 0
      frameworks/C#/HttpListener/__init__.py
  37. 0 0
      frameworks/C#/HttpListener/benchmark_config
  38. 0 0
      frameworks/C#/HttpListener/install.sh
  39. 0 0
      frameworks/C#/HttpListener/setup.ps1
  40. 0 0
      frameworks/C#/HttpListener/setup.py
  41. 0 0
      frameworks/C#/HttpListener/source_code
  42. 0 0
      frameworks/C#/aspnet-stripped/.gitignore
  43. 0 0
      frameworks/C#/aspnet-stripped/NuGet.exe
  44. 0 0
      frameworks/C#/aspnet-stripped/README.md
  45. 0 0
      frameworks/C#/aspnet-stripped/__init__.py
  46. 0 0
      frameworks/C#/aspnet-stripped/benchmark_config
  47. 0 0
      frameworks/C#/aspnet-stripped/install.sh
  48. 0 0
      frameworks/C#/aspnet-stripped/setup_iis.ps1
  49. 0 0
      frameworks/C#/aspnet-stripped/setup_iis.py
  50. 0 0
      frameworks/C#/aspnet-stripped/source_code
  51. 0 0
      frameworks/C#/aspnet-stripped/src/App_Code/Common.cs
  52. 0 0
      frameworks/C#/aspnet-stripped/src/App_Code/DbHandler.cs
  53. 0 0
      frameworks/C#/aspnet-stripped/src/App_Code/FortunesPage.cs
  54. 0 0
      frameworks/C#/aspnet-stripped/src/App_Code/JsonHandler.cs
  55. 0 0
      frameworks/C#/aspnet-stripped/src/App_Code/Models/Fortune.cs
  56. 0 0
      frameworks/C#/aspnet-stripped/src/App_Code/Models/MongoDB.cs
  57. 0 0
      frameworks/C#/aspnet-stripped/src/App_Code/Models/World.cs
  58. 0 0
      frameworks/C#/aspnet-stripped/src/App_Code/MongoDBHandlers.cs
  59. 0 0
      frameworks/C#/aspnet-stripped/src/App_Code/MyModule.cs
  60. 0 0
      frameworks/C#/aspnet-stripped/src/App_Code/NoAspxHandlerFactory.cs
  61. 0 0
      frameworks/C#/aspnet-stripped/src/App_Code/PlaintextHandler.cs
  62. 0 0
      frameworks/C#/aspnet-stripped/src/App_Code/UpdatesHandler.cs
  63. 0 0
      frameworks/C#/aspnet-stripped/src/Web.config
  64. 0 0
      frameworks/C#/aspnet-stripped/src/fortunes.aspx
  65. 0 0
      frameworks/C#/aspnet-stripped/src/mongodbfortunes.aspx
  66. 0 0
      frameworks/C#/aspnet-stripped/src/packages.config
  67. 0 0
      frameworks/C#/aspnet/.gitignore
  68. 0 0
      frameworks/C#/aspnet/README.md
  69. 0 0
      frameworks/C#/aspnet/__init__.py
  70. 0 0
      frameworks/C#/aspnet/benchmark_config
  71. 0 0
      frameworks/C#/aspnet/install.sh
  72. 0 0
      frameworks/C#/aspnet/lib/.nuget/NuGet.exe
  73. 0 0
      frameworks/C#/aspnet/lib/.nuget/NuGet.targets
  74. 0 0
      frameworks/C#/aspnet/lib/packages.config
  75. 0 0
      frameworks/C#/aspnet/nginx.conf
  76. 0 0
      frameworks/C#/aspnet/setup_iis.ps1
  77. 0 0
      frameworks/C#/aspnet/setup_iis.py
  78. 0 0
      frameworks/C#/aspnet/setup_nginx.py
  79. 0 0
      frameworks/C#/aspnet/setup_xsp.py
  80. 0 0
      frameworks/C#/aspnet/source_code
  81. 0 0
      frameworks/C#/aspnet/src/Application.cs
  82. 0 0
      frameworks/C#/aspnet/src/Benchmarks.AspNet.csproj
  83. 0 0
      frameworks/C#/aspnet/src/Benchmarks.sln
  84. 0 0
      frameworks/C#/aspnet/src/Controllers/AdoController.cs
  85. 0 0
      frameworks/C#/aspnet/src/Controllers/EntityFrameworkController.cs
  86. 0 0
      frameworks/C#/aspnet/src/Controllers/HomeController.cs
  87. 0 0
      frameworks/C#/aspnet/src/Controllers/JsonController.cs
  88. 0 0
      frameworks/C#/aspnet/src/Controllers/MongoDBController.cs
  89. 0 0
      frameworks/C#/aspnet/src/Controllers/PlaintextController.cs
  90. 0 0
      frameworks/C#/aspnet/src/Models/EntityFramework.cs
  91. 0 0
      frameworks/C#/aspnet/src/Models/Fortune.cs
  92. 0 0
      frameworks/C#/aspnet/src/Models/MongoDB.cs
  93. 0 0
      frameworks/C#/aspnet/src/Models/World.cs
  94. 0 0
      frameworks/C#/aspnet/src/Properties/PublishProfiles/IIS.pubxml
  95. 0 0
      frameworks/C#/aspnet/src/Views/Fortunes.cshtml
  96. 0 0
      frameworks/C#/aspnet/src/Views/Index.cshtml
  97. 0 0
      frameworks/C#/aspnet/src/Views/Web.config
  98. 0 0
      frameworks/C#/aspnet/src/Web.config
  99. 0 0
      frameworks/C#/evhttp-sharp/.gitignore
  100. 0 0
      frameworks/C#/evhttp-sharp/__init__.py

+ 2 - 16
.travis.yml

@@ -97,10 +97,10 @@ env:
     - TESTDIR=plain
     - TESTDIR=play1
     - TESTDIR=play1siena
+    - TESTDIR=play2-java
+    - TESTDIR=play2-scala
     - TESTDIR=play-activate-mysql
-    - TESTDIR=play-java
     - TESTDIR=play-java-jpa
-    - TESTDIR=play-scala
     - TESTDIR=play-scala-mongodb
     - TESTDIR=play-slick
     - TESTDIR=pyramid
@@ -144,9 +144,6 @@ env:
     - TESTDIR=yesod
 
 before_install:
-  # Enables $TRAVIS_COMMIT_RANGE for pull requests
-  - time ./toolset/setup/travis-ci/add_commit_range.sh
-  
   # Configure Travis-CI build environment for TFB
   #   e.g. setup databases, users, etc
   - time ./toolset/run-ci.py cisetup $TESTDIR
@@ -165,17 +162,6 @@ script:
   # Pick one test in this directory and verify
   - time ./toolset/run-ci.py verify $TESTDIR
 
-notifications:
-  irc:
-    channels:
-      - "chat.freenode.net#techempower-fwbm"
-    template:
-      - "%{repository_slug} branch '%{branch}' %{result} (%{author})"
-      - "Build %{build_number} took %{duration}. See %{build_url}"
-    on_success: always
-    on_failure: always
-    skip_join: true
-
 cache:
   directories:
     - installs/mono-3.2.8

+ 30 - 32
README.md

@@ -4,8 +4,8 @@
 This project provides representative performance measures across a wide field of web 
 application frameworks. With much help from the community, coverage is quite broad and 
 we are happy to broaden it further with contributions. The project presently includes 
-frameworks on many languages including `Go`, `Python`, `Java`, `Ruby`, `PHP`, `Clojure`, 
-`Groovy`, `JavaScript`, `Erlang`, `Haskell`, `Scala`, `Lua`, `C`, and others.  The 
+frameworks on many languages including `Go`, `Python`, `Java`, `Ruby`, `PHP`, `C#`, `Clojure`, 
+`Groovy`, `Dart`, `JavaScript`, `Erlang`, `Haskell`, `Scala`, `Perl`, `Lua`, `C`, and others.  The 
 current tests exercise plaintext responses, JSON seralization, database reads 
 and writes via the object-relational mapper (ORM), collections, sorting, server-side templates,
 and XSS counter-measures. Future tests will exercise other components and greater computation.
@@ -29,14 +29,13 @@ can run the verification for you. This is as simple as going to travis-ci.org, u
 `Log in with Github` button, and enabling Travis-CI for your fork. All commit pushes 
 will be automatically verified by Travis-CI, and you will get full log output. 
 You can submit a pull request when your code passes the Travis-CI verification and have 
-confidence it will be merged quickly. 
-While this development route it slightly slower than standard local development, it does not 
-require any local setup process.
+confidence it will be merged quickly. While this development route is slightly slower than 
+standard local development, it does not require any local setup process.
 
 You can also run *verify* mode on a single computer, although you should be comfortable with us 
 installing multiple large software suites. 
-You will need to enable passwordless SSH access to localhost ([google](http://hortonworks.com/kb/generating-ssh-keys-for-passwordless-login/) [for](http://superuser.com/questions/336226/how-to-ssh-to-localhost-without-password) [help](https://help.ubuntu.com/community/SSH/OpenSSH/Keys)), and you will also 
-need to enable passwordless sudo (google for help)
+You will need to enable passwordless SSH access to localhost ([search Google for help](https://www.google.com/#hl=en&q=passwordless%20SSH%20access), yielding references such as these: [article 1](http://hortonworks.com/kb/generating-ssh-keys-for-passwordless-login/) [article 2](http://superuser.com/questions/336226/how-to-ssh-to-localhost-without-password) [article 3](https://help.ubuntu.com/community/SSH/OpenSSH/Keys)), and you will also 
+need to enable passwordless sudo access ([Google for help](https://www.google.com/#hl=en&q=passwordless%20sudo)).
 Once you have cloned our repository, run `toolset/run-tests.py --help` for detailed 
 help on running in *verify* mode and see the sections below for more guidance. 
 
@@ -46,12 +45,10 @@ If you plan to run the benchmark and compare results, you need to run in *benchm
 mode. We recommend having a minimum of three distinct computers with a fast network 
 connection in between, all of which you should be comfortable installing a large amount
 of additional software on. One of these computers (the `app server`) must have passwordless
-SSH access to the other two ([google](http://hortonworks.com/kb/generating-ssh-keys-for-passwordless-login/)
-[for](http://superuser.com/questions/336226/how-to-ssh-to-localhost-without-password) 
-[help](https://help.ubuntu.com/community/SSH/OpenSSH/Keys)), and on every computer 
-you will need to have passwordless sudo access (google for help).
-Once you have cloned our repository, run `toolset/run-tests.py --help` for detailed 
-help on running in *benchmark* mode and see the sections below for more guidance. 
+SSH access to the other two ([search Google for help](https://www.google.com/#hl=en&q=passwordless%20SSH%20access), yielding references such as these: [article 1](http://hortonworks.com/kb/generating-ssh-keys-for-passwordless-login/) [article 2](http://superuser.com/questions/336226/how-to-ssh-to-localhost-without-password) [article 3](https://help.ubuntu.com/community/SSH/OpenSSH/Keys)), and on every computer 
+you will need to have passwordless sudo access ([Google for help](https://www.google.com/#hl=en&q=passwordless%20sudo)).
+Once you have cloned our repository, run `toolset/run-tests.py --help` for detailedhelp
+on running in *benchmark* mode and see the sections below for more guidance. 
 
 If you are not an expert, please ensure your setup can run in *verify* mode before 
 attempting to run in *benchmark* mode. 
@@ -60,20 +57,20 @@ attempting to run in *benchmark* mode.
 
 Running the full benchmark requires at least three computers:
 
-* `app server` : The computer that your framework will be launched on
-* `load server`: The computer that will generate client load. Aka `client machine`
-* `DB server`  : The computer that runs all the databases
+* `app server`: The computer that your framework will be launched on.
+* `load server`: The computer that will generate client load. Also known as the `client machine`.
+* `database server`: The computer that runs all the databases. Also knonw as the `DB server`.
 
-This codebase (aka `TechEmpower/FrameworkBenchmarks` aka `TFB`) must be run on 
+This codebase (`TechEmpower/FrameworkBenchmarks` aka `TFB`) must be run on 
 the `app server`. The codebase contains a number of `framework directories`, each 
-of which contains one or more `framework tests`. While our current setup has 
+of which contains one or more `framework test implementations`. While our current setup has 
 many directories, we are working to consolidate related code into fewer directories  
 with more tests per directory. 
 
 When run, `TFB` will: 
-* select which framework tests are to be run based on passed arguments
+* select which framework tests are to be run based on command-line arguments you provide
 * install the necessary software (both on the `app server` and other servers)
-* launch the framework 
+* launch the framework
 * access the urls listed in [the requirements](http://www.techempower.com/benchmarks/#section=code) and verify the responses
 * launch the load generation software on the `load server`
 * gather the results
@@ -88,20 +85,21 @@ on all three servers. If you are only planning to use *verify* mode, then
 all three servers can be the same computer, and you will need to ensure
 you have passwordless sudo access to `localhost`. 
 
-We run all tests on [Ubuntu 14.04](http://www.ubuntu.com/download/server), so 
-it is recommended you use this for development or use. 
+For all Linux framework tests, we use [Ubuntu 14.04](http://www.ubuntu.com/download/server), so 
+it is recommended you use this for development or use.  Furthermore, the load server is Linux-only,
+even when testing Windows frameworks.
 
 ## Configuration File Usage
 
-TFB takes a large number of command line flags, and it can become tedious to 
+TFB takes a large number of command-line arguments, and it can become tedious to 
 specify them repeatedly. We recommend you create a `benchmark.cfg` file by 
 copying the example `benchmark.cfg.example` file and modifying as needed. 
 See `toolset/run-tests.py --help` for a description of each flag. 
 
 For running in *verify* mode, you can set the various hosts to `localhost`. 
-For running in *benchmark* mode, you will need the public IP addresses.
+For running in *benchmark* mode, you will need all of the servers' IP addresses.
 
-Note: environment variables can also be used for a number of the arguments
+Note: environment variables can also be used for a number of the arguments.
 
 ## Installation Basics
 
@@ -130,10 +128,10 @@ You can choose to selectively install components by using the
 `--test` and `--exclude` flags. 
 
 ```
-# Install just the software for beego
+# Install just the software for beego (as an example)
 toolset/run-tests.py --install server --test beego --verbose --install-only
 
-# Install all php software but php-fuel
+# Install all php software but php-fuel (as another example)
 toolset/run-tests.py --install server --test php* --exclude php-fuel --verbose --install-only
 
 # Install *all* framework software. Expect this to take hours!
@@ -170,12 +168,12 @@ toolset/run-tests.py --test beego --mode verify
 # Run the default benchmark for the beego test
 toolset/run-tests.py --test beego
 
-# Modify which test types are run during benchmark
+# Specify which test types are run during benchmark
 toolset/run-tests.py --test beego --type json
 toolset/run-tests.py --test beego --type db
 toolset/run-tests.py --test beego --type fortune
 
-# Modify a number of options for how the load is generated
+# Specify a number of options for how the load is generated
 toolset/run-tests.py --test beego --max-concurrency 24 --max-threads 24 --duration 20 --max-queries 200
 
 # Run a tiny benchmark
@@ -189,7 +187,7 @@ The general structure is `results/<run name>/<timestamp>/logs/<test name>/<file>
 You can use the `--name` flag to change the `<run name>`
 If you re-run the same test multiple times, you will get a different folder
 for each `<timestamp>`, although the `latest` folder will be kept up to date. 
-The `<test name>` is simply the test you ran, and `<file>` is either `out.txt`
+The `<test name>` is simply the name of the test type you ran, and `<file>` is either `out.txt`
 or `err.txt` (these are the `logout` and `logerr` arguments passed into each 
 `setup.py` file. 
 
@@ -414,8 +412,8 @@ grails.sh  nawak.sh  play1.sh  siena.sh     vertx.sh  yesod.sh
 jester.sh  onion.sh  play2.sh  treefrog.sh  wt.sh
 $ ls languages
 composer.sh  erlang.sh   hhvm.sh   mono.sh    perl.sh     pypy.sh     racket.sh   urweb.sh
-dart.sh      go.sh       java.sh   nimrod.sh  phalcon.sh  python2.sh  ringojs.sh  xsp.sh
-elixir.sh    haskell.sh  jruby.sh  nodejs.sh  php.sh      python3.sh  ruby.sh     yaf.sh
+dart.sh      go.sh       java.sh   nimrod.sh  python2.sh  ringojs.sh  xsp.sh
+elixir.sh    haskell.sh  jruby.sh  nodejs.sh  php.sh      python3.sh  ruby.sh 
 $ ls systools
 leiningen.sh  maven.sh
 $ ls webservers

+ 0 - 3
bottle/install.sh

@@ -1,3 +0,0 @@
-#!/bin/bash
-
-fw_depends python2 python3 pypy

+ 2 - 1
config/benchmark_profile

@@ -21,6 +21,7 @@ export NODE_HOME=${IROOT}/node-v0.10.8-linux-x64
 export PLAY_HOME=${IROOT}/play-2.2.0
 export PLAY1_HOME=${IROOT}/play-1.2.5
 export MAVEN_HOME=${IROOT}/apache-maven-3.0.5
+export SBT_HOME=${IROOT}/sbt
 export PERL_HOME=${IROOT}/perl-5.18
 export DART_HOME=${IROOT}/dart-sdk
 export RACKET_HOME=${IROOT}/racket-5.3.6
@@ -28,7 +29,7 @@ export NIMROD_HOME=${IROOT}/nimrod
 export NGINX_HOME=/usr/local/nginx
 export ELIXIR_HOME=${IROOT}/elixir-0.13.3
 
-export PATH="$JAVA_HOME/bin:$GRAILS_HOME/bin:$PLAY_HOME:$PLAY1_HOME:$VERTX_HOME/bin:$GOROOT/bin:$NODE_HOME/bin:$HOME/FrameworkBenchmarks/installs/bin:$MAVEN_HOME/bin:$PERL_HOME/bin:$DART_HOME/bin:$RACKET_HOME/bin:$NIMROD_HOME/bin:$NGINX_HOME/sbin:$ELIXIR_HOME/bin:$PATH"
+export PATH="$JAVA_HOME/bin:$GRAILS_HOME/bin:$PLAY_HOME:$PLAY1_HOME:$VERTX_HOME/bin:$GOROOT/bin:$NODE_HOME/bin:$HOME/FrameworkBenchmarks/installs/bin:$MAVEN_HOME/bin:$SBT_HOME/bin:$PERL_HOME/bin:$DART_HOME/bin:$RACKET_HOME/bin:$NIMROD_HOME/bin:$NGINX_HOME/sbin:$ELIXIR_HOME/bin:$PATH"
 
 export LD_LIBRARY_PATH='$LD_LIBRARY_PATH:/usr/local/apr/lib'
 

+ 0 - 37
config/requirements-py3.txt

@@ -1,37 +0,0 @@
-mysqlclient==1.3.1
-PyMySQL==0.6.2
-psycopg2==2.5.3
-
-simplejson==3.5.2
-ujson==1.33
-# gevent==1.0.1 # gevent doesn't support Python 3 yet.
-# uwsgi is released too often to stick on single version.
-uwsgi
-
-gunicorn==19.0
-meinheld==0.5.6
-
-# Tornado
-tornado==3.2.2
-motor==0.3
-# pymongo is installed via motor dependency
-
-# Django
-Django==1.6.5
-
-# Flask
-Jinja2==2.7.3
-Werkzeug==0.9.6
-flask==0.10.1
-SQLAlchemy==0.9.4
-Flask-SQLAlchemy==1.0
-
-# Bottle
-bottle==0.12.7
-bottle-sqlalchemy==0.4.1
-
-# Falcon
-Cython==0.20.1
-falcon==0.1.8
-
-Momoko==1.1.3

+ 0 - 36
config/requirements-pypy.txt

@@ -1,36 +0,0 @@
-mysqlclient==1.3.1
-PyMySQL==0.6.2
-# TODO: Try psycopg2cffi
-#psycopg2==2.5.2
-
-#simplejson==3.4.1
-#ujson==1.33
-#gevent==1.0.1
-# uwsgi is released too often to stick on single version.
-uwsgi
-
-gunicorn==18.0
-meinheld==0.5.6
-
-# Tornado
-tornado==3.2.2
-motor==0.3
-# pymongo is installed via motor dependency
-
-# Django
-Django==1.6.5
-
-# Flask
-Jinja2==2.7.3
-Werkzeug==0.9.6
-flask==0.10.1
-SQLAlchemy==0.9.4
-Flask-SQLAlchemy==1.0
-
-# Bottle
-bottle==0.12.7
-bottle-sqlalchemy==0.4.1
-
-# Falcon
-# Cython==0.20.1
-falcon==0.1.8

+ 0 - 38
config/requirements.txt

@@ -1,38 +0,0 @@
-circus
-mysqlclient==1.3.1
-PyMySQL==0.6.2
-psycopg2==2.5.3
-
-simplejson==3.5.2
-ujson==1.33
-gevent==1.0.1
-# uwsgi is released too often to stick on single version.
-uwsgi
-
-gunicorn==19.0
-meinheld==0.5.6
-
-# Tornado
-tornado==3.2.2
-motor==0.3
-# pymongo is installed via motor dependency
-
-# Django
-Django==1.6.5
-
-# Flask
-Jinja2==2.7.3
-Werkzeug==0.9.6
-flask==0.10.1
-SQLAlchemy==0.9.4
-Flask-SQLAlchemy==1.0
-
-# Bottle
-bottle==0.12.7
-bottle-sqlalchemy==0.4.1
-
-# Falcon
-Cython==0.20.1
-falcon==0.1.8
-
-Momoko==1.1.3

+ 0 - 4
config/uwsgi_stop.ini

@@ -1,4 +0,0 @@
-# If uWSGI was started with --ini uwsgi.ini, it can be stopped with --ini uwsgi_stop.ini
-
-[uwsgi]
-stop = /tmp/uwsgi.pid

+ 0 - 3
django/install.sh

@@ -1,3 +0,0 @@
-#!/bin/bash
-
-fw_depends python2 python3

+ 0 - 37
django/setup.py

@@ -1,37 +0,0 @@
-import subprocess
-import setup_util
-import multiprocessing
-import os
-
-home = os.path.expanduser('~')
-bin_dir = os.path.expanduser('~/FrameworkBenchmarks/installs/py2/bin')
-NCPU = multiprocessing.cpu_count()
-
-proc = None
-
-
-def start(args, logfile, errfile):
-    global proc
-    setup_util.replace_text("django/hello/hello/settings.py", "HOST': '.*'", "HOST': '" + args.database_host + "'")
-    setup_util.replace_text("django/hello/hello/settings.py", "\/home\/ubuntu",  home)
-    env = os.environ.copy()
-    env['DJANGO_DB'] = 'mysql'
-    proc = subprocess.Popen([
-        bin_dir + "/gunicorn",
-        "hello.wsgi:application",
-        "-k", "meinheld.gmeinheld.MeinheldWorker",
-        "-b", "0.0.0.0:8080",
-        '-w', str(NCPU*3),
-        "--log-level=critical"],
-        cwd="django/hello",
-        env=env, stderr=errfile, stdout=logfile)
-    return 0
-
-def stop(logfile, errfile):
-    global proc
-    if proc is None:
-        return 0
-    proc.terminate()
-    proc.wait()
-    proc = None
-    return 0

+ 0 - 37
django/setup_pg.py

@@ -1,37 +0,0 @@
-import subprocess
-import setup_util
-import multiprocessing
-import os
-
-home = os.path.expanduser('~')
-bin_dir = os.path.expanduser('~/FrameworkBenchmarks/installs/py2/bin')
-NCPU = multiprocessing.cpu_count()
-
-proc = None
-
-
-def start(args, logfile, errfile):
-    global proc
-    setup_util.replace_text("django/hello/hello/settings.py", "HOST': '.*'", "HOST': '" + args.database_host + "'")
-    setup_util.replace_text("django/hello/hello/settings.py", "\/home\/ubuntu",  home)
-    env = os.environ.copy()
-    env['DJANGO_DB'] = 'postgresql_psycopg2'
-    proc = subprocess.Popen([
-        bin_dir + "/gunicorn",
-        "hello.wsgi:application",
-        "-k", "meinheld.gmeinheld.MeinheldWorker",
-        "-b", "0.0.0.0:8080",
-        '-w', str(NCPU*3),
-        "--log-level=critical"],
-        cwd="django/hello",
-        env=env, stderr=errfile, stdout=logfile)
-    return 0
-
-def stop(logfile, errfile):
-    global proc
-    if proc is None:
-        return 0
-    proc.terminate()
-    proc.wait()
-    proc = None
-    return 0

+ 0 - 37
django/setup_py3.py

@@ -1,37 +0,0 @@
-import subprocess
-import setup_util
-import multiprocessing
-import os
-
-home = os.path.expanduser('~')
-bin_dir = os.path.expanduser('~/FrameworkBenchmarks/installs/py3/bin')
-NCPU = multiprocessing.cpu_count()
-
-proc = None
-
-
-def start(args, logfile, errfile):
-    global proc
-    setup_util.replace_text("django/hello/hello/settings.py", "HOST': '.*'", "HOST': '" + args.database_host + "'")
-    setup_util.replace_text("django/hello/hello/settings.py", "\/home\/ubuntu",  home)
-    env = os.environ.copy()
-    env['DJANGO_DB'] = 'mysql'
-    proc = subprocess.Popen([
-        bin_dir + "/gunicorn",
-        "hello.wsgi:application",
-        "-k", "meinheld.gmeinheld.MeinheldWorker",
-        "-b", "0.0.0.0:8080",
-        '-w', str(NCPU*3),
-        "--log-level=critical"],
-        cwd="django/hello",
-        env=env, stderr=errfile, stdout=logfile)
-    return 0
-
-def stop(logfile, errfile):
-    global proc
-    if proc is None:
-        return 0
-    proc.terminate()
-    proc.wait()
-    proc = None
-    return 0

+ 0 - 3
falcon/install.sh

@@ -1,3 +0,0 @@
-#!/bin/bash
-
-fw_depends python2 python3 pypy

+ 0 - 25
falcon/setup_py3.py

@@ -1,25 +0,0 @@
-import subprocess
-import os
-
-bin_dir = os.path.expanduser('~/FrameworkBenchmarks/installs/py3/bin')
-
-proc = None
-
-
-def start(args, logfile, errfile):
-    global proc
-    proc = subprocess.Popen([
-        bin_dir + "/gunicorn",
-        "app:app",
-        "-c", "gunicorn_conf.py"],
-        cwd="falcon", stderr=errfile, stdout=logfile)
-    return 0
-
-
-def stop(logfile, errfile):
-    global proc
-    if proc is None:
-        return 0
-    proc.terminate()
-    proc = None
-    return 0

+ 0 - 3
flask/install.sh

@@ -1,3 +0,0 @@
-#!/bin/bash
-
-fw_depends python2 python3 pypy

+ 0 - 1
flask/requirements.txt

@@ -1 +0,0 @@
-Chaussette

+ 0 - 43
flask/setup.py

@@ -1,43 +0,0 @@
-import subprocess
-import setup_util
-import multiprocessing
-import os
-
-bin_dir = os.path.expanduser('~/FrameworkBenchmarks/installs/py2/bin')
-NCPU = multiprocessing.cpu_count()
-
-CIRCUS_INI = """\
-[watcher:app]
-cmd = {BIN}/chaussette --fd=$(circus.sockets.app) --backend=meinheld app.app
-use_sockets = True
-numprocesses = {PROCS}
-
-[socket:app]
-host = 0.0.0.0
-port = 8080
-"""
-
-proc = None
-
-def start(args, logfile, errfile):
-    global proc
-
-    subprocess.check_call(bin_dir + "/pip install -r requirements.txt",
-                          cwd="flask", stderr=errfile, stdout=logfile, shell=True)
-
-    with open("flask/circus.ini", "w") as f:
-        f.write(CIRCUS_INI.format(BIN=bin_dir, PROCS=NCPU*3))
-
-    setup_util.replace_text("flask/app.py", "DBHOSTNAME", args.database_host)
-    proc = subprocess.Popen([bin_dir + "/circusd", "circus.ini"],
-		            cwd="flask", stderr=errfile, stdout=logfile)
-    return 0
-
-def stop(logfile, errfile):
-    global proc
-    if proc is None:
-        return 0
-    proc.terminate()
-    proc.wait()
-    proc = None
-    return 0

+ 0 - 36
flask/setup_nginxuwsgi.py

@@ -1,36 +0,0 @@
-import subprocess
-import multiprocessing
-import os
-import setup_util
-
-bin_dir = os.path.expanduser('~/FrameworkBenchmarks/installs/py2/bin')
-config_dir = os.path.expanduser('~/FrameworkBenchmarks/config')
-NCPU = multiprocessing.cpu_count()
-NGINX_COMMAND = 'sudo /usr/local/nginx/sbin/nginx -c ' + config_dir + '/nginx_uwsgi.conf'
-
-
-def start(args, logfile, errfile):
-    setup_util.replace_text("flask/app.py", "DBHOSTNAME", args.database_host)
-    try:
-        subprocess.call(
-            NGINX_COMMAND,
-            shell=True, stdout=logfile, stderr=errfile)
-
-        # Run in the background, but keep stdout/stderr for easy debugging
-        subprocess.Popen(bin_dir + '/uwsgi --ini ' + config_dir + '/uwsgi.ini' +
-            ' --processes ' + str(NCPU * 3) +
-            ' --wsgi app:app',
-            shell=True, cwd='flask', stderr=errfile, stdout=logfile)
-        return 0
-    except subprocess.CalledProcessError:
-        return 1
-
-def stop(logfile, errfile):
-    subprocess.call(
-        NGINX_COMMAND + ' -s stop',
-        shell=True, stdout=logfile, stderr=errfile)
-    subprocess.call(bin_dir + '/uwsgi --ini ' + config_dir + '/uwsgi_stop.ini', shell=True, stderr=errfile, stdout=logfile)
-
-    os.system('killall nginx')
-    os.system('killall uwsgi')
-    return 0

+ 0 - 44
flask/setup_py3.py

@@ -1,44 +0,0 @@
-import subprocess
-import setup_util
-import multiprocessing
-import os
-
-PY2BIN = os.path.expanduser('~/FrameworkBenchmarks/installs/py2/bin')
-PY3BIN = os.path.expanduser('~/FrameworkBenchmarks/installs/py3/bin')
-NCPU = multiprocessing.cpu_count()
-
-CIRCUS_INI = """\
-[watcher:app]
-cmd = {BIN}/chaussette --fd=$(circus.sockets.app) --backend=meinheld app.app
-use_sockets = True
-numprocesses = {PROCS}
-
-[socket:app]
-host = 0.0.0.0
-port = 8080
-"""
-
-proc = None
-
-
-def start(args, logfile, errfile):
-    global proc
-
-    subprocess.check_call(PY3BIN + "/pip3 install -r requirements.txt",
-                          cwd="flask", stderr=errfile, stdout=logfile, shell=True)
-
-    with open("flask/circus.ini", "w") as f:
-        f.write(CIRCUS_INI.format(BIN=PY3BIN, PROCS=NCPU*3))
-
-    setup_util.replace_text("flask/app.py", "DBHOSTNAME", args.database_host)
-    proc = subprocess.Popen([PY2BIN + "/circusd", "circus.ini"],
-		            cwd="flask", stderr=errfile, stdout=logfile)
-    return 0
-
-def stop(logfile, errfile):
-    global proc
-    if proc is None:
-        return 0
-    proc.terminate()
-    proc = None
-    return 0

+ 0 - 31
flask/setup_pypy.py

@@ -1,31 +0,0 @@
-import subprocess
-import setup_util
-import multiprocessing
-import os
-
-bin_dir = os.path.expanduser('~/FrameworkBenchmarks/installs/pypy/bin')
-NCPU = multiprocessing.cpu_count()
-
-proc = None
-
-
-def start(args, logfile, errfile):
-    global proc
-    setup_util.replace_text("flask/app.py", "DBHOSTNAME", args.database_host)
-    proc = subprocess.Popen([
-        bin_dir + "/gunicorn",
-        "app:app",
-        "-k", "tornado",
-        "-b", "0.0.0.0:8080",
-        '-w', str(NCPU*3),
-        "--log-level=critical"],
-        cwd="flask", stderr=errfile, stdout=logfile)
-    return 0
-
-def stop(logfile, errfile):
-    global proc
-    if proc is None:
-        return 0
-    proc.terminate()
-    proc = None
-    return 0

+ 0 - 0
HttpListener/.gitignore → frameworks/C#/HttpListener/.gitignore


+ 0 - 0
HttpListener/.nuget/NuGet.Config → frameworks/C#/HttpListener/.nuget/NuGet.Config


+ 0 - 0
HttpListener/.nuget/NuGet.targets → frameworks/C#/HttpListener/.nuget/NuGet.targets


+ 0 - 0
HttpListener/HttpListener.sln → frameworks/C#/HttpListener/HttpListener.sln


+ 0 - 0
HttpListener/HttpListener/App.config → frameworks/C#/HttpListener/HttpListener/App.config


+ 0 - 0
HttpListener/HttpListener/Fortunes.cshtml → frameworks/C#/HttpListener/HttpListener/Fortunes.cshtml


+ 0 - 0
HttpListener/HttpListener/Fortunes.generated.cs → frameworks/C#/HttpListener/HttpListener/Fortunes.generated.cs


+ 0 - 0
HttpListener/HttpListener/HttpListener.csproj → frameworks/C#/HttpListener/HttpListener/HttpListener.csproj


+ 0 - 0
HttpListener/HttpListener/Models/Fortune.cs → frameworks/C#/HttpListener/HttpListener/Models/Fortune.cs


+ 0 - 0
HttpListener/HttpListener/Models/MongoDB.cs → frameworks/C#/HttpListener/HttpListener/Models/MongoDB.cs


+ 0 - 0
HttpListener/HttpListener/Models/World.cs → frameworks/C#/HttpListener/HttpListener/Models/World.cs


+ 0 - 0
HttpListener/HttpListener/Program.cs → frameworks/C#/HttpListener/HttpListener/Program.cs


+ 0 - 0
HttpListener/HttpListener/Properties/AssemblyInfo.cs → frameworks/C#/HttpListener/HttpListener/Properties/AssemblyInfo.cs


+ 0 - 0
HttpListener/HttpListener/packages.config → frameworks/C#/HttpListener/HttpListener/packages.config


+ 0 - 0
HttpListener/README.md → frameworks/C#/HttpListener/README.md


+ 0 - 0
HttpListener/__init__.py → frameworks/C#/HttpListener/__init__.py


+ 0 - 0
HttpListener/benchmark_config → frameworks/C#/HttpListener/benchmark_config


+ 0 - 0
HttpListener/install.sh → frameworks/C#/HttpListener/install.sh


+ 0 - 0
HttpListener/setup.ps1 → frameworks/C#/HttpListener/setup.ps1


+ 0 - 0
HttpListener/setup.py → frameworks/C#/HttpListener/setup.py


+ 0 - 0
HttpListener/source_code → frameworks/C#/HttpListener/source_code


+ 0 - 0
aspnet-stripped/.gitignore → frameworks/C#/aspnet-stripped/.gitignore


+ 0 - 0
aspnet-stripped/NuGet.exe → frameworks/C#/aspnet-stripped/NuGet.exe


+ 0 - 0
aspnet-stripped/README.md → frameworks/C#/aspnet-stripped/README.md


+ 0 - 0
ULib/__init__.py → frameworks/C#/aspnet-stripped/__init__.py


+ 0 - 0
aspnet-stripped/benchmark_config → frameworks/C#/aspnet-stripped/benchmark_config


+ 0 - 0
aspnet-stripped/install.sh → frameworks/C#/aspnet-stripped/install.sh


+ 0 - 0
aspnet-stripped/setup_iis.ps1 → frameworks/C#/aspnet-stripped/setup_iis.ps1


+ 0 - 0
aspnet-stripped/setup_iis.py → frameworks/C#/aspnet-stripped/setup_iis.py


+ 0 - 0
aspnet-stripped/source_code → frameworks/C#/aspnet-stripped/source_code


+ 0 - 0
aspnet-stripped/src/App_Code/Common.cs → frameworks/C#/aspnet-stripped/src/App_Code/Common.cs


+ 0 - 0
aspnet-stripped/src/App_Code/DbHandler.cs → frameworks/C#/aspnet-stripped/src/App_Code/DbHandler.cs


+ 0 - 0
aspnet-stripped/src/App_Code/FortunesPage.cs → frameworks/C#/aspnet-stripped/src/App_Code/FortunesPage.cs


+ 0 - 0
aspnet-stripped/src/App_Code/JsonHandler.cs → frameworks/C#/aspnet-stripped/src/App_Code/JsonHandler.cs


+ 0 - 0
aspnet-stripped/src/App_Code/Models/Fortune.cs → frameworks/C#/aspnet-stripped/src/App_Code/Models/Fortune.cs


+ 0 - 0
aspnet-stripped/src/App_Code/Models/MongoDB.cs → frameworks/C#/aspnet-stripped/src/App_Code/Models/MongoDB.cs


+ 0 - 0
aspnet-stripped/src/App_Code/Models/World.cs → frameworks/C#/aspnet-stripped/src/App_Code/Models/World.cs


+ 0 - 0
aspnet-stripped/src/App_Code/MongoDBHandlers.cs → frameworks/C#/aspnet-stripped/src/App_Code/MongoDBHandlers.cs


+ 0 - 0
aspnet-stripped/src/App_Code/MyModule.cs → frameworks/C#/aspnet-stripped/src/App_Code/MyModule.cs


+ 0 - 0
aspnet-stripped/src/App_Code/NoAspxHandlerFactory.cs → frameworks/C#/aspnet-stripped/src/App_Code/NoAspxHandlerFactory.cs


+ 0 - 0
aspnet-stripped/src/App_Code/PlaintextHandler.cs → frameworks/C#/aspnet-stripped/src/App_Code/PlaintextHandler.cs


+ 0 - 0
aspnet-stripped/src/App_Code/UpdatesHandler.cs → frameworks/C#/aspnet-stripped/src/App_Code/UpdatesHandler.cs


+ 0 - 0
aspnet-stripped/src/Web.config → frameworks/C#/aspnet-stripped/src/Web.config


+ 0 - 0
aspnet-stripped/src/fortunes.aspx → frameworks/C#/aspnet-stripped/src/fortunes.aspx


+ 0 - 0
aspnet-stripped/src/mongodbfortunes.aspx → frameworks/C#/aspnet-stripped/src/mongodbfortunes.aspx


+ 0 - 0
aspnet-stripped/src/packages.config → frameworks/C#/aspnet-stripped/src/packages.config


+ 0 - 0
aspnet/.gitignore → frameworks/C#/aspnet/.gitignore


+ 0 - 0
aspnet/README.md → frameworks/C#/aspnet/README.md


+ 0 - 0
activeweb/__init__.py → frameworks/C#/aspnet/__init__.py


+ 0 - 0
aspnet/benchmark_config → frameworks/C#/aspnet/benchmark_config


+ 0 - 0
aspnet/install.sh → frameworks/C#/aspnet/install.sh


+ 0 - 0
aspnet/lib/.nuget/NuGet.exe → frameworks/C#/aspnet/lib/.nuget/NuGet.exe


+ 0 - 0
aspnet/lib/.nuget/NuGet.targets → frameworks/C#/aspnet/lib/.nuget/NuGet.targets


+ 0 - 0
aspnet/lib/packages.config → frameworks/C#/aspnet/lib/packages.config


+ 0 - 0
aspnet/nginx.conf → frameworks/C#/aspnet/nginx.conf


+ 0 - 0
aspnet/setup_iis.ps1 → frameworks/C#/aspnet/setup_iis.ps1


+ 0 - 0
aspnet/setup_iis.py → frameworks/C#/aspnet/setup_iis.py


+ 0 - 0
aspnet/setup_nginx.py → frameworks/C#/aspnet/setup_nginx.py


+ 0 - 0
aspnet/setup_xsp.py → frameworks/C#/aspnet/setup_xsp.py


+ 0 - 0
aspnet/source_code → frameworks/C#/aspnet/source_code


+ 0 - 0
aspnet/src/Application.cs → frameworks/C#/aspnet/src/Application.cs


+ 0 - 0
aspnet/src/Benchmarks.AspNet.csproj → frameworks/C#/aspnet/src/Benchmarks.AspNet.csproj


+ 0 - 0
aspnet/src/Benchmarks.sln → frameworks/C#/aspnet/src/Benchmarks.sln


+ 0 - 0
aspnet/src/Controllers/AdoController.cs → frameworks/C#/aspnet/src/Controllers/AdoController.cs


+ 0 - 0
aspnet/src/Controllers/EntityFrameworkController.cs → frameworks/C#/aspnet/src/Controllers/EntityFrameworkController.cs


+ 0 - 0
aspnet/src/Controllers/HomeController.cs → frameworks/C#/aspnet/src/Controllers/HomeController.cs


+ 0 - 0
aspnet/src/Controllers/JsonController.cs → frameworks/C#/aspnet/src/Controllers/JsonController.cs


+ 0 - 0
aspnet/src/Controllers/MongoDBController.cs → frameworks/C#/aspnet/src/Controllers/MongoDBController.cs


+ 0 - 0
aspnet/src/Controllers/PlaintextController.cs → frameworks/C#/aspnet/src/Controllers/PlaintextController.cs


+ 0 - 0
aspnet/src/Models/EntityFramework.cs → frameworks/C#/aspnet/src/Models/EntityFramework.cs


+ 0 - 0
aspnet/src/Models/Fortune.cs → frameworks/C#/aspnet/src/Models/Fortune.cs


+ 0 - 0
aspnet/src/Models/MongoDB.cs → frameworks/C#/aspnet/src/Models/MongoDB.cs


+ 0 - 0
aspnet/src/Models/World.cs → frameworks/C#/aspnet/src/Models/World.cs


+ 0 - 0
aspnet/src/Properties/PublishProfiles/IIS.pubxml → frameworks/C#/aspnet/src/Properties/PublishProfiles/IIS.pubxml


+ 0 - 0
aspnet/src/Views/Fortunes.cshtml → frameworks/C#/aspnet/src/Views/Fortunes.cshtml


+ 0 - 0
aspnet/src/Views/Index.cshtml → frameworks/C#/aspnet/src/Views/Index.cshtml


+ 0 - 0
aspnet/src/Views/Web.config → frameworks/C#/aspnet/src/Views/Web.config


+ 0 - 0
aspnet/src/Web.config → frameworks/C#/aspnet/src/Web.config


+ 0 - 0
evhttp-sharp/.gitignore → frameworks/C#/evhttp-sharp/.gitignore


+ 0 - 0
aspnet-stripped/__init__.py → frameworks/C#/evhttp-sharp/__init__.py


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