Browse Source

Upgrade to version ffead-cpp v4.0 (#5738)

* Upgrade to version ffead-cpp v4.0
Added tests for multiple server backends

* Fixed some failing builds

* Fixed failing builds

* Fixed failing nginx sql tests

* Reduce build times

* Fixed multiple issues

* Disabled failing nginx-mysql test for now

* Removed unnecessary ENV line
Sumeet Chhetri 5 years ago
parent
commit
c1a841bf85
49 changed files with 1269 additions and 763 deletions
  1. 330 95
      frameworks/C++/ffead-cpp/benchmark_config.json
  2. 3 21
      frameworks/C++/ffead-cpp/ffead-cpp-apache-memcached.dockerfile
  3. 3 21
      frameworks/C++/ffead-cpp/ffead-cpp-apache-mongo.dockerfile
  4. 3 21
      frameworks/C++/ffead-cpp/ffead-cpp-apache-mysql.dockerfile
  5. 3 21
      frameworks/C++/ffead-cpp/ffead-cpp-apache-postgresql.dockerfile
  6. 3 21
      frameworks/C++/ffead-cpp/ffead-cpp-apache-redis.dockerfile
  7. 13 0
      frameworks/C++/ffead-cpp/ffead-cpp-cinatra.dockerfile
  8. 30 0
      frameworks/C++/ffead-cpp/ffead-cpp-crystal-h2o.dockerfile
  9. 27 0
      frameworks/C++/ffead-cpp/ffead-cpp-crystal-http.dockerfile
  10. 13 0
      frameworks/C++/ffead-cpp/ffead-cpp-drogon.dockerfile
  11. 26 0
      frameworks/C++/ffead-cpp/ffead-cpp-go-fasthttp.dockerfile
  12. 26 0
      frameworks/C++/ffead-cpp/ffead-cpp-go-gnet.dockerfile
  13. 25 0
      frameworks/C++/ffead-cpp/ffead-cpp-java-firenio.dockerfile
  14. 25 0
      frameworks/C++/ffead-cpp/ffead-cpp-java-rapidoid.dockerfile
  15. 25 0
      frameworks/C++/ffead-cpp/ffead-cpp-java-wizzardo-http.dockerfile
  16. 33 0
      frameworks/C++/ffead-cpp/ffead-cpp-libreactor.dockerfile
  17. 13 0
      frameworks/C++/ffead-cpp/ffead-cpp-lithium.dockerfile
  18. 3 21
      frameworks/C++/ffead-cpp/ffead-cpp-memcached.dockerfile
  19. 3 21
      frameworks/C++/ffead-cpp/ffead-cpp-mysql.dockerfile
  20. 3 21
      frameworks/C++/ffead-cpp/ffead-cpp-nginx-memcached.dockerfile
  21. 3 21
      frameworks/C++/ffead-cpp/ffead-cpp-nginx-mongo.dockerfile
  22. 3 21
      frameworks/C++/ffead-cpp/ffead-cpp-nginx-mysql.dockerfile
  23. 3 21
      frameworks/C++/ffead-cpp/ffead-cpp-nginx-postgresql.dockerfile
  24. 3 21
      frameworks/C++/ffead-cpp/ffead-cpp-nginx-redis.dockerfile
  25. 3 21
      frameworks/C++/ffead-cpp/ffead-cpp-postgresql.dockerfile
  26. 3 21
      frameworks/C++/ffead-cpp/ffead-cpp-redis.dockerfile
  27. 7 0
      frameworks/C++/ffead-cpp/ffead-cpp-rust-actix.dockerfile
  28. 28 0
      frameworks/C++/ffead-cpp/ffead-cpp-rust-base.dockerfile
  29. 7 0
      frameworks/C++/ffead-cpp/ffead-cpp-rust-hyper.dockerfile
  30. 26 0
      frameworks/C++/ffead-cpp/ffead-cpp-rust-rocket.dockerfile
  31. 7 0
      frameworks/C++/ffead-cpp/ffead-cpp-rust-thruster.dockerfile
  32. 29 0
      frameworks/C++/ffead-cpp/ffead-cpp-v-picov.dockerfile
  33. 29 0
      frameworks/C++/ffead-cpp/ffead-cpp-v-vweb.dockerfile
  34. 3 21
      frameworks/C++/ffead-cpp/ffead-cpp.dockerfile
  35. 21 10
      frameworks/C++/ffead-cpp/install_ffead-cpp-dependencies.sh
  36. 0 162
      frameworks/C++/ffead-cpp/install_ffead-cpp-framework-forsql.sh
  37. 95 71
      frameworks/C++/ffead-cpp/install_ffead-cpp-framework.sh
  38. 9 9
      frameworks/C++/ffead-cpp/install_ffead-cpp-httpd.sh
  39. 3 3
      frameworks/C++/ffead-cpp/install_ffead-cpp-nginx.sh
  40. 168 9
      frameworks/C++/ffead-cpp/run_ffead.sh
  41. 3 0
      frameworks/C++/ffead-cpp/server.sh
  42. 15 1
      frameworks/C++/ffead-cpp/te-benchmark-um/include/TeBkUm.h
  43. 15 0
      frameworks/C++/ffead-cpp/te-benchmark-um/include/TeBkUmWorld.h
  44. 15 0
      frameworks/C++/ffead-cpp/te-benchmark-um/sql-src/TeBkUmWorldmongo.cpp
  45. 15 0
      frameworks/C++/ffead-cpp/te-benchmark-um/sql-src/TeBkUmWorldmongo.h
  46. 15 0
      frameworks/C++/ffead-cpp/te-benchmark-um/sql-src/TeBkUmWorldsql.cpp
  47. 15 0
      frameworks/C++/ffead-cpp/te-benchmark-um/sql-src/TeBkUmWorldsql.h
  48. 101 88
      frameworks/C++/ffead-cpp/te-benchmark-um/src/TeBkUm.cpp
  49. 15 0
      frameworks/C++/ffead-cpp/te-benchmark-um/src/TeBkUmWorld.cpp

+ 330 - 95
frameworks/C++/ffead-cpp/benchmark_config.json

@@ -3,11 +3,12 @@
 	"tests": [{
 		"default": {
 			"json_url": "/te-benchmark-um/json",
-			"plaintext_url": "/te-benchmark-um/plaintext",
+			"plaintext_url": "/plaintext",
 			"db_url": "/te-benchmark-um/db",
 			"query_url": "/te-benchmark-um/queries?queries=",
 			"fortune_url": "/te-benchmark-um/fortunes",
 			"update_url": "/te-benchmark-um/updates?queries=",
+			"cached_query_url": "/te-benchmark-um/cached-worlds?count=",
 			"port": 8080,
 			"approach": "Realistic",
 			"classification": "Fullstack",
@@ -15,22 +16,23 @@
 			"framework": "ffead-cpp",
 			"language": "C++",
 			"orm": "Full",
-			"platform": "ffead-cpp",
+			"platform": "None",
 			"webserver": "ffead-cpp",
 			"os": "Linux",
 			"database_os": "Linux",
 			"display_name": "ffead-cpp-mongo",
-			"notes": "",
+			"notes": "mongodb redis",
 			"versus": "",
 			"tags": []
 		},
-		"mysql": {
+		"nginx-mysql": {
 			"json_url": "/te-benchmark-um/json",
-			"plaintext_url": "/te-benchmark-um/plaintext",
+			"plaintext_url": "/plaintext",
 			"db_url": "/te-benchmark-um/db",
 			"query_url": "/te-benchmark-um/queries?queries=",
 			"fortune_url": "/te-benchmark-um/fortunes",
 			"update_url": "/te-benchmark-um/updates?queries=",
+			"cached_query_url": "/te-benchmark-um/cached-worlds?count=",
 			"port": 8080,
 			"approach": "Realistic",
 			"classification": "Fullstack",
@@ -38,87 +40,341 @@
 			"framework": "ffead-cpp",
 			"language": "C++",
 			"orm": "Full",
-			"platform": "ffead-cpp",
-			"webserver": "ffead-cpp",
+			"platform": "None",
+			"webserver": "nginx",
 			"os": "Linux",
 			"database_os": "Linux",
-			"display_name": "ffead-cpp-mysql",
+			"display_name": "ffead-cpp-nginx-mysql",
+			"notes": "mysql memcached",
+			"versus": "",
+			"tags": ["broken"]
+		},
+		"lithium": {
+			"json_url": "/te-benchmark-um/json",
+			"plaintext_url": "/plaintext",
+			"port": 8080,
+			"approach": "Realistic",
+			"classification": "Fullstack",
+			"database": "None",
+			"framework": "ffead-cpp",
+			"language": "C++",
+			"orm": "Full",
+			"platform": "None",
+			"webserver": "lithium",
+			"os": "Linux",
+			"database_os": "Linux",
+			"display_name": "ffead-cpp-lithium",
 			"notes": "",
 			"versus": "",
 			"tags": []
 		},
-		"postgresql": {
+		"cinatra": {
 			"json_url": "/te-benchmark-um/json",
-			"plaintext_url": "/te-benchmark-um/plaintext",
-			"db_url": "/te-benchmark-um/db",
-			"query_url": "/te-benchmark-um/queries?queries=",
-			"fortune_url": "/te-benchmark-um/fortunes",
-			"update_url": "/te-benchmark-um/updates?queries=",
+			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"approach": "Realistic",
 			"classification": "Fullstack",
-			"database": "postgres",
+			"database": "None",
 			"framework": "ffead-cpp",
 			"language": "C++",
 			"orm": "Full",
-			"platform": "ffead-cpp",
-			"webserver": "ffead-cpp",
+			"platform": "None",
+			"webserver": "cinatra",
 			"os": "Linux",
 			"database_os": "Linux",
-			"display_name": "ffead-cpp-postgresql",
+			"display_name": "ffead-cpp-cinatra",
 			"notes": "",
 			"versus": "",
 			"tags": []
 		},
-		"apache-mongo": {
+		"drogon": {
 			"json_url": "/te-benchmark-um/json",
-			"plaintext_url": "/te-benchmark-um/plaintext",
-			"db_url": "/te-benchmark-um/db",
-			"query_url": "/te-benchmark-um/queries?queries=",
-			"fortune_url": "/te-benchmark-um/fortunes",
-			"update_url": "/te-benchmark-um/updates?queries=",
+			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"approach": "Realistic",
 			"classification": "Fullstack",
-			"database": "mongodb",
+			"database": "None",
 			"framework": "ffead-cpp",
 			"language": "C++",
 			"orm": "Full",
-			"platform": "ffead-cpp-apache",
-			"webserver": "apache",
+			"platform": "None",
+			"webserver": "drogon",
 			"os": "Linux",
 			"database_os": "Linux",
-			"display_name": "ffead-cpp-apache-mongo",
+			"display_name": "ffead-cpp-drogon",
 			"notes": "",
 			"versus": "",
-			"tags": ["broken"]
+			"tags": []
 		},
-		"apache-mysql": {
+		"libreactor": {
 			"json_url": "/te-benchmark-um/json",
-			"plaintext_url": "/te-benchmark-um/plaintext",
-			"db_url": "/te-benchmark-um/db",
-			"query_url": "/te-benchmark-um/queries?queries=",
-			"fortune_url": "/te-benchmark-um/fortunes",
-			"update_url": "/te-benchmark-um/updates?queries=",
+			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"approach": "Realistic",
 			"classification": "Fullstack",
-			"database": "mysql",
+			"database": "None",
 			"framework": "ffead-cpp",
 			"language": "C++",
 			"orm": "Full",
-			"platform": "ffead-cpp-apache",
-			"webserver": "apache",
+			"platform": "None",
+			"webserver": "libreactor",
+			"os": "Linux",
+			"database_os": "Linux",
+			"display_name": "ffead-cpp-libreactor",
+			"notes": "",
+			"versus": "",
+			"tags": []
+		},
+		"crystal-h2o": {
+			"json_url": "/te-benchmark-um/json",
+			"plaintext_url": "/plaintext",
+			"port": 8080,
+			"approach": "Realistic",
+			"classification": "Fullstack",
+			"database": "None",
+			"framework": "ffead-cpp",
+			"language": "C++",
+			"orm": "Full",
+			"platform": "None",
+			"webserver": "h2o.cr",
+			"os": "Linux",
+			"database_os": "Linux",
+			"display_name": "ffead-cpp-crystal-h2o",
+			"notes": "",
+			"versus": "",
+			"tags": []
+		},
+		"rust-actix": {
+			"json_url": "/te-benchmark-um/json",
+			"plaintext_url": "/plaintext",
+			"port": 8080,
+			"approach": "Realistic",
+			"classification": "Fullstack",
+			"database": "None",
+			"framework": "ffead-cpp",
+			"language": "C++",
+			"orm": "Full",
+			"platform": "None",
+			"webserver": "actix",
+			"os": "Linux",
+			"database_os": "Linux",
+			"display_name": "ffead-cpp-rust-actix",
+			"notes": "",
+			"versus": "",
+			"tags": []
+		},
+		"go-gnet": {
+			"json_url": "/te-benchmark-um/json",
+			"plaintext_url": "/plaintext",
+			"port": 8080,
+			"approach": "Realistic",
+			"classification": "Fullstack",
+			"database": "None",
+			"framework": "ffead-cpp",
+			"language": "C++",
+			"orm": "Full",
+			"platform": "None",
+			"webserver": "gnet",
+			"os": "Linux",
+			"database_os": "Linux",
+			"display_name": "ffead-cpp-go-gnet",
+			"notes": "",
+			"versus": "",
+			"tags": []
+		},
+		"v-picov": {
+			"json_url": "/te-benchmark-um/json",
+			"plaintext_url": "/plaintext",
+			"port": 8080,
+			"approach": "Realistic",
+			"classification": "Fullstack",
+			"database": "None",
+			"framework": "ffead-cpp",
+			"language": "C++",
+			"orm": "Full",
+			"platform": "None",
+			"webserver": "vweb",
+			"os": "Linux",
+			"database_os": "Linux",
+			"display_name": "ffead-cpp-v-vweb",
+			"notes": "",
+			"versus": "",
+			"tags": []
+		},
+		"java-firenio": {
+			"json_url": "/te-benchmark-um/json",
+			"plaintext_url": "/plaintext",
+			"port": 8080,
+			"approach": "Realistic",
+			"classification": "Fullstack",
+			"database": "None",
+			"framework": "ffead-cpp",
+			"language": "C++",
+			"orm": "Full",
+			"platform": "None",
+			"webserver": "firenio",
+			"os": "Linux",
+			"database_os": "Linux",
+			"display_name": "ffead-cpp-java-firenio",
+			"notes": "",
+			"versus": "",
+			"tags": []
+		},
+		"crystal-http": {
+			"json_url": "/te-benchmark-um/json",
+			"plaintext_url": "/plaintext",
+			"port": 8080,
+			"approach": "Realistic",
+			"classification": "Fullstack",
+			"database": "None",
+			"framework": "ffead-cpp",
+			"language": "C++",
+			"orm": "Full",
+			"platform": "None",
+			"webserver": "crystal",
+			"os": "Linux",
+			"database_os": "Linux",
+			"display_name": "ffead-cpp-crystal-http",
+			"notes": "",
+			"versus": "",
+			"tags": []
+		},
+		"rust-hyper": {
+			"json_url": "/te-benchmark-um/json",
+			"plaintext_url": "/plaintext",
+			"port": 8080,
+			"approach": "Realistic",
+			"classification": "Fullstack",
+			"database": "None",
+			"framework": "ffead-cpp",
+			"language": "C++",
+			"orm": "Full",
+			"platform": "None",
+			"webserver": "hyper",
+			"os": "Linux",
+			"database_os": "Linux",
+			"display_name": "ffead-cpp-rust-hyper",
+			"notes": "",
+			"versus": "",
+			"tags": []
+		},
+		"rust-thruster": {
+			"json_url": "/te-benchmark-um/json",
+			"plaintext_url": "/plaintext",
+			"port": 8080,
+			"approach": "Realistic",
+			"classification": "Fullstack",
+			"database": "None",
+			"framework": "ffead-cpp",
+			"language": "C++",
+			"orm": "Full",
+			"platform": "None",
+			"webserver": "thruster",
+			"os": "Linux",
+			"database_os": "Linux",
+			"display_name": "ffead-cpp-rust-thruster",
+			"notes": "",
+			"versus": "",
+			"tags": []
+		},
+		"go-fasthttp": {
+			"json_url": "/te-benchmark-um/json",
+			"plaintext_url": "/plaintext",
+			"port": 8080,
+			"approach": "Realistic",
+			"classification": "Fullstack",
+			"database": "None",
+			"framework": "ffead-cpp",
+			"language": "C++",
+			"orm": "Full",
+			"platform": "None",
+			"webserver": "fasthttp",
+			"os": "Linux",
+			"database_os": "Linux",
+			"display_name": "ffead-cpp-go-fasthttp",
+			"notes": "",
+			"versus": "",
+			"tags": []
+		},
+		"v-vweb": {
+			"json_url": "/te-benchmark-um/json",
+			"plaintext_url": "/plaintext",
+			"port": 8080,
+			"approach": "Realistic",
+			"classification": "Fullstack",
+			"database": "None",
+			"framework": "ffead-cpp",
+			"language": "C++",
+			"orm": "Full",
+			"platform": "None",
+			"webserver": "vweb",
+			"os": "Linux",
+			"database_os": "Linux",
+			"display_name": "ffead-cpp-v-vweb",
+			"notes": "",
+			"versus": "",
+			"tags": []
+		},
+		"java-rapidoid": {
+			"json_url": "/te-benchmark-um/json",
+			"plaintext_url": "/plaintext",
+			"port": 8080,
+			"approach": "Realistic",
+			"classification": "Fullstack",
+			"database": "None",
+			"framework": "ffead-cpp",
+			"language": "C++",
+			"orm": "Full",
+			"platform": "None",
+			"webserver": "rapidoid",
+			"os": "Linux",
+			"database_os": "Linux",
+			"display_name": "ffead-cpp-java-rapidoid",
+			"notes": "",
+			"versus": "",
+			"tags": []
+		},
+		"java-wizzardo-http": {
+			"json_url": "/te-benchmark-um/json",
+			"plaintext_url": "/plaintext",
+			"port": 8080,
+			"approach": "Realistic",
+			"classification": "Fullstack",
+			"database": "None",
+			"framework": "ffead-cpp",
+			"language": "C++",
+			"orm": "Full",
+			"platform": "None",
+			"webserver": "wizzardo-http",
+			"os": "Linux",
+			"database_os": "Linux",
+			"display_name": "ffead-cpp-java-wizzardo-http",
+			"notes": "",
+			"versus": "",
+			"tags": []
+		},
+		"rust-rocket": {
+			"json_url": "/te-benchmark-um/json",
+			"plaintext_url": "/plaintext",
+			"port": 8080,
+			"approach": "Realistic",
+			"classification": "Fullstack",
+			"database": "None",
+			"framework": "ffead-cpp",
+			"language": "C++",
+			"orm": "Full",
+			"platform": "None",
+			"webserver": "rocket",
 			"os": "Linux",
 			"database_os": "Linux",
-			"display_name": "ffead-cpp-apache-mysql",
+			"display_name": "ffead-cpp-rust-rocket",
 			"notes": "",
 			"versus": "",
 			"tags": ["broken"]
 		},
-		"apache-postgresql": {
+		"mysql": {
 			"json_url": "/te-benchmark-um/json",
-			"plaintext_url": "/te-benchmark-um/plaintext",
+			"plaintext_url": "/plaintext",
 			"db_url": "/te-benchmark-um/db",
 			"query_url": "/te-benchmark-um/queries?queries=",
 			"fortune_url": "/te-benchmark-um/fortunes",
@@ -126,22 +382,22 @@
 			"port": 8080,
 			"approach": "Realistic",
 			"classification": "Fullstack",
-			"database": "postgres",
+			"database": "mysql",
 			"framework": "ffead-cpp",
 			"language": "C++",
 			"orm": "Full",
-			"platform": "ffead-cpp-apache",
-			"webserver": "apache",
+			"platform": "None",
+			"webserver": "ffead-cpp",
 			"os": "Linux",
 			"database_os": "Linux",
-			"display_name": "ffead-cpp-apache-postgresql",
+			"display_name": "ffead-cpp-mysql",
 			"notes": "",
 			"versus": "",
 			"tags": ["broken"]
 		},
-		"nginx-mongo": {
+		"postgresql": {
 			"json_url": "/te-benchmark-um/json",
-			"plaintext_url": "/te-benchmark-um/plaintext",
+			"plaintext_url": "/plaintext",
 			"db_url": "/te-benchmark-um/db",
 			"query_url": "/te-benchmark-um/queries?queries=",
 			"fortune_url": "/te-benchmark-um/fortunes",
@@ -149,22 +405,22 @@
 			"port": 8080,
 			"approach": "Realistic",
 			"classification": "Fullstack",
-			"database": "mongodb",
+			"database": "postgres",
 			"framework": "ffead-cpp",
 			"language": "C++",
 			"orm": "Full",
-			"platform": "ffead-cpp-nginx",
-			"webserver": "nginx",
+			"platform": "None",
+			"webserver": "ffead-cpp",
 			"os": "Linux",
 			"database_os": "Linux",
-			"display_name": "ffead-cpp-nginx-mongo",
+			"display_name": "ffead-cpp-postgresql",
 			"notes": "",
 			"versus": "",
-			"tags": []
+			"tags": ["broken"]
 		},
-		"nginx-mysql": {
+		"nginx-mongo": {
 			"json_url": "/te-benchmark-um/json",
-			"plaintext_url": "/te-benchmark-um/plaintext",
+			"plaintext_url": "/plaintext",
 			"db_url": "/te-benchmark-um/db",
 			"query_url": "/te-benchmark-um/queries?queries=",
 			"fortune_url": "/te-benchmark-um/fortunes",
@@ -172,22 +428,22 @@
 			"port": 8080,
 			"approach": "Realistic",
 			"classification": "Fullstack",
-			"database": "mysql",
+			"database": "mongodb",
 			"framework": "ffead-cpp",
 			"language": "C++",
 			"orm": "Full",
-			"platform": "ffead-cpp-nginx",
+			"platform": "None",
 			"webserver": "nginx",
 			"os": "Linux",
 			"database_os": "Linux",
-			"display_name": "ffead-cpp-nginx-mysql",
+			"display_name": "ffead-cpp-nginx-mongo",
 			"notes": "",
 			"versus": "",
-			"tags": []
+			"tags": ["broken"]
 		},
 		"nginx-postgresql": {
 			"json_url": "/te-benchmark-um/json",
-			"plaintext_url": "/te-benchmark-um/plaintext",
+			"plaintext_url": "/plaintext",
 			"db_url": "/te-benchmark-um/db",
 			"query_url": "/te-benchmark-um/queries?queries=",
 			"fortune_url": "/te-benchmark-um/fortunes",
@@ -199,14 +455,14 @@
 			"framework": "ffead-cpp",
 			"language": "C++",
 			"orm": "Full",
-			"platform": "ffead-cpp-nginx",
+			"platform": "None",
 			"webserver": "nginx",
 			"os": "Linux",
 			"database_os": "Linux",
 			"display_name": "ffead-cpp-nginx-postgresql",
 			"notes": "",
 			"versus": "",
-			"tags": []
+			"tags": ["broken"]
 		},
 		"redis": {
 			"cached_query_url": "/te-benchmark-um/cached-worlds?count=",
@@ -218,7 +474,7 @@
 			"framework": "ffead-cpp",
 			"language": "C++",
 			"orm": "Full",
-			"platform": "ffead-cpp",
+			"platform": "None",
 			"webserver": "ffead-cpp",
 			"os": "Linux",
 			"database_os": "Linux",
@@ -226,7 +482,7 @@
 			"notes": "",
 			"versus": "",
 			"wait_before_sending_requests": 10,
-			"tags": []
+			"tags": ["broken"]
 		},
 		"nginx-redis": {
 			"cached_query_url": "/te-benchmark-um/cached-worlds?count=",
@@ -238,7 +494,7 @@
 			"framework": "ffead-cpp",
 			"language": "C++",
 			"orm": "Full",
-			"platform": "ffead-cpp-nginx",
+			"platform": "None",
 			"webserver": "nginx",
 			"os": "Linux",
 			"database_os": "Linux",
@@ -246,26 +502,6 @@
 			"notes": "",
 			"versus": "",
 			"wait_before_sending_requests": 10,
-			"tags": []
-		},
-		"apache-redis": {
-			"cached_query_url": "/te-benchmark-um/cached-worlds?count=",
-			"port": 8080,
-			"approach": "Realistic",
-			"classification": "Fullstack",
-			"database": "mongodb",
-			"cache": "redis",
-			"framework": "ffead-cpp",
-			"language": "C++",
-			"orm": "Full",
-			"platform": "ffead-cpp-apache",
-			"webserver": "apache",
-			"os": "Linux",
-			"database_os": "Linux",
-			"display_name": "ffead-cpp-apache-mongo-redis",
-			"notes": "",
-			"versus": "",
-			"wait_before_sending_requests": 10,
 			"tags": ["broken"]
 		},
 		"memcached": {
@@ -278,7 +514,7 @@
 			"framework": "ffead-cpp",
 			"language": "C++",
 			"orm": "Full",
-			"platform": "ffead-cpp",
+			"platform": "None",
 			"webserver": "ffead-cpp",
 			"os": "Linux",
 			"database_os": "Linux",
@@ -286,7 +522,7 @@
 			"notes": "",
 			"versus": "",
 			"wait_before_sending_requests": 10,
-			"tags": []
+			"tags": ["broken"]
 		},
 		"nginx-memcached": {
 			"cached_query_url": "/te-benchmark-um/cached-worlds?count=",
@@ -298,7 +534,7 @@
 			"framework": "ffead-cpp",
 			"language": "C++",
 			"orm": "Full",
-			"platform": "ffead-cpp-nginx",
+			"platform": "None",
 			"webserver": "nginx",
 			"os": "Linux",
 			"database_os": "Linux",
@@ -306,26 +542,25 @@
 			"notes": "",
 			"versus": "",
 			"wait_before_sending_requests": 10,
-			"tags": []
+			"tags": ["broken"]
 		},
-		"apache-memcached": {
-			"cached_query_url": "/te-benchmark-um/cached-worlds?count=",
+		"apache-mongo": {
+			"json_url": "/te-benchmark-um/json",
+			"plaintext_url": "/plaintext",
 			"port": 8080,
 			"approach": "Realistic",
 			"classification": "Fullstack",
-			"database": "mongodb",
-			"cache": "memcached",
+			"database": "None",
 			"framework": "ffead-cpp",
 			"language": "C++",
 			"orm": "Full",
-			"platform": "ffead-cpp-apache",
+			"platform": "None",
 			"webserver": "apache",
 			"os": "Linux",
 			"database_os": "Linux",
-			"display_name": "ffead-cpp-apache-mongo-memcached",
+			"display_name": "ffead-cpp-apache",
 			"notes": "",
 			"versus": "",
-			"wait_before_sending_requests": 10,
 			"tags": ["broken"]
 		}
 	}]

+ 3 - 21
frameworks/C++/ffead-cpp/ffead-cpp-apache-memcached.dockerfile

@@ -1,31 +1,13 @@
 FROM buildpack-deps:bionic
 
 ENV IROOT=/installs
-ENV FFEAD_CPP_PATH=${IROOT}/ffead-cpp-3.0
-ENV PATH=${FFEAD_CPP_PATH}:${PATH}
-
-RUN mkdir /installs
-
-WORKDIR /
 
 COPY te-benchmark-um/ te-benchmark-um/
 COPY *.sh ./
-RUN chmod 755 *.sh
-
-RUN ./install_ffead-cpp-dependencies.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-framework.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-httpd.sh
-
-WORKDIR /
 
-RUN ./install_ffead-cpp-nginx.sh
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
 
 WORKDIR /
 
-CMD ./run_ffead.sh apache memcached
+CMD ./run_ffead.sh ffead-cpp-4.0 apache memcached

+ 3 - 21
frameworks/C++/ffead-cpp/ffead-cpp-apache-mongo.dockerfile

@@ -1,31 +1,13 @@
 FROM buildpack-deps:bionic
 
 ENV IROOT=/installs
-ENV FFEAD_CPP_PATH=${IROOT}/ffead-cpp-3.0
-ENV PATH=${FFEAD_CPP_PATH}:${PATH}
-
-RUN mkdir /installs
-
-WORKDIR /
 
 COPY te-benchmark-um/ te-benchmark-um/
 COPY *.sh ./
-RUN chmod 755 *.sh
-
-RUN ./install_ffead-cpp-dependencies.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-framework.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-httpd.sh
-
-WORKDIR /
 
-RUN ./install_ffead-cpp-nginx.sh
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
 
 WORKDIR /
 
-CMD ./run_ffead.sh apache mongo
+CMD ./run_ffead.sh ffead-cpp-4.0 apache mongo

+ 3 - 21
frameworks/C++/ffead-cpp/ffead-cpp-apache-mysql.dockerfile

@@ -1,31 +1,13 @@
 FROM buildpack-deps:bionic
 
 ENV IROOT=/installs
-ENV FFEAD_CPP_PATH=${IROOT}/ffead-cpp-3.0
-ENV PATH=${FFEAD_CPP_PATH}:${PATH}
-
-RUN mkdir /installs
-
-WORKDIR /
 
 COPY te-benchmark-um/ te-benchmark-um/
 COPY *.sh ./
-RUN chmod 755 *.sh
-
-RUN ./install_ffead-cpp-dependencies.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-framework-forsql.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-httpd.sh
-
-WORKDIR /
 
-RUN ./install_ffead-cpp-nginx.sh
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
 
 WORKDIR /
 
-CMD ./run_ffead.sh apache mysql
+CMD ./run_ffead.sh ffead-cpp-4.0-sql apache mysql

+ 3 - 21
frameworks/C++/ffead-cpp/ffead-cpp-apache-postgresql.dockerfile

@@ -1,31 +1,13 @@
 FROM buildpack-deps:bionic
 
 ENV IROOT=/installs
-ENV FFEAD_CPP_PATH=${IROOT}/ffead-cpp-3.0
-ENV PATH=${FFEAD_CPP_PATH}:${PATH}
-
-RUN mkdir /installs
-
-WORKDIR /
 
 COPY te-benchmark-um/ te-benchmark-um/
 COPY *.sh ./
-RUN chmod 755 *.sh
-
-RUN ./install_ffead-cpp-dependencies.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-framework-forsql.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-httpd.sh
-
-WORKDIR /
 
-RUN ./install_ffead-cpp-nginx.sh
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
 
 WORKDIR /
 
-CMD ./run_ffead.sh apache postgresql
+CMD ./run_ffead.sh ffead-cpp-4.0-sql apache postgresql

+ 3 - 21
frameworks/C++/ffead-cpp/ffead-cpp-apache-redis.dockerfile

@@ -1,31 +1,13 @@
 FROM buildpack-deps:bionic
 
 ENV IROOT=/installs
-ENV FFEAD_CPP_PATH=${IROOT}/ffead-cpp-3.0
-ENV PATH=${FFEAD_CPP_PATH}:${PATH}
-
-RUN mkdir /installs
-
-WORKDIR /
 
 COPY te-benchmark-um/ te-benchmark-um/
 COPY *.sh ./
-RUN chmod 755 *.sh
-
-RUN ./install_ffead-cpp-dependencies.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-framework.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-httpd.sh
-
-WORKDIR /
 
-RUN ./install_ffead-cpp-nginx.sh
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
 
 WORKDIR /
 
-CMD ./run_ffead.sh apache redis
+CMD ./run_ffead.sh ffead-cpp-4.0 apache redis

+ 13 - 0
frameworks/C++/ffead-cpp/ffead-cpp-cinatra.dockerfile

@@ -0,0 +1,13 @@
+FROM buildpack-deps:bionic
+
+ENV IROOT=/installs
+
+COPY te-benchmark-um/ te-benchmark-um/
+COPY *.sh ./
+
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
+
+WORKDIR /
+
+CMD ./run_ffead.sh ffead-cpp-4.0 cinatra

+ 30 - 0
frameworks/C++/ffead-cpp/ffead-cpp-crystal-h2o.dockerfile

@@ -0,0 +1,30 @@
+FROM buildpack-deps:bionic
+
+ENV IROOT=/installs
+
+COPY te-benchmark-um/ te-benchmark-um/
+COPY *.sh ./
+
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
+
+RUN rm -f /usr/local/lib/libffead-* /usr/local/lib/libte_benc* /usr/local/lib/libinter.so /usr/local/lib/libdinter.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libte_benchmark_um.so /usr/local/lib/libte_benchmark_um.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-modules.so /usr/local/lib/libffead-modules.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-framework.so /usr/local/lib/libffead-framework.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libinter.so /usr/local/lib/libinter.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libdinter.so /usr/local/lib/libdinter.so && \
+	ldconfig
+
+RUN apt-get update -y && apt-get install -yqq libh2o-evloop-dev libwslay-dev libyaml-0-2 libevent-dev libpcre3-dev \
+    	gcc wget git libssl-dev libuv1-dev ca-certificates --no-install-recommends && rm -rf /var/lib/apt/lists/*
+RUN wget -q https://github.com/crystal-lang/crystal/releases/download/0.26.1/crystal-0.26.1-1-linux-x86_64.tar.gz \
+	&& tar --strip-components=1 -xzf crystal-0.26.1-1-linux-x86_64.tar.gz -C /usr/ && rm -f *.tar.gz
+WORKDIR ${IROOT}/lang-server-backends/crystal/h2o.cr
+RUN shards install && gcc -shared -O3 lib/h2o/src/ext/h2o.c -I/usr/include -fPIC -o h2o.o \
+	&& CRYSTAL_PATH=lib:/usr/share/crystal/src crystal build --prelude=empty --no-debug --release -Dgc_none -Dfiber_none -Dexcept_none -Dhash_none -Dtime_none -Dregex_none -Dextreme h2o-evloop-ffead-cpp.cr --link-flags="-Wl,-s $PWD/h2o.o -DH2O_USE_LIBUV=0" -o h2o-evloop-ffead-cpp.out \
+	&& cp h2o-evloop-ffead-cpp.out $IROOT/ && rm -rf ${IROOT}/lang-server-backends
+
+WORKDIR /
+
+CMD ./run_ffead.sh ffead-cpp-4.0 crystal-h2o

+ 27 - 0
frameworks/C++/ffead-cpp/ffead-cpp-crystal-http.dockerfile

@@ -0,0 +1,27 @@
+FROM buildpack-deps:bionic
+
+ENV IROOT=/installs
+
+COPY te-benchmark-um/ te-benchmark-um/
+COPY *.sh ./
+
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
+
+RUN rm -f /usr/local/lib/libffead-* /usr/local/lib/libte_benc* /usr/local/lib/libinter.so /usr/local/lib/libdinter.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libte_benchmark_um.so /usr/local/lib/libte_benchmark_um.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-modules.so /usr/local/lib/libffead-modules.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-framework.so /usr/local/lib/libffead-framework.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libinter.so /usr/local/lib/libinter.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libdinter.so /usr/local/lib/libdinter.so && \
+	ldconfig
+
+RUN curl -sL "https://keybase.io/crystal/pgp_keys.asc" | apt-key add - \
+	&& echo "deb https://dist.crystal-lang.org/apt crystal main" | tee /etc/apt/sources.list.d/crystal.list \
+	&& apt-get update -y && apt install -y --no-install-recommends crystal && rm -rf /var/lib/apt/lists/*
+WORKDIR ${IROOT}/lang-server-backends/crystal/crystal
+RUN crystal build --release --no-debug crystal-ffead-cpp.cr -o crystal-ffead-cpp.out && cp crystal-ffead-cpp.out $IROOT/ && rm -rf ${IROOT}/lang-server-backends
+
+WORKDIR /
+
+CMD ./run_ffead.sh ffead-cpp-4.0 crystal-http

+ 13 - 0
frameworks/C++/ffead-cpp/ffead-cpp-drogon.dockerfile

@@ -0,0 +1,13 @@
+FROM buildpack-deps:bionic
+
+ENV IROOT=/installs
+
+COPY te-benchmark-um/ te-benchmark-um/
+COPY *.sh ./
+
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
+
+WORKDIR /
+
+CMD ./run_ffead.sh ffead-cpp-4.0 drogon

+ 26 - 0
frameworks/C++/ffead-cpp/ffead-cpp-go-fasthttp.dockerfile

@@ -0,0 +1,26 @@
+FROM buildpack-deps:bionic
+
+ENV IROOT=/installs
+
+COPY te-benchmark-um/ te-benchmark-um/
+COPY *.sh ./
+
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
+
+RUN rm -f /usr/local/lib/libffead-* /usr/local/lib/libte_benc* /usr/local/lib/libinter.so /usr/local/lib/libdinter.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libte_benchmark_um.so /usr/local/lib/libte_benchmark_um.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-modules.so /usr/local/lib/libffead-modules.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-framework.so /usr/local/lib/libffead-framework.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libinter.so /usr/local/lib/libinter.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libdinter.so /usr/local/lib/libdinter.so && \
+	ldconfig
+
+RUN wget -q https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz && tar -C /usr/local -xzf go1.14.4.linux-amd64.tar.gz
+ENV PATH=$PATH:/usr/local/go/bin
+WORKDIR ${IROOT}/lang-server-backends/go/fasthttp
+RUN make && cp fasthttp-ffead-cpp $IROOT/ && rm -rf ${IROOT}/lang-server-backends
+
+WORKDIR /
+
+CMD ./run_ffead.sh ffead-cpp-4.0 go-fasthttp

+ 26 - 0
frameworks/C++/ffead-cpp/ffead-cpp-go-gnet.dockerfile

@@ -0,0 +1,26 @@
+FROM buildpack-deps:bionic
+
+ENV IROOT=/installs
+
+COPY te-benchmark-um/ te-benchmark-um/
+COPY *.sh ./
+
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
+
+RUN rm -f /usr/local/lib/libffead-* /usr/local/lib/libte_benc* /usr/local/lib/libinter.so /usr/local/lib/libdinter.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libte_benchmark_um.so /usr/local/lib/libte_benchmark_um.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-modules.so /usr/local/lib/libffead-modules.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-framework.so /usr/local/lib/libffead-framework.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libinter.so /usr/local/lib/libinter.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libdinter.so /usr/local/lib/libdinter.so && \
+	ldconfig
+
+RUN wget -q https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz && tar -C /usr/local -xzf go1.14.4.linux-amd64.tar.gz
+ENV PATH=$PATH:/usr/local/go/bin
+WORKDIR ${IROOT}/lang-server-backends/go/gnet
+RUN make && cp gnet-ffead-cpp $IROOT/ && rm -rf ${IROOT}/lang-server-backends
+
+WORKDIR /
+
+CMD ./run_ffead.sh ffead-cpp-4.0 go-gnet

+ 25 - 0
frameworks/C++/ffead-cpp/ffead-cpp-java-firenio.dockerfile

@@ -0,0 +1,25 @@
+FROM buildpack-deps:bionic
+
+ENV IROOT=/installs
+
+COPY te-benchmark-um/ te-benchmark-um/
+COPY *.sh ./
+
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
+
+RUN rm -f /usr/local/lib/libffead-* /usr/local/lib/libte_benc* /usr/local/lib/libinter.so /usr/local/lib/libdinter.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libte_benchmark_um.so /usr/local/lib/libte_benchmark_um.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-modules.so /usr/local/lib/libffead-modules.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-framework.so /usr/local/lib/libffead-framework.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libinter.so /usr/local/lib/libinter.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libdinter.so /usr/local/lib/libdinter.so && \
+	ldconfig
+
+RUN apt update -yqq && apt install -y --no-install-recommends default-jre maven && rm -rf /var/lib/apt/lists/*
+WORKDIR ${IROOT}/lang-server-backends/java/firenio
+RUN mvn compile assembly:single -q && cp target/firenio-ffead-cpp-0.1-jar-with-dependencies.jar $IROOT/ && rm -rf ${IROOT}/lang-server-backends
+
+WORKDIR /
+
+CMD ./run_ffead.sh ffead-cpp-4.0 java-firenio

+ 25 - 0
frameworks/C++/ffead-cpp/ffead-cpp-java-rapidoid.dockerfile

@@ -0,0 +1,25 @@
+FROM buildpack-deps:bionic
+
+ENV IROOT=/installs
+
+COPY te-benchmark-um/ te-benchmark-um/
+COPY *.sh ./
+
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
+
+RUN rm -f /usr/local/lib/libffead-* /usr/local/lib/libte_benc* /usr/local/lib/libinter.so /usr/local/lib/libdinter.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libte_benchmark_um.so /usr/local/lib/libte_benchmark_um.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-modules.so /usr/local/lib/libffead-modules.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-framework.so /usr/local/lib/libffead-framework.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libinter.so /usr/local/lib/libinter.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libdinter.so /usr/local/lib/libdinter.so && \
+	ldconfig
+
+RUN apt update -yqq && apt install -y --no-install-recommends default-jre maven && rm -rf /var/lib/apt/lists/*
+WORKDIR ${IROOT}/lang-server-backends/java/rapidoid
+RUN mvn compile assembly:single -q && cp target/rapidoid-ffead-cpp-1.0-jar-with-dependencies.jar $IROOT/ && rm -rf ${IROOT}/lang-server-backends
+
+WORKDIR /
+
+CMD ./run_ffead.sh ffead-cpp-4.0 java-rapidoid

+ 25 - 0
frameworks/C++/ffead-cpp/ffead-cpp-java-wizzardo-http.dockerfile

@@ -0,0 +1,25 @@
+FROM buildpack-deps:bionic
+
+ENV IROOT=/installs
+
+COPY te-benchmark-um/ te-benchmark-um/
+COPY *.sh ./
+
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
+
+RUN rm -f /usr/local/lib/libffead-* /usr/local/lib/libte_benc* /usr/local/lib/libinter.so /usr/local/lib/libdinter.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libte_benchmark_um.so /usr/local/lib/libte_benchmark_um.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-modules.so /usr/local/lib/libffead-modules.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-framework.so /usr/local/lib/libffead-framework.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libinter.so /usr/local/lib/libinter.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libdinter.so /usr/local/lib/libdinter.so && \
+	ldconfig
+
+RUN apt update -yqq && apt update -yqq && apt install -y --no-install-recommends default-jre gradle && rm -rf /var/lib/apt/lists/*
+WORKDIR ${IROOT}/lang-server-backends/java/wizzardo-http
+RUN gradle --refresh-dependencies clean fatJar -q && cp build/libs/wizzardo-ffead-cpp-all-1.0.jar $IROOT/ && rm -rf ${IROOT}/lang-server-backends
+
+WORKDIR /
+
+CMD ./run_ffead.sh ffead-cpp-4.0 java-wizzardo-http

+ 33 - 0
frameworks/C++/ffead-cpp/ffead-cpp-libreactor.dockerfile

@@ -0,0 +1,33 @@
+FROM buildpack-deps:bionic
+
+ENV IROOT=/installs
+
+COPY te-benchmark-um/ te-benchmark-um/
+COPY *.sh ./
+
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
+
+RUN rm -f /usr/local/lib/libffead-* /usr/local/lib/libte_benc* /usr/local/lib/libinter.so /usr/local/lib/libdinter.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libte_benchmark_um.so /usr/local/lib/libte_benchmark_um.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-modules.so /usr/local/lib/libffead-modules.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-framework.so /usr/local/lib/libffead-framework.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libinter.so /usr/local/lib/libinter.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libdinter.so /usr/local/lib/libdinter.so && \
+	ldconfig
+
+WORKDIR ${IROOT}
+RUN apt-get update -y && apt-get install -y --no-install-recommends build-essential libjansson-dev wget && rm -rf /var/lib/apt/lists/*
+RUN wget -q https://github.com/fredrikwidlund/libdynamic/releases/download/v1.3.0/libdynamic-1.3.0.tar.gz \
+	&& tar fvxz libdynamic-1.3.0.tar.gz && cd libdynamic-1.3.0 && ./configure --prefix=/usr AR=gcc-ar NM=gcc-nm RANLIB=gcc-ranlib \
+	&& make install && rm -rf ${IROOT}/libdynamic-1.3.0 && rm -f ${IROOT}/libdynamic-1.3.0.tar.gz && \
+	cd /installs && wget -q https://github.com/fredrikwidlund/libreactor/releases/download/v1.0.1/libreactor-1.0.1.tar.gz \
+	&& tar fvxz libreactor-1.0.1.tar.gz && cd libreactor-1.0.1 && ./configure --prefix=/usr AR=gcc-ar NM=gcc-nm RANLIB=gcc-ranlib \
+	&& make install && rm -rf ${IROOT}/libreactor-1.0.1 && rm -f ${IROOT}/libreactor-1.0.1.tar.gz
+
+WORKDIR ${IROOT}/lang-server-backends/c/libreactor
+RUN make && cp libreactor-ffead-cpp $IROOT/ && rm -rf ${IROOT}/lang-server-backends
+
+WORKDIR /
+
+CMD ./run_ffead.sh ffead-cpp-4.0 libreactor

+ 13 - 0
frameworks/C++/ffead-cpp/ffead-cpp-lithium.dockerfile

@@ -0,0 +1,13 @@
+FROM buildpack-deps:bionic
+
+ENV IROOT=/installs
+
+COPY te-benchmark-um/ te-benchmark-um/
+COPY *.sh ./
+
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
+
+WORKDIR /
+
+CMD ./run_ffead.sh ffead-cpp-4.0 lithium

+ 3 - 21
frameworks/C++/ffead-cpp/ffead-cpp-memcached.dockerfile

@@ -1,31 +1,13 @@
 FROM buildpack-deps:bionic
 
 ENV IROOT=/installs
-ENV FFEAD_CPP_PATH=${IROOT}/ffead-cpp-3.0
-ENV PATH=${FFEAD_CPP_PATH}:${PATH}
-
-RUN mkdir /installs
-
-WORKDIR /
 
 COPY te-benchmark-um/ te-benchmark-um/
 COPY *.sh ./
-RUN chmod 755 *.sh
-
-RUN ./install_ffead-cpp-dependencies.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-framework.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-httpd.sh
-
-WORKDIR /
 
-RUN ./install_ffead-cpp-nginx.sh
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
 
 WORKDIR /
 
-CMD ./run_ffead.sh emb memcached
+CMD ./run_ffead.sh ffead-cpp-4.0 emb memcached

+ 3 - 21
frameworks/C++/ffead-cpp/ffead-cpp-mysql.dockerfile

@@ -1,31 +1,13 @@
 FROM buildpack-deps:bionic
 
 ENV IROOT=/installs
-ENV FFEAD_CPP_PATH=${IROOT}/ffead-cpp-3.0
-ENV PATH=${FFEAD_CPP_PATH}:${PATH}
-
-RUN mkdir /installs
-
-WORKDIR /
 
 COPY te-benchmark-um/ te-benchmark-um/
 COPY *.sh ./
-RUN chmod 755 *.sh
-
-RUN ./install_ffead-cpp-dependencies.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-framework-forsql.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-httpd.sh
-
-WORKDIR /
 
-RUN ./install_ffead-cpp-nginx.sh
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
 
 WORKDIR /
 
-CMD ./run_ffead.sh emb mysql
+CMD ./run_ffead.sh ffead-cpp-4.0-sql emb mysql

+ 3 - 21
frameworks/C++/ffead-cpp/ffead-cpp-nginx-memcached.dockerfile

@@ -1,31 +1,13 @@
 FROM buildpack-deps:bionic
 
 ENV IROOT=/installs
-ENV FFEAD_CPP_PATH=${IROOT}/ffead-cpp-3.0
-ENV PATH=${FFEAD_CPP_PATH}:${PATH}
-
-RUN mkdir /installs
-
-WORKDIR /
 
 COPY te-benchmark-um/ te-benchmark-um/
 COPY *.sh ./
-RUN chmod 755 *.sh
-
-RUN ./install_ffead-cpp-dependencies.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-framework.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-httpd.sh
-
-WORKDIR /
 
-RUN ./install_ffead-cpp-nginx.sh
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
 
 WORKDIR /
 
-CMD ./run_ffead.sh nginx memcached
+CMD ./run_ffead.sh ffead-cpp-4.0 nginx memcached

+ 3 - 21
frameworks/C++/ffead-cpp/ffead-cpp-nginx-mongo.dockerfile

@@ -1,31 +1,13 @@
 FROM buildpack-deps:bionic
 
 ENV IROOT=/installs
-ENV FFEAD_CPP_PATH=${IROOT}/ffead-cpp-3.0
-ENV PATH=${FFEAD_CPP_PATH}:${PATH}
-
-RUN mkdir /installs
-
-WORKDIR /
 
 COPY te-benchmark-um/ te-benchmark-um/
 COPY *.sh ./
-RUN chmod 755 *.sh
-
-RUN ./install_ffead-cpp-dependencies.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-framework.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-httpd.sh
-
-WORKDIR /
 
-RUN ./install_ffead-cpp-nginx.sh
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
 
 WORKDIR /
 
-CMD ./run_ffead.sh nginx mongo
+CMD ./run_ffead.sh ffead-cpp-4.0 nginx mongo

+ 3 - 21
frameworks/C++/ffead-cpp/ffead-cpp-nginx-mysql.dockerfile

@@ -1,31 +1,13 @@
 FROM buildpack-deps:bionic
 
 ENV IROOT=/installs
-ENV FFEAD_CPP_PATH=${IROOT}/ffead-cpp-3.0
-ENV PATH=${FFEAD_CPP_PATH}:${PATH}
-
-RUN mkdir /installs
-
-WORKDIR /
 
 COPY te-benchmark-um/ te-benchmark-um/
 COPY *.sh ./
-RUN chmod 755 *.sh
-
-RUN ./install_ffead-cpp-dependencies.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-framework-forsql.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-httpd.sh
-
-WORKDIR /
 
-RUN ./install_ffead-cpp-nginx.sh
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
 
 WORKDIR /
 
-CMD ./run_ffead.sh nginx mysql
+CMD ./run_ffead.sh ffead-cpp-4.0-sql nginx mysql memcached

+ 3 - 21
frameworks/C++/ffead-cpp/ffead-cpp-nginx-postgresql.dockerfile

@@ -1,31 +1,13 @@
 FROM buildpack-deps:bionic
 
 ENV IROOT=/installs
-ENV FFEAD_CPP_PATH=${IROOT}/ffead-cpp-3.0
-ENV PATH=${FFEAD_CPP_PATH}:${PATH}
-
-RUN mkdir /installs
-
-WORKDIR /
 
 COPY te-benchmark-um/ te-benchmark-um/
 COPY *.sh ./
-RUN chmod 755 *.sh
-
-RUN ./install_ffead-cpp-dependencies.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-framework-forsql.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-httpd.sh
-
-WORKDIR /
 
-RUN ./install_ffead-cpp-nginx.sh
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
 
 WORKDIR /
 
-CMD ./run_ffead.sh nginx postgresql
+CMD ./run_ffead.sh ffead-cpp-4.0-sql nginx postgresql

+ 3 - 21
frameworks/C++/ffead-cpp/ffead-cpp-nginx-redis.dockerfile

@@ -1,31 +1,13 @@
 FROM buildpack-deps:bionic
 
 ENV IROOT=/installs
-ENV FFEAD_CPP_PATH=${IROOT}/ffead-cpp-3.0
-ENV PATH=${FFEAD_CPP_PATH}:${PATH}
-
-RUN mkdir /installs
-
-WORKDIR /
 
 COPY te-benchmark-um/ te-benchmark-um/
 COPY *.sh ./
-RUN chmod 755 *.sh
-
-RUN ./install_ffead-cpp-dependencies.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-framework.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-httpd.sh
-
-WORKDIR /
 
-RUN ./install_ffead-cpp-nginx.sh
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
 
 WORKDIR /
 
-CMD ./run_ffead.sh nginx redis
+CMD ./run_ffead.sh ffead-cpp-4.0 nginx redis

+ 3 - 21
frameworks/C++/ffead-cpp/ffead-cpp-postgresql.dockerfile

@@ -1,31 +1,13 @@
 FROM buildpack-deps:bionic
 
 ENV IROOT=/installs
-ENV FFEAD_CPP_PATH=${IROOT}/ffead-cpp-3.0
-ENV PATH=${FFEAD_CPP_PATH}:${PATH}
-
-RUN mkdir /installs
-
-WORKDIR /
 
 COPY te-benchmark-um/ te-benchmark-um/
 COPY *.sh ./
-RUN chmod 755 *.sh
-
-RUN ./install_ffead-cpp-dependencies.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-framework-forsql.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-httpd.sh
-
-WORKDIR /
 
-RUN ./install_ffead-cpp-nginx.sh
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
 
 WORKDIR /
 
-CMD ./run_ffead.sh emb postgresql
+CMD ./run_ffead.sh ffead-cpp-4.0-sql emb postgresql

+ 3 - 21
frameworks/C++/ffead-cpp/ffead-cpp-redis.dockerfile

@@ -1,31 +1,13 @@
 FROM buildpack-deps:bionic
 
 ENV IROOT=/installs
-ENV FFEAD_CPP_PATH=${IROOT}/ffead-cpp-3.0
-ENV PATH=${FFEAD_CPP_PATH}:${PATH}
-
-RUN mkdir /installs
-
-WORKDIR /
 
 COPY te-benchmark-um/ te-benchmark-um/
 COPY *.sh ./
-RUN chmod 755 *.sh
-
-RUN ./install_ffead-cpp-dependencies.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-framework.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-httpd.sh
-
-WORKDIR /
 
-RUN ./install_ffead-cpp-nginx.sh
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
 
 WORKDIR /
 
-CMD ./run_ffead.sh emb redis
+CMD ./run_ffead.sh ffead-cpp-4.0 emb redis

+ 7 - 0
frameworks/C++/ffead-cpp/ffead-cpp-rust-actix.dockerfile

@@ -0,0 +1,7 @@
+FROM sumeetchhetri/ffead-cpp-v4.0-rust-base:1.0
+
+ENV IROOT=/installs
+
+WORKDIR /
+
+CMD ./run_ffead.sh ffead-cpp-4.0 rust-actix

+ 28 - 0
frameworks/C++/ffead-cpp/ffead-cpp-rust-base.dockerfile

@@ -0,0 +1,28 @@
+FROM buildpack-deps:bionic
+LABEL maintainer="Sumeet Chhetri"
+LABEL version="1.0"
+LABEL description="Base rust docker image with ffead-cpp v4.0"
+
+ENV IROOT=/installs
+
+COPY te-benchmark-um/ te-benchmark-um/
+COPY *.sh ./
+
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
+
+RUN rm -f /usr/local/lib/libffead-* /usr/local/lib/libte_benc* /usr/local/lib/libinter.so /usr/local/lib/libdinter.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libte_benchmark_um.so /usr/local/lib/libte_benchmark_um.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-modules.so /usr/local/lib/libffead-modules.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-framework.so /usr/local/lib/libffead-framework.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libinter.so /usr/local/lib/libinter.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libdinter.so /usr/local/lib/libdinter.so && \
+	ldconfig
+
+RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
+ENV PATH="/root/.cargo/bin:${PATH}"
+
+RUN cd ${IROOT}/lang-server-backends/rust/actix-ffead-cpp && RUSTFLAGS="-C target-cpu=native" cargo build --release && cp target/release/actix-ffead-cpp $IROOT/ && rm -rf target && \
+	cd ${IROOT}/lang-server-backends/rust/hyper-ffead-cpp && RUSTFLAGS="-C target-cpu=native" cargo build --release && cp target/release/hyper-ffead-cpp $IROOT/ && rm -rf target && \
+	cd ${IROOT}/lang-server-backends/rust/thruster-ffead-cpp && RUSTFLAGS="-C target-cpu=native" cargo build --release && cp target/release/thruster-ffead-cpp $IROOT/ && rm -rf target && \
+	rm -rf ${IROOT}/lang-server-backends && rm -rf /root/.rustup /root/.cargo

+ 7 - 0
frameworks/C++/ffead-cpp/ffead-cpp-rust-hyper.dockerfile

@@ -0,0 +1,7 @@
+FROM sumeetchhetri/ffead-cpp-v4.0-rust-base:1.0
+
+ENV IROOT=/installs
+
+WORKDIR /
+
+CMD ./run_ffead.sh ffead-cpp-4.0 rust-hyper

+ 26 - 0
frameworks/C++/ffead-cpp/ffead-cpp-rust-rocket.dockerfile

@@ -0,0 +1,26 @@
+FROM buildpack-deps:bionic
+
+ENV IROOT=/installs
+
+COPY te-benchmark-um/ te-benchmark-um/
+COPY *.sh ./
+
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
+
+RUN rm -f /usr/local/lib/libffead-* /usr/local/lib/libte_benc* /usr/local/lib/libinter.so /usr/local/lib/libdinter.so
+RUN ln -s ${IROOT}/ffead-cpp-4.0/lib/libte_benchmark_um.so /usr/local/lib/libte_benchmark_um.so
+RUN ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-modules.so /usr/local/lib/libffead-modules.so
+RUN ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-framework.so /usr/local/lib/libffead-framework.so
+RUN ln -s ${IROOT}/ffead-cpp-4.0/lib/libinter.so /usr/local/lib/libinter.so
+RUN ln -s ${IROOT}/ffead-cpp-4.0/lib/libdinter.so /usr/local/lib/libdinter.so
+RUN ldconfig
+
+RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
+WORKDIR ${IROOT}/lang-server-backends/rust/rocket-ffead-cpp/
+ENV PATH="/root/.cargo/bin:${PATH}"
+RUN rustup default nightly && cargo build --release && cp target/release/rocket-ffead-cpp $IROOT/ && rm -rf ${IROOT}/lang-server-backends
+
+WORKDIR /
+
+CMD ./run_ffead.sh ffead-cpp-4.0 rust-rocket

+ 7 - 0
frameworks/C++/ffead-cpp/ffead-cpp-rust-thruster.dockerfile

@@ -0,0 +1,7 @@
+FROM sumeetchhetri/ffead-cpp-v4.0-rust-base:1.0
+
+ENV IROOT=/installs
+
+WORKDIR /
+
+CMD ./run_ffead.sh ffead-cpp-4.0 rust-thruster

+ 29 - 0
frameworks/C++/ffead-cpp/ffead-cpp-v-picov.dockerfile

@@ -0,0 +1,29 @@
+FROM buildpack-deps:bionic
+
+ENV IROOT=/installs
+
+COPY te-benchmark-um/ te-benchmark-um/
+COPY *.sh ./
+
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
+
+RUN rm -f /usr/local/lib/libffead-* /usr/local/lib/libte_benc* /usr/local/lib/libinter.so /usr/local/lib/libdinter.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libte_benchmark_um.so /usr/local/lib/libte_benchmark_um.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-modules.so /usr/local/lib/libffead-modules.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-framework.so /usr/local/lib/libffead-framework.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libinter.so /usr/local/lib/libinter.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libdinter.so /usr/local/lib/libdinter.so && \
+	ldconfig
+
+WORKDIR ${IROOT}
+RUN apt update -y && apt install --no-install-recommends -y git && rm -rf /var/lib/apt/lists/*
+RUN git clone https://github.com/vlang/v
+WORKDIR ${IROOT}/v
+RUN make && ./v symlink
+WORKDIR ${IROOT}/lang-server-backends/v/pico.v
+RUN chmod +x *.sh && ./build.sh && cp main $IROOT/ && rm -rf ${IROOT}/lang-server-backends
+
+WORKDIR /
+
+CMD ./run_ffead.sh ffead-cpp-4.0 v-picov

+ 29 - 0
frameworks/C++/ffead-cpp/ffead-cpp-v-vweb.dockerfile

@@ -0,0 +1,29 @@
+FROM buildpack-deps:bionic
+
+ENV IROOT=/installs
+
+COPY te-benchmark-um/ te-benchmark-um/
+COPY *.sh ./
+
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
+
+RUN rm -f /usr/local/lib/libffead-* /usr/local/lib/libte_benc* /usr/local/lib/libinter.so /usr/local/lib/libdinter.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libte_benchmark_um.so /usr/local/lib/libte_benchmark_um.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-modules.so /usr/local/lib/libffead-modules.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libffead-framework.so /usr/local/lib/libffead-framework.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libinter.so /usr/local/lib/libinter.so && \
+	ln -s ${IROOT}/ffead-cpp-4.0/lib/libdinter.so /usr/local/lib/libdinter.so && \
+	ldconfig
+
+WORKDIR ${IROOT}
+RUN apt update -y && apt install -y --no-install-recommends git && rm -rf /var/lib/apt/lists/*
+RUN git clone https://github.com/vlang/v
+WORKDIR ${IROOT}/v
+RUN make && ./v symlink
+WORKDIR ${IROOT}/lang-server-backends/v/vweb
+RUN chmod +x *.sh && ./build.sh && cp vweb $IROOT/ && rm -rf ${IROOT}/lang-server-backends
+
+WORKDIR /
+
+CMD ./run_ffead.sh ffead-cpp-4.0 v-vweb

+ 3 - 21
frameworks/C++/ffead-cpp/ffead-cpp.dockerfile

@@ -1,31 +1,13 @@
 FROM buildpack-deps:bionic
 
 ENV IROOT=/installs
-ENV FFEAD_CPP_PATH=${IROOT}/ffead-cpp-3.0
-ENV PATH=${FFEAD_CPP_PATH}:${PATH}
-
-RUN mkdir /installs
-
-WORKDIR /
 
 COPY te-benchmark-um/ te-benchmark-um/
 COPY *.sh ./
-RUN chmod 755 *.sh
-
-RUN ./install_ffead-cpp-dependencies.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-framework.sh
-
-WORKDIR /
-
-RUN ./install_ffead-cpp-httpd.sh
-
-WORKDIR /
 
-RUN ./install_ffead-cpp-nginx.sh
+RUN mkdir /installs && chmod 755 *.sh && /install_ffead-cpp-dependencies.sh && /install_ffead-cpp-framework.sh && \
+	/install_ffead-cpp-httpd.sh && /install_ffead-cpp-nginx.sh && rm -rf ${IROOT}/ffead-cpp-src
 
 WORKDIR /
 
-CMD ./run_ffead.sh emb mongo
+CMD ./run_ffead.sh ffead-cpp-4.0 emb mongo redis

+ 21 - 10
frameworks/C++/ffead-cpp/install_ffead-cpp-dependencies.sh

@@ -1,9 +1,8 @@
 #!/bin/bash
 
-cd $IROOT
-
-apt-get update -yqq
-apt-get install -yqq autoconf-archive unzip uuid-dev odbc-postgresql unixodbc unixodbc-dev apache2 apache2-dev libapr1-dev libaprutil1-dev memcached libmemcached-dev redis-server libssl-dev zlib1g-dev cmake make
+apt update -yqq && apt install --no-install-recommends -yqq autoconf-archive unzip uuid-dev odbc-postgresql unixodbc unixodbc-dev \
+	apache2 apache2-dev libapr1-dev libaprutil1-dev memcached libmemcached-dev redis-server libssl-dev \
+	zlib1g-dev cmake make
 
 #redis will not start correctly on bionic with this config
 sed -i "s/bind .*/bind 127.0.0.1/g" /etc/redis/redis.conf
@@ -12,26 +11,38 @@ service apache2 stop
 service memcached stop
 service redis-server stop
 
-# libmyodbc has been removed from apt
+cd $IROOT
+wget -q https://github.com/efficient/libcuckoo/archive/master.zip
+unzip master.zip
+rm -f master.zip
+cd libcuckoo-master
+cmake -DCMAKE_INSTALL_PREFIX=/usr .
+make install
+cd $IROOT
+rm -rf libcuckoo-master
 
 wget -q https://cdn.mysql.com/archives/mysql-connector-odbc-5.3/mysql-connector-odbc-5.3.11-linux-ubuntu16.04-x86-64bit.tar.gz
 tar xf mysql-connector-odbc-5.3.11-linux-ubuntu16.04-x86-64bit.tar.gz
 mkdir -p /usr/lib/x86_64-linux-gnu/odbc
 mv mysql-connector-odbc-5.3.11-linux-ubuntu16.04-x86-64bit/lib/libmyodbc5* /usr/lib/x86_64-linux-gnu/odbc/
 mysql-connector-odbc-5.3.11-linux-ubuntu16.04-x86-64bit/bin/myodbc-installer -d -a -n "MySQL" -t "DRIVER=/usr/lib/x86_64-linux-gnu/odbc/libmyodbc5w.so;"
-
-# mongocdriver also used in all tests
+rm -f mysql-connector-odbc-5.3.11-linux-ubuntu16.04-x86-64bit.tar.gz
+rm -rf mysql-connector-odbc-5.3.11-linux-ubuntu16.04-x86-64bit
 
 wget -q https://github.com/mongodb/mongo-c-driver/releases/download/1.4.0/mongo-c-driver-1.4.0.tar.gz
 tar xf mongo-c-driver-1.4.0.tar.gz
+rm -f mongo-c-driver-1.4.0.tar.gz
 cd mongo-c-driver-1.4.0/ && \
     ./configure --disable-automatic-init-and-cleanup && \
     make && make install
+cd $IROOT
+rm -rf mongo-c-driver-1.4.0 
 
-
-wget https://github.com/redis/hiredis/archive/v0.13.3.tar.gz
+wget -q https://github.com/redis/hiredis/archive/v0.13.3.tar.gz
 tar xvf v0.13.3.tar.gz
+rm -f v0.13.3.tar.gz
 cd hiredis-0.13.3/
 make
 PREFIX=/usr make install
-
+cd $IROOT
+rm -rf hiredis-0.13.3

+ 0 - 162
frameworks/C++/ffead-cpp/install_ffead-cpp-framework-forsql.sh

@@ -1,162 +0,0 @@
-#!/bin/bash
-
-#From https://github.com/TechEmpower/FrameworkBenchmarks/blob/master/frameworks/C%2B%2B/ulib/setup_json.sh
-MAX_THREADS=$(( 3 * `nproc` / 2 ))
-
-WRIT_THREADS=$(( $MAX_THREADS / 3 ))
-SERV_THREADS=$(( $MAX_THREADS - $WRIT_THREADS ))
-
-cd $IROOT
-
-wget -q https://github.com/efficient/libcuckoo/archive/master.zip
-unzip master.zip
-rm -f master.zip
-cd libcuckoo-master
-cmake -DCMAKE_INSTALL_PREFIX=/usr .
-make install
-cd $IROOT
-rm -rf libcuckoo-master
-
-cd $IROOT
-
-wget -q https://github.com/sumeetchhetri/ffead-cpp/archive/master.zip
-unzip master.zip
-mv ffead-cpp-master ffead-cpp-src
-cd ffead-cpp-src/
-
-chmod 755 *.sh resources/*.sh rtdcf/autotools/*.sh
-rm -rf web/te-benchmark-um
-cp -f ${TROOT}/server.sh script/
-cp -rf ${TROOT}/te-benchmark-um web/
-sed -i 's|THRD_PSIZ=6|THRD_PSIZ='${SERV_THREADS}'|g' resources/server.prop
-sed -i 's|W_THRD_PSIZ=2|W_THRD_PSIZ='${WRIT_THREADS}'|g' resources/server.prop
-sed -i 's|ENABLE_CRS=true|ENABLE_CRS=false|g' resources/server.prop
-sed -i 's|ENABLE_SEC=true|ENABLE_SEC=false|g' resources/server.prop
-sed -i 's|ENABLE_FLT=true|ENABLE_FLT=false|g' resources/server.prop
-sed -i 's|ENABLE_CNT=true|ENABLE_CNT=true|g' resources/server.prop
-sed -i 's|ENABLE_CNT_MPG=true|ENABLE_CNT_MPG=false|g' resources/server.prop
-sed -i 's|ENABLE_CNT_PTH=true|ENABLE_CNT_PTH=false|g' resources/server.prop
-sed -i 's|ENABLE_CNT_EXT=true|ENABLE_CNT_EXT=false|g' resources/server.prop
-sed -i 's|ENABLE_CNT_RST=true|ENABLE_CNT_RST=true|g' resources/server.prop
-sed -i 's|ENABLE_EXT=true|ENABLE_EXT=true|g' resources/server.prop
-sed -i 's|ENABLE_SCR=true|ENABLE_SCR=false|g' resources/server.prop
-sed -i 's|ENABLE_SWS=true|ENABLE_SWS=false|g' resources/server.prop
-sed -i 's|LOGGING_ENABLED=true|LOGGING_ENABLED=false|g' resources/server.prop
-
-rm -rf web/default web/oauthApp web/flexApp web/markers web/te-benchmark
-
-sed -i 's|localhost|tfb-database|g' web/te-benchmark-um/config/sdorm.xml
-sed -i 's|localhost|tfb-database|g' web/te-benchmark-um/config/sdormmongo.xml
-sed -i 's|localhost|tfb-database|g' web/te-benchmark-um/config/sdormmysql.xml
-sed -i 's|localhost|tfb-database|g' web/te-benchmark-um/config/sdormpostgresql.xml
-#sed -i 's|<pool-size>30</pool-size>|<pool-size>${MAX_THREADS}</pool-size>|g' web/te-benchmark-um/config/sdorm.xml
-#sed -i 's|<pool-size>30</pool-size>|<pool-size>${MAX_THREADS}</pool-size>|g' web/te-benchmark-um/config/sdormmongo.xml
-sed -i 's|<pool-size>30</pool-size>|<pool-size>${MAX_THREADS}</pool-size>|g' web/te-benchmark-um/config/sdormmysql.xml
-sed -i 's|<pool-size>30</pool-size>|<pool-size>${MAX_THREADS}</pool-size>|g' web/te-benchmark-um/config/sdormpostgresql.xml
-sed -i 's|127.0.0.1|tfb-database|g' resources/sample-odbcinst.ini
-sed -i 's|127.0.0.1|tfb-database|g' resources/sample-odbc.ini
-sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/default)||g' CMakeLists.txt
-sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/flexApp)||g' CMakeLists.txt
-sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/oauthApp)||g' CMakeLists.txt
-sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/markers)||g' CMakeLists.txt
-sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark)||g' CMakeLists.txt
-sed -i 's|install(FILES ${PROJECT_SOURCE_DIR}/web/default/libdefault${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
-sed -i 's|install(FILES ${PROJECT_SOURCE_DIR}/web/flexApp/libflexApp${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
-sed -i 's|install(FILES ${PROJECT_SOURCE_DIR}/web/oauthApp/liboauthApp${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
-sed -i 's|install(FILES ${PROJECT_SOURCE_DIR}/web/markers/libmarkers${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
-sed -i 's|install(FILES ${PROJECT_SOURCE_DIR}/web/te-benchmark/libte_benchmark${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
-sed -i 's|web/default/src/autotools/Makefile||g' configure.ac
-sed -i 's|web/flexApp/src/autotools/Makefile||g' configure.ac
-sed -i 's|web/oauthApp/src/autotools/Makefile||g' configure.ac
-sed -i 's|web/markers/src/autotools/Makefile||g' configure.ac
-sed -i 's|web/te-benchmark/src/autotools/Makefile||g' configure.ac
-
-#./autogen.sh
-#./configure --enable-debug=no --enable-apachemod=yes --enable-nginxmod=yes --enable-mod_sdormmongo=yes --enable-mod_sdormsql=yes --enable-mod_rediscache=yes --enable-mod_memcached=yes CPPFLAGS="$CPPFLAGS -I${IROOT}/include/libmongoc-1.0 -I${IROOT}/include/libbson-1.0 -I${IROOT}/include/" LDFLAGS="$LDFLAGS -L${IROOT} -L${IROOT}/lib"
-#make install
-cmake -DMOD_APACHE=on -DMOD_NGINX=on -DMOD_MEMCACHED=on -DMOD_REDIS=on -DMOD_SDORM_MONGO=on .
-#make install -j4
-
-cp resources/sample-odbcinst.ini ${IROOT}/odbcinst.ini
-cp resources/sample-odbc.ini ${IROOT}/odbc.ini
-
-cd ${IROOT}/ffead-cpp-src/
-sed -i 's|Timer t1;|//Timer t1;|g' src/framework/ServiceTask.cpp
-sed -i 's|t1.start();|//t1.start();|g' src/framework/ServiceTask.cpp
-sed -i 's|t1.end();|//t1.end();|g' src/framework/ServiceTask.cpp
-sed -i 's|CommonUtils::ts|//CommonUtils::ts|g' src/framework/ServiceTask.cpp
-sed -i 's|Timer t;|//Timer t;|g' src/framework/ControllerHandler.cpp
-sed -i 's|t.start();|//t.start();|g' src/framework/ControllerHandler.cpp
-sed -i 's|t.end();|//t.end();|g' src/framework/ControllerHandler.cpp
-sed -i 's|CommonUtils::ts|//CommonUtils::ts|g' src/framework/ControllerHandler.cpp
-sed -i 's|Timer t;|//Timer t;|g' src/modules/server-util/RequestReaderHandler.cpp
-sed -i 's|t.start();|//t.start();|g' src/modules/server-util/RequestReaderHandler.cpp
-sed -i 's|t.end();|//t.end();|g' src/modules/server-util/RequestReaderHandler.cpp
-sed -i 's|CommonUtils::ts|//CommonUtils::ts|g' src/modules/server-util/RequestReaderHandler.cpp
-sed -i 's|Timer t;|//Timer t;|g' src/modules/server-util/SocketInterface.cpp
-sed -i 's|t.start();|//t.start();|g' src/modules/server-util/SocketInterface.cpp
-sed -i 's|t.end();|//t.end();|g' src/modules/server-util/SocketInterface.cpp
-sed -i 's|CommonUtils::ts|//CommonUtils::ts|g' src/modules/server-util/SocketInterface.cpp
-sed -i 's|Timer to;|//Timer to;|g' src/modules/server-util/SocketInterface.cpp
-sed -i 's|to.start();|//to.start();|g' src/modules/server-util/SocketInterface.cpp
-sed -i 's|to.end();|//to.end();|g' src/modules/server-util/SocketInterface.cpp
-sed -i 's|CommonUtils::ts|//CommonUtils::ts|g' src/modules/server-util/SocketInterface.cpp
-sed -i 's|Timer t;|//Timer t;|g' web/te-benchmark-um/src/TeBkUm.cpp
-sed -i 's|t.start();|//t.start();|g' web/te-benchmark-um/src/TeBkUm.cpp
-sed -i 's|t.end();|//t.end();|g' web/te-benchmark-um/src/TeBkUm.cpp
-sed -i 's|CommonUtils::ts|//CommonUtils::ts|g' web/te-benchmark-um/src/TeBkUm.cpp
-sed -i 's|Timer t;|//Timer t;|g' src/modules/http/http11/Http11Handler.cpp
-sed -i 's|t.start();|//t.start();|g' src/modules/http/http11/Http11Handler.cpp
-sed -i 's|t.end();|//t.end();|g' src/modules/http/http11/Http11Handler.cpp
-sed -i 's|CommonUtils::ts|//CommonUtils::ts|g' src/modules/http/http11/Http11Handler.cpp
-sed -i 's|Timer t;|//Timer t;|g' src/modules/http/HttpServiceHandler.cpp
-sed -i 's|t.start();|//t.start();|g' src/modules/http/HttpServiceHandler.cpp
-sed -i 's|t.end();|//t.end();|g' src/modules/http/HttpServiceHandler.cpp
-sed -i 's|CommonUtils::ts|//CommonUtils::ts|g' src/modules/http/HttpServiceHandler.cpp
-sed -i 's|Timer to;|//Timer to;|g' src/modules/http/HttpServiceHandler.cpp
-sed -i 's|to.start();|//to.start();|g' src/modules/http/HttpServiceHandler.cpp
-sed -i 's|to.end();|//to.end();|g' src/modules/http/HttpServiceHandler.cpp
-sed -i 's|CommonUtils::ts|//CommonUtils::ts|g' src/modules/http/HttpServiceHandler.cpp
-#Build for sql now
-cp -f web/te-benchmark-um/sql-src/TeBkUmWorldsql.h web/te-benchmark-um/include/TeBkUmWorld.h
-cp -f web/te-benchmark-um/sql-src/TeBkUmWorldsql.cpp web/te-benchmark-um/src/TeBkUmWorld.cpp
-make install -j${MAX_THREADS}
-
-rm -f /usr/local/lib/libffead-*
-rm -f /usr/local/lib/libte_benc*
-rm -f /usr/local/lib/libinter.so
-rm -f /usr/local/lib/libdinter.so
-
-cd ffead-cpp-3.0-bin
-chmod 755 *.sh resources/*.sh rtdcf/autotools/*.sh
-./server.sh &
-while [ ! -f lib/libinter.so ]
-do
-	sleep 1
-done
-while [ ! -f lib/libdinter.so ]
-do
-	sleep 1
-done
-pkill ffead-cpp
-
-cd ${IROOT}/ffead-cpp-src/
-cp -rf ffead-cpp-3.0-bin ${IROOT}/ffead-cpp-3.0
-rm -rf ffead-cpp-3.0-bin
-
-ln -s ${IROOT}/ffead-cpp-3.0/lib/libte_benchmark_um.so /usr/local/lib/libte_benchmark_um.so
-ln -s ${IROOT}/ffead-cpp-3.0/lib/libffead-modules.so /usr/local/lib/libffead-modules.so
-ln -s ${IROOT}/ffead-cpp-3.0/lib/libffead-framework.so /usr/local/lib/libffead-framework.so
-ln -s ${IROOT}/ffead-cpp-3.0/lib/libinter.so /usr/local/lib/libinter.so
-ln -s ${IROOT}/ffead-cpp-3.0/lib/libdinter.so /usr/local/lib/libdinter.so
-ldconfig
-
-cd ${IROOT}/ffead-cpp-3.0
-cp -f ${TROOT}/run_ffead.sh ./
-
-chmod 755 *.sh resources/*.sh rtdcf/autotools/*.sh
-chmod 755 $FFEAD_CPP_PATH/*.sh
-rm -f $FFEAD_CPP_PATH/*.cntrl
-rm -f $FFEAD_CPP_PATH/tmp/*.sess
-#cache related dockerfiles will add the cache.xml accordingly whenever needed
-rm -f web/te-benchmark-um/config/cache.xml

+ 95 - 71
frameworks/C++/ffead-cpp/install_ffead-cpp-framework.sh

@@ -8,32 +8,62 @@ SERV_THREADS=$(( $MAX_THREADS - $WRIT_THREADS ))
 
 cd $IROOT
 
-wget -q https://github.com/efficient/libcuckoo/archive/master.zip
-unzip master.zip
-rm -f master.zip
-cd libcuckoo-master
-cmake -DCMAKE_INSTALL_PREFIX=/usr .
-make install
+wget -q https://github.com/sumeetchhetri/ffead-cpp/archive/v4.0.zip
+unzip v4.0.zip
+rm -f v4.0.zip
+mv ffead-cpp-4.0 ffead-cpp-src
+mv ffead-cpp-src/lang-server-backends ${IROOT}/
 cd $IROOT
-rm -rf libcuckoo-master
 
-cd $IROOT
-
-wget -q https://github.com/sumeetchhetri/ffead-cpp/archive/master.zip
-unzip master.zip
-mv ffead-cpp-master ffead-cpp-src
-cd ffead-cpp-src/
+CURR_TYPE="lithium"
+if [ "$CURR_TYPE" = "lithium" ]
+then
+	SRV_TYPE=SRV_LITHIUM
+	apt install --no-install-recommends -y libboost-all-dev
+fi
+
+CURR_TYPE="cinatra"
+if [ "$CURR_TYPE" = "cinatra" ]
+then
+	apt install --no-install-recommends -y libboost-all-dev
+	SRV_TYPE=SRV_CINATRA
+	CINATRA_INC="-DCINATRA_INCLUDES=${IROOT}/cinatra/include"
+	git clone https://github.com/sumeetchhetri/cinatra.git
+	cd cinatra
+	git checkout sum_master
+fi
+
+CURR_TYPE="drogon"
+if [ "$CURR_TYPE" = "drogon" ]
+then
+	apt install --no-install-recommends -y libjsoncpp-dev uuid-dev
+	apt remove -y libsqlite3-dev
+	SRV_TYPE=SRV_DROGON
+	git clone --recurse-submodules https://github.com/sumeetchhetri/drogon
+	cd  drogon
+	mkdir build
+	cd build
+	cmake -DCMAKE_BUILD_TYPE=Release ..
+	make && make install
+	cd $IROOT
+	rm -rf drogon
+fi
+
+rm -rf /var/lib/apt/lists/*
+
+cd $IROOT/ffead-cpp-src/
 
 chmod 755 *.sh resources/*.sh rtdcf/autotools/*.sh
 rm -rf web/te-benchmark-um
 cp -f ${TROOT}/server.sh script/
-cp -rf ${TROOT}/te-benchmark-um web/
+mv ${TROOT}/te-benchmark-um web/
 sed -i 's|THRD_PSIZ=6|THRD_PSIZ='${SERV_THREADS}'|g' resources/server.prop
 sed -i 's|W_THRD_PSIZ=2|W_THRD_PSIZ='${WRIT_THREADS}'|g' resources/server.prop
 sed -i 's|ENABLE_CRS=true|ENABLE_CRS=false|g' resources/server.prop
 sed -i 's|ENABLE_SEC=true|ENABLE_SEC=false|g' resources/server.prop
 sed -i 's|ENABLE_FLT=true|ENABLE_FLT=false|g' resources/server.prop
 sed -i 's|ENABLE_CNT=true|ENABLE_CNT=true|g' resources/server.prop
+sed -i 's|ENABLE_EXT_CNT=true|ENABLE_EXT_CNT=false|g' resources/server.prop
 sed -i 's|ENABLE_CNT_MPG=true|ENABLE_CNT_MPG=false|g' resources/server.prop
 sed -i 's|ENABLE_CNT_PTH=true|ENABLE_CNT_PTH=false|g' resources/server.prop
 sed -i 's|ENABLE_CNT_EXT=true|ENABLE_CNT_EXT=false|g' resources/server.prop
@@ -41,18 +71,15 @@ sed -i 's|ENABLE_CNT_RST=true|ENABLE_CNT_RST=true|g' resources/server.prop
 sed -i 's|ENABLE_EXT=true|ENABLE_EXT=true|g' resources/server.prop
 sed -i 's|ENABLE_SCR=true|ENABLE_SCR=false|g' resources/server.prop
 sed -i 's|ENABLE_SWS=true|ENABLE_SWS=false|g' resources/server.prop
+sed -i 's|ENABLE_JOBS=true|ENABLE_JOBS=false|g' resources/server.prop
 sed -i 's|LOGGING_ENABLED=true|LOGGING_ENABLED=false|g' resources/server.prop
 
-rm -rf web/default web/oauthApp web/flexApp web/markers web/te-benchmark
+rm -rf web/default web/oauthApp web/flexApp web/markers web/te-benchmark web/peer-server
 
 sed -i 's|localhost|tfb-database|g' web/te-benchmark-um/config/sdorm.xml
 sed -i 's|localhost|tfb-database|g' web/te-benchmark-um/config/sdormmongo.xml
 sed -i 's|localhost|tfb-database|g' web/te-benchmark-um/config/sdormmysql.xml
 sed -i 's|localhost|tfb-database|g' web/te-benchmark-um/config/sdormpostgresql.xml
-#sed -i 's|<pool-size>30</pool-size>|<pool-size>${MAX_THREADS}</pool-size>|g' web/te-benchmark-um/config/sdorm.xml
-#sed -i 's|<pool-size>30</pool-size>|<pool-size>${MAX_THREADS}</pool-size>|g' web/te-benchmark-um/config/sdormmongo.xml
-sed -i 's|<pool-size>30</pool-size>|<pool-size>${MAX_THREADS}</pool-size>|g' web/te-benchmark-um/config/sdormmysql.xml
-sed -i 's|<pool-size>30</pool-size>|<pool-size>${MAX_THREADS}</pool-size>|g' web/te-benchmark-um/config/sdormpostgresql.xml
 sed -i 's|127.0.0.1|tfb-database|g' resources/sample-odbcinst.ini
 sed -i 's|127.0.0.1|tfb-database|g' resources/sample-odbc.ini
 sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/default)||g' CMakeLists.txt
@@ -60,63 +87,31 @@ sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/flexApp)||g' CMakeLists.txt
 sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/oauthApp)||g' CMakeLists.txt
 sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/markers)||g' CMakeLists.txt
 sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark)||g' CMakeLists.txt
+sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/peer-server)||g' CMakeLists.txt
 sed -i 's|install(FILES ${PROJECT_SOURCE_DIR}/web/default/libdefault${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
 sed -i 's|install(FILES ${PROJECT_SOURCE_DIR}/web/flexApp/libflexApp${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
 sed -i 's|install(FILES ${PROJECT_SOURCE_DIR}/web/oauthApp/liboauthApp${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
 sed -i 's|install(FILES ${PROJECT_SOURCE_DIR}/web/markers/libmarkers${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
 sed -i 's|install(FILES ${PROJECT_SOURCE_DIR}/web/te-benchmark/libte_benchmark${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
+sed -i 's|install(FILES ${PROJECT_SOURCE_DIR}/web/peer-server/libpeer_server${CMAKE_SHARED_LIBRARY_SUFFIX} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
 sed -i 's|web/default/src/autotools/Makefile||g' configure.ac
 sed -i 's|web/flexApp/src/autotools/Makefile||g' configure.ac
 sed -i 's|web/oauthApp/src/autotools/Makefile||g' configure.ac
 sed -i 's|web/markers/src/autotools/Makefile||g' configure.ac
 sed -i 's|web/te-benchmark/src/autotools/Makefile||g' configure.ac
+sed -i 's|web/peer-server/src/autotools/Makefile||g' configure.ac
 
 #./autogen.sh
 #./configure --enable-debug=no --enable-apachemod=yes --enable-nginxmod=yes --enable-mod_sdormmongo=yes --enable-mod_sdormsql=yes --enable-mod_rediscache=yes --enable-mod_memcached=yes CPPFLAGS="$CPPFLAGS -I${IROOT}/include/libmongoc-1.0 -I${IROOT}/include/libbson-1.0 -I${IROOT}/include/" LDFLAGS="$LDFLAGS -L${IROOT} -L${IROOT}/lib"
-#make install
-cmake -DMOD_APACHE=on -DMOD_NGINX=on -DMOD_MEMCACHED=on -DMOD_REDIS=on -DMOD_SDORM_MONGO=on .
-#make install -j4
+cmake -DSRV_ALL=on -DCINATRA_INCLUDES=${IROOT}/cinatra/include -DMOD_APACHE=on -DMOD_NGINX=on -DMOD_MEMCACHED=on -DMOD_REDIS=on -DMOD_SDORM_MONGO=on .
 
 cp resources/sample-odbcinst.ini ${IROOT}/odbcinst.ini
 cp resources/sample-odbc.ini ${IROOT}/odbc.ini
 
+#Start building for mongodb as the World model is different for SQL use case
 cd ${IROOT}/ffead-cpp-src/
-sed -i 's|Timer t1;|//Timer t1;|g' src/framework/ServiceTask.cpp
-sed -i 's|t1.start();|//t1.start();|g' src/framework/ServiceTask.cpp
-sed -i 's|t1.end();|//t1.end();|g' src/framework/ServiceTask.cpp
-sed -i 's|CommonUtils::ts|//CommonUtils::ts|g' src/framework/ServiceTask.cpp
-sed -i 's|Timer t;|//Timer t;|g' src/framework/ControllerHandler.cpp
-sed -i 's|t.start();|//t.start();|g' src/framework/ControllerHandler.cpp
-sed -i 's|t.end();|//t.end();|g' src/framework/ControllerHandler.cpp
-sed -i 's|CommonUtils::ts|//CommonUtils::ts|g' src/framework/ControllerHandler.cpp
-sed -i 's|Timer t;|//Timer t;|g' src/modules/server-util/RequestReaderHandler.cpp
-sed -i 's|t.start();|//t.start();|g' src/modules/server-util/RequestReaderHandler.cpp
-sed -i 's|t.end();|//t.end();|g' src/modules/server-util/RequestReaderHandler.cpp
-sed -i 's|CommonUtils::ts|//CommonUtils::ts|g' src/modules/server-util/RequestReaderHandler.cpp
-sed -i 's|Timer t;|//Timer t;|g' src/modules/server-util/SocketInterface.cpp
-sed -i 's|t.start();|//t.start();|g' src/modules/server-util/SocketInterface.cpp
-sed -i 's|t.end();|//t.end();|g' src/modules/server-util/SocketInterface.cpp
-sed -i 's|CommonUtils::ts|//CommonUtils::ts|g' src/modules/server-util/SocketInterface.cpp
-sed -i 's|Timer to;|//Timer to;|g' src/modules/server-util/SocketInterface.cpp
-sed -i 's|to.start();|//to.start();|g' src/modules/server-util/SocketInterface.cpp
-sed -i 's|to.end();|//to.end();|g' src/modules/server-util/SocketInterface.cpp
-sed -i 's|CommonUtils::ts|//CommonUtils::ts|g' src/modules/server-util/SocketInterface.cpp
-sed -i 's|Timer t;|//Timer t;|g' web/te-benchmark-um/src/TeBkUm.cpp
-sed -i 's|t.start();|//t.start();|g' web/te-benchmark-um/src/TeBkUm.cpp
-sed -i 's|t.end();|//t.end();|g' web/te-benchmark-um/src/TeBkUm.cpp
-sed -i 's|CommonUtils::ts|//CommonUtils::ts|g' web/te-benchmark-um/src/TeBkUm.cpp
-sed -i 's|Timer t;|//Timer t;|g' src/modules/http/http11/Http11Handler.cpp
-sed -i 's|t.start();|//t.start();|g' src/modules/http/http11/Http11Handler.cpp
-sed -i 's|t.end();|//t.end();|g' src/modules/http/http11/Http11Handler.cpp
-sed -i 's|CommonUtils::ts|//CommonUtils::ts|g' src/modules/http/http11/Http11Handler.cpp
-sed -i 's|Timer t;|//Timer t;|g' src/modules/http/HttpServiceHandler.cpp
-sed -i 's|t.start();|//t.start();|g' src/modules/http/HttpServiceHandler.cpp
-sed -i 's|t.end();|//t.end();|g' src/modules/http/HttpServiceHandler.cpp
-sed -i 's|CommonUtils::ts|//CommonUtils::ts|g' src/modules/http/HttpServiceHandler.cpp
-sed -i 's|Timer to;|//Timer to;|g' src/modules/http/HttpServiceHandler.cpp
-sed -i 's|to.start();|//to.start();|g' src/modules/http/HttpServiceHandler.cpp
-sed -i 's|to.end();|//to.end();|g' src/modules/http/HttpServiceHandler.cpp
-sed -i 's|CommonUtils::ts|//CommonUtils::ts|g' src/modules/http/HttpServiceHandler.cpp
+cp -f web/te-benchmark-um/sql-src/TeBkUmWorldmongo.h web/te-benchmark-um/include/TeBkUmWorld.h
+cp -f web/te-benchmark-um/sql-src/TeBkUmWorldmongo.cpp web/te-benchmark-um/src/TeBkUmWorld.cpp
 make install -j${MAX_THREADS}
 
 rm -f /usr/local/lib/libffead-*
@@ -124,7 +119,7 @@ rm -f /usr/local/lib/libte_benc*
 rm -f /usr/local/lib/libinter.so
 rm -f /usr/local/lib/libdinter.so
 
-cd ffead-cpp-3.0-bin
+cd ffead-cpp-4.0-bin
 chmod 755 *.sh resources/*.sh rtdcf/autotools/*.sh
 ./server.sh &
 while [ ! -f lib/libinter.so ]
@@ -138,22 +133,51 @@ done
 pkill ffead-cpp
 
 cd ${IROOT}/ffead-cpp-src/
-cp -rf ffead-cpp-3.0-bin ${IROOT}/ffead-cpp-3.0
-rm -rf ffead-cpp-3.0-bin
+cp -rf ffead-cpp-4.0-bin ${IROOT}/ffead-cpp-4.0
+rm -rf ffead-cpp-4.0-bin
+
+cd ${IROOT}/ffead-cpp-4.0
+cp -f ${TROOT}/run_ffead.sh ./
 
-ln -s ${IROOT}/ffead-cpp-3.0/lib/libte_benchmark_um.so /usr/local/lib/libte_benchmark_um.so
-ln -s ${IROOT}/ffead-cpp-3.0/lib/libffead-modules.so /usr/local/lib/libffead-modules.so
-ln -s ${IROOT}/ffead-cpp-3.0/lib/libffead-framework.so /usr/local/lib/libffead-framework.so
-ln -s ${IROOT}/ffead-cpp-3.0/lib/libinter.so /usr/local/lib/libinter.so
-ln -s ${IROOT}/ffead-cpp-3.0/lib/libdinter.so /usr/local/lib/libdinter.so
-ldconfig
+chmod 755 *.sh resources/*.sh rtdcf/autotools/*.sh
+chmod 755 *.sh
+rm -f *.cntrl
+rm -f tmp/*.sess
+#cache related dockerfiles will add the cache.xml accordingly whenever needed
+rm -f web/te-benchmark-um/config/cache.xml
+#Done building for mongodb
+
+
+#Start building for sql as the World model is different for mongodb use case
+cd ${IROOT}/ffead-cpp-src/
+cp -f web/te-benchmark-um/sql-src/TeBkUmWorldsql.h web/te-benchmark-um/include/TeBkUmWorld.h
+cp -f web/te-benchmark-um/sql-src/TeBkUmWorldsql.cpp web/te-benchmark-um/src/TeBkUmWorld.cpp
+make install -j${MAX_THREADS}
+
+cd ffead-cpp-4.0-bin
+chmod 755 *.sh resources/*.sh rtdcf/autotools/*.sh
+./server.sh &
+while [ ! -f lib/libinter.so ]
+do
+	sleep 1
+done
+while [ ! -f lib/libdinter.so ]
+do
+	sleep 1
+done
+pkill ffead-cpp
+
+cd ${IROOT}/ffead-cpp-src/
+cp -rf ffead-cpp-4.0-bin ${IROOT}/ffead-cpp-4.0-sql
+rm -rf ffead-cpp-4.0-bin
 
-cd ${IROOT}/ffead-cpp-3.0
+cd ${IROOT}/ffead-cpp-4.0-sql
 cp -f ${TROOT}/run_ffead.sh ./
 
 chmod 755 *.sh resources/*.sh rtdcf/autotools/*.sh
-chmod 755 $FFEAD_CPP_PATH/*.sh
-rm -f $FFEAD_CPP_PATH/*.cntrl
-rm -f $FFEAD_CPP_PATH/tmp/*.sess
+chmod 755 *.sh
+rm -f *.cntrl
+rm -f tmp/*.sess
 #cache related dockerfiles will add the cache.xml accordingly whenever needed
 rm -f web/te-benchmark-um/config/cache.xml
+#Done building for sql

+ 9 - 9
frameworks/C++/ffead-cpp/install_ffead-cpp-httpd.sh

@@ -2,7 +2,7 @@
 
 cd $IROOT
 
-#chown -R www-data:www-data ffead-cpp-3.0
+#chown -R www-data:www-data ffead-cpp-4.0
 
 #wget -q https://archive.apache.org/dist/httpd/httpd-2.4.25.tar.gz
 #wget -q https://archive.apache.org/dist/apr/apr-1.5.2.tar.gz
@@ -23,19 +23,19 @@ cd $IROOT
 #make install
 #cd ${IROOT}
 
-sed -i 's|#define PACKAGE_BUGREPORT "[email protected]"| |g' ${IROOT}/ffead-cpp-3.0/include/AppDefines.h
-sed -i 's|#define PACKAGE_NAME "ffead-cpp"| |g' ${IROOT}/ffead-cpp-3.0/include/AppDefines.h
-sed -i 's|#define PACKAGE_STRING "ffead-cpp 2.0"| |g' ${IROOT}/ffead-cpp-3.0/include/AppDefines.h
-sed -i 's|#define PACKAGE_TARNAME "ffead-cpp"| |g' ${IROOT}/ffead-cpp-3.0/include/AppDefines.h
-sed -i 's|#define PACKAGE_VERSION "2.0"| |g' ${IROOT}/ffead-cpp-3.0/include/AppDefines.h
+sed -i 's|#define PACKAGE_BUGREPORT "[email protected]"| |g' ${IROOT}/ffead-cpp-4.0/include/AppDefines.h
+sed -i 's|#define PACKAGE_NAME "ffead-cpp"| |g' ${IROOT}/ffead-cpp-4.0/include/AppDefines.h
+sed -i 's|#define PACKAGE_STRING "ffead-cpp 4.0"| |g' ${IROOT}/ffead-cpp-4.0/include/AppDefines.h
+sed -i 's|#define PACKAGE_TARNAME "ffead-cpp"| |g' ${IROOT}/ffead-cpp-4.0/include/AppDefines.h
+sed -i 's|#define PACKAGE_VERSION "4.0"| |g' ${IROOT}/ffead-cpp-4.0/include/AppDefines.h
 
 #cd ${IROOT}/ffead-cpp-src/modules/apache_mod_ffeadcpp/
-#g++ -fpic -DSHARED_MODULE -fpermissive -std=gnu++11 -I"/usr/include/apache2" -I"/usr/include/apr-1.0" -I"${IROOT}/ffead-cpp-3.0/include/" -I"${IROOT}/include" -I"${IROOT}/include/libbson-1.0/" -I"${IROOT}/include/libmongoc-1.0" mod_ffeadcpp.cpp -L"${IROOT}/ffead-cpp-3.0/lib" -L"${IROOT}" -L"${IROOT}/lib" -lffead_common -lffead_framework -ldl -lcrypto -lssl -lhiredis -lmemcachedutil -c mod_ffeadcpp.cpp
-#g++ -shared -o mod_ffeadcpplib.so mod_ffeadcpp.o -L"${IROOT}/ffead-cpp-3.0/lib" -L"${IROOT}" -L"${IROOT}/lib" -lffead_common -lffead_framework -ldl -lcrypto -lssl -lapr-1 -laprutil-1 -lstdc++ -lhiredis -lmemcachedutil
+#g++ -fpic -DSHARED_MODULE -fpermissive -std=gnu++11 -I"/usr/include/apache2" -I"/usr/include/apr-1.0" -I"${IROOT}/ffead-cpp-4.0/include/" -I"${IROOT}/include" -I"${IROOT}/include/libbson-1.0/" -I"${IROOT}/include/libmongoc-1.0" mod_ffeadcpp.cpp -L"${IROOT}/ffead-cpp-4.0/lib" -L"${IROOT}" -L"${IROOT}/lib" -lffead_common -lffead_framework -ldl -lcrypto -lssl -lhiredis -lmemcachedutil -c mod_ffeadcpp.cpp
+#g++ -shared -o mod_ffeadcpplib.so mod_ffeadcpp.o -L"${IROOT}/ffead-cpp-4.0/lib" -L"${IROOT}" -L"${IROOT}/lib" -lffead_common -lffead_framework -ldl -lcrypto -lssl -lapr-1 -laprutil-1 -lstdc++ -lhiredis -lmemcachedutil
 #apxs -i -n 'ffead_cpp_module' mod_ffeadcpplib.so
 #cd -
 
-FFEADROOT=${IROOT}/ffead-cpp-3.0
+FFEADROOT=${IROOT}/ffead-cpp-4.0
 ETROOT=${FFEADROOT//\//\\/}
 EIROOT=${IROOT//\//\\/}
 

+ 3 - 3
frameworks/C++/ffead-cpp/install_ffead-cpp-nginx.sh

@@ -9,11 +9,11 @@ cd $IROOT
 
 #./configure \
 #    --prefix=${IROOT}/nginxfc \
-#    --with-ld-opt="-lstdc++ -L/usr/local/lib -L${IROOT}/ffead-cpp-3.0/lib -L${IROOT} -L${IROOT}/lib" \
+#    --with-ld-opt="-lstdc++ -L/usr/local/lib -L${IROOT}/ffead-cpp-4.0/lib -L${IROOT} -L${IROOT}/lib" \
 #    --add-module="${IROOT}/ffead-cpp-src/modules/nginx_mod_ffeadcpp" \
-#    --with-cc-opt="-I${IROOT}/ffead-cpp-3.0/include -I${IROOT}/include -I${IROOT}/#include/libmongoc-1.0 -I${IROOT}/include/libbson-1.0 -w -fpermissive -std=gnu++11"
+#    --with-cc-opt="-I${IROOT}/ffead-cpp-4.0/include -I${IROOT}/include -I${IROOT}/#include/libmongoc-1.0 -I${IROOT}/include/libbson-1.0 -w -fpermissive -std=gnu++11"
 #make
 #make install
 
 cp ${IROOT}/ffead-cpp-src/modules/nginx_mod_ffeadcpp/nginx.conf ${IROOT}/nginxfc/conf/
-sed -i 's|FFEAD_PATH|'${IROOT}/ffead-cpp-3.0'|g' ${IROOT}/nginxfc/conf/nginx.conf
+sed -i 's|FFEAD_PATH|'${IROOT}/ffead-cpp-4.0'|g' ${IROOT}/nginxfc/conf/nginx.conf

+ 168 - 9
frameworks/C++/ffead-cpp/run_ffead.sh

@@ -1,5 +1,19 @@
 #!/bin/sh
 
+rm -f /usr/local/lib/libffead-*
+rm -f /usr/local/lib/libte_benc*
+rm -f /usr/local/lib/libinter.so
+rm -f /usr/local/lib/libdinter.so
+
+export FFEAD_CPP_PATH=${IROOT}/$1
+
+ln -s ${FFEAD_CPP_PATH}/lib/libte_benchmark_um.so /usr/local/lib/libte_benchmark_um.so
+ln -s ${FFEAD_CPP_PATH}/lib/libffead-modules.so /usr/local/lib/libffead-modules.so
+ln -s ${FFEAD_CPP_PATH}/lib/libffead-framework.so /usr/local/lib/libffead-framework.so
+ln -s ${FFEAD_CPP_PATH}/lib/libinter.so /usr/local/lib/libinter.so
+ln -s ${FFEAD_CPP_PATH}/lib/libdinter.so /usr/local/lib/libdinter.so
+ldconfig
+
 echo never > /sys/kernel/mm/transparent_hugepage/enabled
 echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local
 sysctl vm.overcommit_memory=1
@@ -22,35 +36,47 @@ service memcached stop
 rm -f /tmp/cache.lock
 rm -f web/te-benchmark-um/config/cache.xml
 
-if [ $2 = "redis" ]
+if [ "$3" = "redis" ]
 then
 	service redis-server start
 	cp -f web/te-benchmark-um/config/cacheredis.xml web/te-benchmark-um/config/cache.xml
 	cp -f web/te-benchmark-um/config/sdormmongo.xml web/te-benchmark-um/config/sdorm.xml
 fi
 
-if [ $2 = "memcached" ]
+if [ "$3" = "memcached" ]
 then
 	service memcached start
 	cp -f web/te-benchmark-um/config/cachememcached.xml web/te-benchmark-um/config/cache.xml
 	cp -f web/te-benchmark-um/config/sdormmongo.xml web/te-benchmark-um/config/sdorm.xml
 fi
 
-if [ $2 = "mongo" ]
+if [ "$3" = "mongo" ]
 then
 	cp -f web/te-benchmark-um/config/sdormmongo.xml web/te-benchmark-um/config/sdorm.xml
 fi
 
-if [ $2 = "mysql" ]
+if [ "$3" = "mysql" ]
 then
 	cp -f web/te-benchmark-um/config/sdormmysql.xml web/te-benchmark-um/config/sdorm.xml
 fi
 
-if [ $2 = "postgresql" ]
+if [ "$3" = "postgresql" ]
 then
 	cp -f web/te-benchmark-um/config/sdormpostgresql.xml web/te-benchmark-um/config/sdorm.xml
 fi
 
+if [ "$4" = "redis" ]
+then
+	service redis-server start
+	cp -f web/te-benchmark-um/config/cacheredis.xml web/te-benchmark-um/config/cache.xml
+fi
+
+if [ "$4" = "memcached" ]
+then
+	service memcached start
+	cp -f web/te-benchmark-um/config/cachememcached.xml web/te-benchmark-um/config/cache.xml
+fi
+
 rm -f rtdcf/*.d rtdcf/*.o 
 rm -f *.cntrl
 rm -f tmp/*.sess
@@ -62,23 +88,156 @@ chmod 700 resources/*.sh
 chmod 700 tests/*
 chmod 700 rtdcf/*
 
-if [ $1 = "emb" ]
+if [ "$2" = "emb" ]
+then
+	sed -i 's|EVH_SINGLE=false|EVH_SINGLE=true|g' $FFEAD_CPP_PATH/resources/server.prop
+	for i in $(seq 0 $(($(nproc --all)-1))); do
+	  taskset -c $i ./ffead-cpp $FFEAD_CPP_PATH &
+	done
+fi
+
+if [ "$2" = "lithium" ]
 then
-	./ffead-cpp $FFEAD_CPP_PATH
+	./ffead-cpp-lithium $FFEAD_CPP_PATH &
 fi
 
-if [ $1 = "apache" ]
+if [ "$2" = "cinatra" ]
 then
+	./ffead-cpp-cinatra $FFEAD_CPP_PATH &
+fi
+
+if [ "$2" = "drogon" ]
+then
+	./ffead-cpp-drogon $FFEAD_CPP_PATH &
+fi
+
+if [ "$2" = "apache" ]
+then
+	if [ "$3" = "mysql" ] || [ "$3" = "postgresql" ]
+	then
+		sed -i 's|/installs/ffead-cpp-4.0|'/installs/ffead-cpp-4.0-sql'|g' /etc/apache2/apache2.conf
+		sed -i 's|/installs/ffead-cpp-4.0|'/installs/ffead-cpp-4.0-sql'|g' /etc/apache2/sites-enabled/000-default.conf /etc/apache2/sites-enabled/ffead-site.conf
+	fi
 	sed -i 's|<pool-size>30</pool-size>|<pool-size>3</pool-size>|g' $FFEAD_CPP_PATH/web/te-benchmark-um/config/sdorm.xml
 	sed -i 's|<pool-size>10</pool-size>|<pool-size>2</pool-size>|g' $FFEAD_CPP_PATH/web/te-benchmark-um/config/cache.xml
 	apachectl -D FOREGROUND
 fi
 
-if [ $1 = "nginx" ]
+if [ "$2" = "nginx" ]
 then
+	mkdir ${IROOT}/ffead-cpp-src
+	if [ "$3" = "mysql" ] || [ "$3" = "postgresql" ]
+	then
+		sed -i 's|/installs/ffead-cpp-4.0/|'/installs/ffead-cpp-4.0-sql/'|g' ${IROOT}/nginxfc/conf/nginx.conf
+	fi
 	sed -i 's|<pool-size>30</pool-size>|<pool-size>3</pool-size>|g' $FFEAD_CPP_PATH/web/te-benchmark-um/config/sdorm.xml
 	sed -i 's|<pool-size>10</pool-size>|<pool-size>2</pool-size>|g' $FFEAD_CPP_PATH/web/te-benchmark-um/config/cache.xml
 	nginx -g 'daemon off;'
 fi
 
+if [ "$2" = "libreactor" ]
+then
+	cd ${IROOT}
+	./libreactor-ffead-cpp $FFEAD_CPP_PATH 8080
+fi
+
+if [ "$2" = "crystal-http" ]
+then
+	cd ${IROOT}
+	./crystal-ffead-cpp.out --ffead-cpp-dir=$FFEAD_CPP_PATH --to=8080
+fi
+
+if [ "$2" = "crystal-h2o" ]
+then
+	cd ${IROOT}
+	./h2o-evloop-ffead-cpp.out --ffead-cpp-dir=$FFEAD_CPP_PATH --to=8080
+fi
+
+if [ "$2" = "rust-actix" ]
+then
+	cd ${IROOT}
+	./actix-ffead-cpp $FFEAD_CPP_PATH 8080
+fi
+
+if [ "$2" = "rust-hyper" ]
+then
+	cd ${IROOT}
+	./hyper-ffead-cpp $FFEAD_CPP_PATH 8080
+fi
+
+if [ "$2" = "rust-thruster" ]
+then
+	cd ${IROOT}
+	./thruster-ffead-cpp $FFEAD_CPP_PATH 8080
+fi
+
+if [ "$2" = "rust-rocket" ]
+then
+	cd ${IROOT}
+	./rocket-ffead-cpp $FFEAD_CPP_PATH 8080
+fi
+
+if [ "$2" = "go-fasthttp" ]
+then
+	cd ${IROOT}
+	./fasthttp-ffead-cpp --server_directory=$FFEAD_CPP_PATH -addr=8080
+fi
+
+if [ "$2" = "go-gnet" ]
+then
+	cd ${IROOT}
+	./gnet-ffead-cpp --server_directory=$FFEAD_CPP_PATH --port=8080
+fi
+
+if [ "$2" = "v-vweb" ]
+then
+	cd ${IROOT}
+	./vweb --server_dir=$FFEAD_CPP_PATH --server_port=8080
+fi
+
+if [ "$2" = "v-picov" ]
+then
+	cd ${IROOT}
+	./main --server_dir=$FFEAD_CPP_PATH --server_port=8080
+fi
+
+if [ "$2" = "java-firenio" ]
+then
+	cd ${IROOT}
+	java                       	   \
+	    -server                    \
+	    -XX:+UseNUMA               \
+	    -XX:+UseParallelGC         \
+	    -XX:+AggressiveOpts        \
+	    -Dlite=false               \
+	    -Dcore=1                   \
+	    -Dframe=16                 \
+	    -DreadBuf=512              \
+	    -Dpool=true                \
+	    -Ddirect=true              \
+	    -Dinline=true              \
+	    -Dlevel=1                  \
+	    -Dread=false               \
+	    -Depoll=true               \
+	    -Dnodelay=true             \
+	    -Dcachedurl=false          \
+	    -DunsafeBuf=true           \
+	    -classpath firenio-ffead-cpp-0.1-jar-with-dependencies.jar com.firenio.ffeadcpp.FirenioFfeadCppServer $FFEAD_CPP_PATH 8080
+fi
+
+if [ "$2" = "java-rapidoid" ]
+then
+	cd ${IROOT}
+	java -server -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts \
+		-classpath rapidoid-ffead-cpp-1.0-jar-with-dependencies.jar \
+		com.rapidoid.ffeadcpp.Main $FFEAD_CPP_PATH 8080 profiles=production
+fi
+
+if [ "$2" = "java-wizzardo-http" ]
+then
+	cd ${IROOT}
+	java -Xmx2G -Xms2G -server -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts \
+		-jar wizzardo-ffead-cpp-all-1.0.jar $FFEAD_CPP_PATH 8080 env=prod
+fi
+
 wait

+ 3 - 0
frameworks/C++/ffead-cpp/server.sh

@@ -22,6 +22,9 @@ if [ ! -d tmp ]; then
 mkdir tmp
 fi
 chmod 700 $FFEAD_CPP_PATH/ffead-cpp
+chmod 700 $FFEAD_CPP_PATH/ffead-cpp-lithium
+chmod 700 $FFEAD_CPP_PATH/ffead-cpp-cinatra
+chmod 700 $FFEAD_CPP_PATH/ffead-cpp-drogon
 chmod 700 $FFEAD_CPP_PATH/resources/*.sh
 chmod 700 $FFEAD_CPP_PATH/tests/*
 chmod 700 $FFEAD_CPP_PATH/rtdcf/*

+ 15 - 1
frameworks/C++/ffead-cpp/te-benchmark-um/include/TeBkUm.h

@@ -1,3 +1,18 @@
+/*
+	Copyright 2009-2020, Sumeet Chhetri
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+*/
 /*
  * TeBkUm.h
  *
@@ -52,7 +67,6 @@ public:
 	void setMessage(const std::string& message);
 };
 
-#pragma @Router
 class TeBkUmRouter : public Router {
 	static const std::string HELLO_WORLD;
 	static std::string WORLD;

+ 15 - 0
frameworks/C++/ffead-cpp/te-benchmark-um/include/TeBkUmWorld.h

@@ -1,3 +1,18 @@
+/*
+	Copyright 2009-2020, Sumeet Chhetri
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+*/
 /*
  * TeBkUmWorld.h
  *

+ 15 - 0
frameworks/C++/ffead-cpp/te-benchmark-um/sql-src/TeBkUmWorldmongo.cpp

@@ -1,3 +1,18 @@
+/*
+	Copyright 2009-2020, Sumeet Chhetri
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+*/
 /*
  * TeBkUmWorld.cpp
  *

+ 15 - 0
frameworks/C++/ffead-cpp/te-benchmark-um/sql-src/TeBkUmWorldmongo.h

@@ -1,3 +1,18 @@
+/*
+	Copyright 2009-2020, Sumeet Chhetri
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+*/
 /*
  * TeBkUmWorld.h
  *

+ 15 - 0
frameworks/C++/ffead-cpp/te-benchmark-um/sql-src/TeBkUmWorldsql.cpp

@@ -1,3 +1,18 @@
+/*
+	Copyright 2009-2020, Sumeet Chhetri
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+*/
 /*
  * TeBkUmWorld.cpp
  *

+ 15 - 0
frameworks/C++/ffead-cpp/te-benchmark-um/sql-src/TeBkUmWorldsql.h

@@ -1,3 +1,18 @@
+/*
+	Copyright 2009-2020, Sumeet Chhetri
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+*/
 /*
  * TeBkUmWorld.h
  *

+ 101 - 88
frameworks/C++/ffead-cpp/te-benchmark-um/src/TeBkUm.cpp

@@ -1,3 +1,18 @@
+/*
+	Copyright 2009-2020, Sumeet Chhetri
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+*/
 /*
  * TeBkUmUm.cpp
  *
@@ -207,10 +222,60 @@ bool TeBkUmRouter::strToNum(const char* str, int len, int& ret) {
 }
 
 void TeBkUmRouter::route(HttpRequest* req, HttpResponse* res, void* dlib, void* ddlib) {
-	Timer t;
-	t.start();
+	//Timer t;
+	//t.start();
 	std::string_view path = req->getPath();
-	if(StringUtil::endsWith(path, "/fortunes")) {
+	if(StringUtil::endsWith(path, "/plaintext")) {
+		//t.end();
+		//CommonUtils::tsContRstLkp += t.timerNanoSeconds();
+		//t.start();
+		res->setContent(HELLO_WORLD);
+		res->setContentType(ContentTypes::CONTENT_TYPE_TEXT_PLAIN);
+		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
+		//t.end();
+		//CommonUtils::tsContRstSer += t.timerNanoSeconds();
+	} else if(StringUtil::endsWith(path, "/json")) {
+		//t.end();
+		//CommonUtils::tsContRstLkp += t.timerNanoSeconds();
+		//t.start();
+		TeBkUmMessage msg;
+		msg.setMessage(HELLO_WORLD);
+		res->setContent(JSONSerialize::serializeUnknown(&msg, 0, "TeBkUmMessage"));
+		res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
+		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
+		//t.end();
+		//CommonUtils::tsContRstSer += t.timerNanoSeconds();
+	} else if(StringUtil::endsWith(path, "/db")) {
+		//t.end();
+		//CommonUtils::tsContRstLkp += t.timerNanoSeconds();
+		//t.start();
+		TeBkUmWorld msg;
+		db(msg);
+		//t.end();
+		//CommonUtils::tsContExec += t.timerNanoSeconds();
+		//t.start();
+		res->setContent(JSONSerialize::serializeUnknown(&msg, 0, "TeBkUmWorld"));
+		res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
+		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
+		//t.end();
+		//CommonUtils::tsContRstSer += t.timerNanoSeconds();
+	} else if(StringUtil::endsWith(path, "/queries")) {
+		//t.end();
+		//CommonUtils::tsContRstLkp += t.timerNanoSeconds();
+		//t.start();
+		struct yuarel_param params[1];
+		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
+		std::vector<TeBkUmWorld> msg;
+		queries(params[0].val, params[0].val_len, msg);
+		//t.end();
+		//CommonUtils::tsContExec += t.timerNanoSeconds();
+		//t.start();
+		res->setContent(JSONSerialize::serializeUnknown(&msg, 100, "std::vector<TeBkUmWorld>"));
+		res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
+		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
+		//t.end();
+		//CommonUtils::tsContRstSer += t.timerNanoSeconds();
+	} else if(StringUtil::endsWith(path, "/fortunes")) {
 		Context ctx;
 		getContext(req, &ctx);
 
@@ -224,92 +289,40 @@ void TeBkUmRouter::route(HttpRequest* req, HttpResponse* res, void* dlib, void*
 			res->setContentType(ContentTypes::CONTENT_TYPE_TEXT_SHTML);
 			res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
 		}
+	} else if(StringUtil::endsWith(path, "/updates")) {
+		//t.end();
+		//CommonUtils::tsContRstLkp += t.timerNanoSeconds();
+		//t.start();
+		struct yuarel_param params[1];
+		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
+		std::vector<TeBkUmWorld> msg;
+		updates(params[0].val, params[0].val_len, msg);
+		//t.end();
+		//CommonUtils::tsContExec += t.timerNanoSeconds();
+		//t.start();
+		res->setContent(JSONSerialize::serializeUnknown(&msg, 100, "std::vector<TeBkUmWorld>"));
+		res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
+		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
+		//t.end();
+		//CommonUtils::tsContRstSer += t.timerNanoSeconds();
+	} else if(StringUtil::endsWith(path, "/cached-worlds")) {
+		//t.end();
+		//CommonUtils::tsContRstLkp += t.timerNanoSeconds();
+		//t.start();
+		struct yuarel_param params[1];
+		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
+		std::vector<TeBkUmWorld> msg;
+		cachedWorlds(params[0].val, params[0].val_len, msg);
+		//t.end();
+		//CommonUtils::tsContExec += t.timerNanoSeconds();
+		//t.start();
+		res->setContent(JSONSerialize::serializeUnknown(&msg, 100, "std::vector<TeBkUmWorld>"));
+		res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
+		res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
+		//t.end();
+		//CommonUtils::tsContRstSer += t.timerNanoSeconds();
 	} else {
-		if(StringUtil::endsWith(path, "/json")) {
-			t.end();
-			CommonUtils::tsContRstLkp += t.timerNanoSeconds();
-			t.start();
-			TeBkUmMessage msg;
-			msg.setMessage(HELLO_WORLD);
-			res->setContent(JSONSerialize::serializeUnknown(&msg, 0, "TeBkUmMessage"));
-			res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
-			res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
-			t.end();
-			CommonUtils::tsContRstSer += t.timerNanoSeconds();
-		} else if(StringUtil::endsWith(path, "/plaintext")) {
-			t.end();
-			CommonUtils::tsContRstLkp += t.timerNanoSeconds();
-			t.start();
-			res->setContent(HELLO_WORLD);
-			res->setContentType(ContentTypes::CONTENT_TYPE_TEXT_PLAIN);
-			res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
-			t.end();
-			CommonUtils::tsContRstSer += t.timerNanoSeconds();
-		} else if(StringUtil::endsWith(path, "/db")) {
-			t.end();
-			CommonUtils::tsContRstLkp += t.timerNanoSeconds();
-			t.start();
-			TeBkUmWorld msg;
-			db(msg);
-			t.end();
-			CommonUtils::tsContExec += t.timerNanoSeconds();
-			t.start();
-			res->setContent(JSONSerialize::serializeUnknown(&msg, 0, "TeBkUmWorld"));
-			res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
-			res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
-			t.end();
-			CommonUtils::tsContRstSer += t.timerNanoSeconds();
-		} else if(StringUtil::endsWith(path, "/queries")) {
-			t.end();
-			CommonUtils::tsContRstLkp += t.timerNanoSeconds();
-			t.start();
-			struct yuarel_param params[1];
-			yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
-			std::vector<TeBkUmWorld> msg;
-			queries(params[0].val, params[0].val_len, msg);
-			t.end();
-			CommonUtils::tsContExec += t.timerNanoSeconds();
-			t.start();
-			res->setContent(JSONSerialize::serializeUnknown(&msg, 100, "std::vector<TeBkUmWorld>"));
-			res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
-			res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
-			t.end();
-			CommonUtils::tsContRstSer += t.timerNanoSeconds();
-		} else if(StringUtil::endsWith(path, "/updates")) {
-			t.end();
-			CommonUtils::tsContRstLkp += t.timerNanoSeconds();
-			t.start();
-			struct yuarel_param params[1];
-			yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
-			std::vector<TeBkUmWorld> msg;
-			updates(params[0].val, params[0].val_len, msg);
-			t.end();
-			CommonUtils::tsContExec += t.timerNanoSeconds();
-			t.start();
-			res->setContent(JSONSerialize::serializeUnknown(&msg, 100, "std::vector<TeBkUmWorld>"));
-			res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
-			res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
-			t.end();
-			CommonUtils::tsContRstSer += t.timerNanoSeconds();
-		} else if(StringUtil::endsWith(path, "/cached-worlds")) {
-			t.end();
-			CommonUtils::tsContRstLkp += t.timerNanoSeconds();
-			t.start();
-			struct yuarel_param params[1];
-			yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
-			std::vector<TeBkUmWorld> msg;
-			cachedWorlds(params[0].val, params[0].val_len, msg);
-			t.end();
-			CommonUtils::tsContExec += t.timerNanoSeconds();
-			t.start();
-			res->setContent(JSONSerialize::serializeUnknown(&msg, 100, "std::vector<TeBkUmWorld>"));
-			res->setContentType(ContentTypes::CONTENT_TYPE_APPLICATION_JSON);
-			res->setHTTPResponseStatus(HTTPResponseStatus::Ok);
-			t.end();
-			CommonUtils::tsContRstSer += t.timerNanoSeconds();
-		} else {
-			res->setHTTPResponseStatus(HTTPResponseStatus::NotFound);
-		}
+		res->setHTTPResponseStatus(HTTPResponseStatus::NotFound);
 	}
 	res->setDone(true);
 }

+ 15 - 0
frameworks/C++/ffead-cpp/te-benchmark-um/src/TeBkUmWorld.cpp

@@ -1,3 +1,18 @@
+/*
+	Copyright 2009-2020, Sumeet Chhetri
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+*/
 /*
  * TeBkUmWorld.cpp
  *