Browse Source

Port go tests to docker (#3382)

* Port go tests to docker

* Enable go tests in travis
Michael Hixson 7 years ago
parent
commit
0f5656af5f
73 changed files with 250 additions and 269 deletions
  1. 10 10
      .travis.yml
  2. 34 0
      frameworks/Go/aah/aah.dockerfile
  3. 0 1
      frameworks/Go/aah/benchmark_config.json
  4. 0 38
      frameworks/Go/aah/setup.sh
  5. 0 0
      frameworks/Go/beego/.gitkeep
  6. 15 0
      frameworks/Go/beego/beego-orm-mysql.dockerfile
  7. 15 0
      frameworks/Go/beego/beego.dockerfile
  8. 1 3
      frameworks/Go/beego/benchmark_config.json
  9. 0 0
      frameworks/Go/beego/bin/.gitkepp
  10. 0 12
      frameworks/Go/beego/setup-beego-orm-mysql.sh
  11. 0 3
      frameworks/Go/beego/setup.bat
  12. 0 10
      frameworks/Go/beego/setup.sh
  13. 0 1
      frameworks/Go/echo/benchmark_config.json
  14. 17 0
      frameworks/Go/echo/echo.dockerfile
  15. 0 18
      frameworks/Go/echo/setup.sh
  16. 0 1
      frameworks/Go/falcore/benchmark_config.json
  17. 0 0
      frameworks/Go/falcore/bin/.gitkeep
  18. 10 0
      frameworks/Go/falcore/falcore.dockerfile
  19. 0 2
      frameworks/Go/falcore/setup.bat
  20. 0 8
      frameworks/Go/falcore/setup.sh
  21. 1 1
      frameworks/Go/falcore/src/framework_benchmarks/falcore.go
  22. 0 2
      frameworks/Go/fasthttp/benchmark_config.json
  23. 18 0
      frameworks/Go/fasthttp/fasthttp-postgresql.dockerfile
  24. 18 0
      frameworks/Go/fasthttp/fasthttp.dockerfile
  25. 0 18
      frameworks/Go/fasthttp/setup-mysql.sh
  26. 0 18
      frameworks/Go/fasthttp/setup-postgresql.sh
  27. 0 3
      frameworks/Go/fasthttp/setup.bat
  28. 1 1
      frameworks/Go/fasthttp/src/server-mysql/server.go
  29. 1 1
      frameworks/Go/fasthttp/src/server-postgresql/server.go
  30. 0 1
      frameworks/Go/gin/benchmark_config.json
  31. 12 0
      frameworks/Go/gin/gin.dockerfile
  32. 0 8
      frameworks/Go/gin/setup.sh
  33. 0 5
      frameworks/Go/go-std/benchmark_config.json
  34. 7 0
      frameworks/Go/go-std/go-base.dockerfile
  35. 3 0
      frameworks/Go/go-std/go-interpolate.dockerfile
  36. 4 0
      frameworks/Go/go-std/go-mongo.dockerfile
  37. 3 0
      frameworks/Go/go-std/go-postgres.dockerfile
  38. 3 0
      frameworks/Go/go-std/go-prefork.dockerfile
  39. 3 0
      frameworks/Go/go-std/go.dockerfile
  40. 1 1
      frameworks/Go/go-std/hello_mongo.go
  41. 2 7
      frameworks/Go/go-std/hello_mysql.go
  42. 2 8
      frameworks/Go/go-std/hello_postgres.go
  43. 0 2
      frameworks/Go/go-std/setup.bat
  44. 0 7
      frameworks/Go/go-std/setup.sh
  45. 0 9
      frameworks/Go/go-std/setup_mongo.sh
  46. 0 7
      frameworks/Go/go-std/setup_postgres.sh
  47. 0 7
      frameworks/Go/go-std/setup_prefork.sh
  48. 0 1
      frameworks/Go/goji/benchmark_config.json
  49. 13 0
      frameworks/Go/goji/goji.dockerfile
  50. 0 11
      frameworks/Go/goji/setup.sh
  51. 1 1
      frameworks/Go/goji/src/goji/server.go
  52. 0 1
      frameworks/Go/kami/benchmark_config.json
  53. 12 0
      frameworks/Go/kami/kami.dockerfile
  54. 0 10
      frameworks/Go/kami/setup.sh
  55. 1 1
      frameworks/Go/kami/src/kami/server.go
  56. 0 4
      frameworks/Go/revel/benchmark_config.json
  57. BIN
      frameworks/Go/revel/bin/benchmark
  58. BIN
      frameworks/Go/revel/bin/revel
  59. 12 0
      frameworks/Go/revel/revel-base.dockerfile
  60. 2 0
      frameworks/Go/revel/revel-jet.dockerfile
  61. 2 0
      frameworks/Go/revel/revel-qbs.dockerfile
  62. 2 0
      frameworks/Go/revel/revel-raw.dockerfile
  63. 2 0
      frameworks/Go/revel/revel.dockerfile
  64. 0 11
      frameworks/Go/revel/setup.sh
  65. 0 5
      frameworks/Go/revel/setup_mysql.sh
  66. 1 1
      frameworks/Go/revel/src/benchmark/conf/app.conf
  67. 0 0
      frameworks/Go/webgo/.gitkeep
  68. 0 1
      frameworks/Go/webgo/benchmark_config.json
  69. 0 0
      frameworks/Go/webgo/bin/.gitkepp
  70. 0 2
      frameworks/Go/webgo/setup.bat
  71. 0 7
      frameworks/Go/webgo/setup.sh
  72. 11 0
      frameworks/Go/webgo/webgo.dockerfile
  73. 10 0
      toolset/setup/docker/languages/go-lang.dockerfile

+ 10 - 10
.travis.yml

@@ -53,16 +53,16 @@ env:
      - "TESTDIR=Erlang/cowboy"
      - "TESTDIR=Erlang/elli"
      - "TESTDIR=Erlang/mochiweb"
-    # - "TESTDIR=Go/aah"
-    # - "TESTDIR=Go/beego"
-    # - "TESTDIR=Go/echo"
-    # - "TESTDIR=Go/falcore"
-    # - "TESTDIR=Go/fasthttp"
-    # - "TESTDIR=Go/gin"
-    # - "TESTDIR=Go/goji"
-    # - "TESTDIR=Go/go-std"
-    # - "TESTDIR=Go/revel"
-    # - "TESTDIR=Go/webgo"
+     - "TESTDIR=Go/aah"
+     - "TESTDIR=Go/beego"
+     - "TESTDIR=Go/echo"
+     - "TESTDIR=Go/falcore"
+     - "TESTDIR=Go/fasthttp"
+     - "TESTDIR=Go/gin"
+     - "TESTDIR=Go/goji"
+     - "TESTDIR=Go/go-std"
+     - "TESTDIR=Go/revel"
+     - "TESTDIR=Go/webgo"
      - "TESTDIR=Groovy/grails"
      - "TESTDIR=Groovy/hot"
      - "TESTDIR=Haskell/snap"

+ 34 - 0
frameworks/Go/aah/aah.dockerfile

@@ -0,0 +1,34 @@
+FROM tfb/go-lang:latest
+
+ADD ./ /aah
+WORKDIR /aah
+
+RUN mkdir bin
+ENV GOPATH /aah
+ENV PATH ${GOPATH}/bin:${PATH}
+
+RUN mkdir src/aahframework.org
+RUN git clone https://github.com/go-aah/tools.git src/aahframework.org/tools.v0
+WORKDIR src/aahframework.org/tools.v0
+RUN git checkout tags/v0.8 -b v0.8
+
+WORKDIR /aah
+RUN go get aahframework.org/tools.v0/aah/...
+RUN go install aahframework.org/tools.v0/aah
+RUN aah -v
+
+RUN curl -sL -o install_glide.sh https://glide.sh/get
+RUN sh install_glide.sh
+
+RUN glide -v
+
+RUN rm -rf src/aahframework.org src/golang.org src/gopkg.in
+
+WORKDIR src/benchmark
+RUN glide install
+RUN aah build -o build/benchmark.zip
+WORKDIR build
+RUN unzip benchmark.zip
+
+WORKDIR /aah/src/benchmark
+CMD build/benchmark/bin/benchmark --profile=prod

+ 0 - 1
frameworks/Go/aah/benchmark_config.json

@@ -2,7 +2,6 @@
   "framework": "aah",
   "tests": [{
     "default": {
-      "setup_file": "setup",
       "json_url": "/json",
       "db_url": "/db",
       "query_url": "/queries?count=",

+ 0 - 38
frameworks/Go/aah/setup.sh

@@ -1,38 +0,0 @@
-#!/bin/bash
-
-fw_depends mysql go
-
-set -x
-
-mkdir -p bin
-
-# Install aah CLI tool (installing specific tag version)
-mkdir -p src/aahframework.org
-git clone https://github.com/go-aah/tools.git src/aahframework.org/tools.v0
-cd src/aahframework.org/tools.v0
-git checkout tags/v0.8 -b v0.8
-cd -
-go get aahframework.org/tools.v0/aah/...
-go install aahframework.org/tools.v0/aah
-
-# print aah version
-aah -v
-
-# Install glide
-curl https://glide.sh/get | sh
-glide -v
-
-# Clean src directory, glide is used to get dependencies libraries
-rm -rf src/aahframework.org src/golang.org src/gopkg.in
-
-# Run glide to get dependencies
-cd src/benchmark
-glide install
-
-# Build and unpack
-aah build -o build/benchmark.zip
-cd build
-unzip benchmark.zip
-
-# Start server
-./benchmark/aah.sh start

+ 0 - 0
frameworks/Go/beego/.gitkeep


+ 15 - 0
frameworks/Go/beego/beego-orm-mysql.dockerfile

@@ -0,0 +1,15 @@
+FROM tfb/go-lang:latest
+ADD ./ /beego
+WORKDIR /beego
+
+RUN mkdir bin
+ENV GOPATH /beego
+ENV PATH ${GOPATH}/bin:${PATH}
+
+RUN curl -sL -o install_glide.sh https://glide.sh/get
+RUN sh install_glide.sh
+
+RUN glide -v
+WORKDIR src/hello-orm-mysql
+RUN glide install
+CMD go run main.go

+ 15 - 0
frameworks/Go/beego/beego.dockerfile

@@ -0,0 +1,15 @@
+FROM tfb/go-lang:latest
+ADD ./ /beego
+WORKDIR /beego
+
+RUN mkdir bin
+ENV GOPATH /beego
+ENV PATH ${GOPATH}/bin:${PATH}
+
+RUN curl -sL -o install_glide.sh https://glide.sh/get
+RUN sh install_glide.sh
+
+RUN glide -v
+WORKDIR src/hello
+RUN glide install
+CMD go run main.go

+ 1 - 3
frameworks/Go/beego/benchmark_config.json

@@ -2,13 +2,12 @@
   "framework": "beego",
   "tests": [{
     "default": {
-      "setup_file": "setup",
       "json_url": "/json",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "approach": "Realistic",
       "classification": "Fullstack",
-      "database": "none",
+      "database": "None",
       "framework": "None",
       "language": "Go",
       "flavor": "None",
@@ -22,7 +21,6 @@
       "versus": "go"
     },
     "orm-mysql": {
-      "setup_file": "setup-beego-orm-mysql",
       "db_url": "/db",
       "query_url": "/queries?queries=",
       "update_url": "/update?queries=",

+ 0 - 0
frameworks/Go/beego/bin/.gitkepp


+ 0 - 12
frameworks/Go/beego/setup-beego-orm-mysql.sh

@@ -1,12 +0,0 @@
-#!/bin/bash
-
-sed -i 's|tcp(.*:3306)|tcp('"${DBHOST}"':3306)|g' src/hello-orm-mysql/models/init.go
-
-fw_depends mysql go
-
-curl https://glide.sh/get | sh
-glide -v
-
-cd src/hello-orm-mysql
-glide install
-go run main.go &

+ 0 - 3
frameworks/Go/beego/setup.bat

@@ -1,3 +0,0 @@
-set GOPATH=C:\FrameworkBenchmarks\beego
-cd src\hello
-go run main.go

+ 0 - 10
frameworks/Go/beego/setup.sh

@@ -1,10 +0,0 @@
-#!/bin/bash
-
-fw_depends go
-
-curl https://glide.sh/get | sh
-glide -v
-
-cd src/hello
-glide install
-go run main.go &

+ 0 - 1
frameworks/Go/echo/benchmark_config.json

@@ -2,7 +2,6 @@
   "framework": "echo",
   "tests": [{
     "default": {
-      "setup_file": "setup",
       "json_url": "/json",
       "db_url": "/db",
       "query_url": "/queries?n=",

+ 17 - 0
frameworks/Go/echo/echo.dockerfile

@@ -0,0 +1,17 @@
+FROM tfb/go-lang:latest
+ADD ./ /echo
+WORKDIR /echo
+
+RUN mkdir bin
+ENV GOPATH /echo
+ENV PATH ${GOPATH}/bin:${PATH}
+
+RUN curl -sL -o install_glide.sh https://glide.sh/get
+RUN sh install_glide.sh
+
+WORKDIR src
+RUN glide install
+WORKDIR ..
+RUN go install app
+
+CMD app

+ 0 - 18
frameworks/Go/echo/setup.sh

@@ -1,18 +0,0 @@
-#!/bin/bash
-
-fw_depends postgresql go
-
-set -x
-
-# Install glide into GOPATH
-mkdir -p bin
-curl https://glide.sh/get | sh
-glide -v
-
-pushd src
-glide install
-popd
-
-go install app
-
-app &

+ 0 - 1
frameworks/Go/falcore/benchmark_config.json

@@ -2,7 +2,6 @@
   "framework": "falcore",
   "tests": [{
     "default": {
-      "setup_file": "setup",
       "json_url": "/json",
       "db_url": "/db",
       "query_url": "/queries?queries=",

+ 0 - 0
frameworks/Go/falcore/bin/.gitkeep


+ 10 - 0
frameworks/Go/falcore/falcore.dockerfile

@@ -0,0 +1,10 @@
+FROM tfb/go-lang:latest
+ADD ./ /falcore
+WORKDIR /falcore
+
+RUN mkdir bin
+ENV GOPATH /falcore
+ENV PATH ${GOPATH}/bin:${PATH}
+
+RUN go get ./...
+CMD go run src/framework_benchmarks/falcore.go

+ 0 - 2
frameworks/Go/falcore/setup.bat

@@ -1,2 +0,0 @@
-set GOPATH=C:\FrameworkBenchmarks\falcore
-go run src\framework_benchmarks\falcore.go

+ 0 - 8
frameworks/Go/falcore/setup.sh

@@ -1,8 +0,0 @@
-#!/bin/bash
-
-sed -i 's|tcp(.*:3306)|tcp('"${DBHOST}"':3306)|g' src/framework_benchmarks/falcore.go
-
-fw_depends mysql go
-
-go get ./...
-go run src/framework_benchmarks/falcore.go &

+ 1 - 1
frameworks/Go/falcore/src/framework_benchmarks/falcore.go

@@ -33,7 +33,7 @@ type Fortune struct {
 
 const (
 	// Database
-	connectionString   = "benchmarkdbuser:benchmarkdbpass@tcp(localhost:3306)/hello_world?collation=utf8mb4_bin"
+	connectionString   = "benchmarkdbuser:benchmarkdbpass@tcp(TFB-database:3306)/hello_world?collation=utf8mb4_bin"
 	worldSelect        = "SELECT id, randomNumber FROM World WHERE id = ?"
 	worldUpdate        = "UPDATE World SET randomNumber = ? WHERE id = ?"
 	fortuneSelect      = "SELECT id, message FROM Fortune;"

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

@@ -2,7 +2,6 @@
   "framework": "fasthttp",
   "tests": [{
     "default": {
-      "setup_file": "setup-mysql",
       "json_url": "/json",
       "db_url": "/db",
       "query_url": "/queries?queries=",
@@ -26,7 +25,6 @@
       "versus": "go"
     },
     "postgresql": {
-      "setup_file": "setup-postgresql",
       "db_url": "/db",
       "query_url": "/queries?queries=",
       "fortune_url": "/fortune",

+ 18 - 0
frameworks/Go/fasthttp/fasthttp-postgresql.dockerfile

@@ -0,0 +1,18 @@
+FROM tfb/go-lang:latest
+ADD ./ /fasthttp
+WORKDIR /fasthttp
+
+RUN mkdir bin
+ENV GOPATH /fasthttp
+ENV PATH ${GOPATH}/bin:${PATH}
+
+RUN rm -rf ./pkg/*
+RUN go get -d -u github.com/jackc/pgx
+RUN go get -d -u github.com/valyala/fasthttp/...
+RUN go get -u github.com/valyala/quicktemplate/qtc
+
+RUN rm -f ./server-postgresql
+RUN go generate templates
+RUN go build -gcflags='-l=4' server-postgresql
+
+CMD ./server-postgresql

+ 18 - 0
frameworks/Go/fasthttp/fasthttp.dockerfile

@@ -0,0 +1,18 @@
+FROM tfb/go-lang:latest
+ADD ./ /fasthttp
+WORKDIR /fasthttp
+
+RUN mkdir bin
+ENV GOPATH /fasthttp
+ENV PATH ${GOPATH}/bin:${PATH}
+
+RUN rm -rf ./pkg/*
+RUN go get -d -u github.com/go-sql-driver/mysql
+RUN go get -d -u github.com/valyala/fasthttp/...
+RUN go get -u github.com/valyala/quicktemplate/qtc
+
+RUN rm -f ./server-mysql
+RUN go generate templates
+RUN go build -gcflags='-l=4' server-mysql
+
+CMD ./server-mysql

+ 0 - 18
frameworks/Go/fasthttp/setup-mysql.sh

@@ -1,18 +0,0 @@
-#!/bin/bash
-
-sed -i 's|tcp(.*:3306)|tcp('"${DBHOST}"':3306)|g' src/server-mysql/server.go
-
-fw_depends mysql go
-
-GOPATH=`pwd`
-
-rm -rf ./pkg/*
-go get -d -u github.com/go-sql-driver/mysql
-go get -d -u github.com/valyala/fasthttp/...
-go get -u github.com/valyala/quicktemplate/qtc
-
-rm -f ./server-mysql
-go generate templates
-go build -gcflags='-l=4' server-mysql
-
-./server-mysql &

+ 0 - 18
frameworks/Go/fasthttp/setup-postgresql.sh

@@ -1,18 +0,0 @@
-#!/bin/bash
-
-sed -i 's|localhost|'"${DBHOST}"'|g' src/server-postgresql/server.go
-
-fw_depends postgresql go
-
-GOPATH=`pwd`
-
-rm -rf ./pkg/*
-go get -d -u github.com/jackc/pgx
-go get -d -u github.com/valyala/fasthttp/...
-go get -u github.com/valyala/quicktemplate/qtc
-
-rm -f ./server-postgresql
-go generate templates
-go build -gcflags='-l=4' server-postgresql
-
-./server-postgresql &

+ 0 - 3
frameworks/Go/fasthttp/setup.bat

@@ -1,3 +0,0 @@
-set GOPATH=C:\FrameworkBenchmarks\Go\fasthttp
-go build server-mysql
-.\server-mysql

+ 1 - 1
frameworks/Go/fasthttp/src/server-mysql/server.go

@@ -13,7 +13,7 @@ import (
 	"templates"
 )
 
-const connectionString = "benchmarkdbuser:benchmarkdbpass@tcp(localhost:3306)/hello_world"
+const connectionString = "benchmarkdbuser:benchmarkdbpass@tcp(TFB-database:3306)/hello_world"
 
 var (
 	worldSelectStmt   *sql.Stmt

+ 1 - 1
frameworks/Go/fasthttp/src/server-postgresql/server.go

@@ -26,7 +26,7 @@ func main() {
 
 	var err error
 	maxConnectionCount := runtime.NumCPU() * 4
-	if db, err = initDatabase("localhost", "benchmarkdbuser", "benchmarkdbpass", "hello_world", 5432, maxConnectionCount); err != nil {
+	if db, err = initDatabase("TFB-database", "benchmarkdbuser", "benchmarkdbpass", "hello_world", 5432, maxConnectionCount); err != nil {
 		log.Fatalf("Error opening database: %s", err)
 	}
 

+ 0 - 1
frameworks/Go/gin/benchmark_config.json

@@ -2,7 +2,6 @@
   "framework": "gin",
   "tests": [{
     "default": {
-      "setup_file": "setup",
       "json_url": "/json",
       "db_url": "/db",
       "query_url": "/dbs?queries=",

+ 12 - 0
frameworks/Go/gin/gin.dockerfile

@@ -0,0 +1,12 @@
+FROM tfb/go-lang:latest
+ADD ./ /gin
+WORKDIR /gin
+
+RUN mkdir bin
+ENV GOPATH /gin
+ENV PATH ${GOPATH}/bin:${PATH}
+
+RUN go get github.com/gin-gonic/gin
+RUN go get github.com/go-sql-driver/mysql
+
+CMD go run hello.go

+ 0 - 8
frameworks/Go/gin/setup.sh

@@ -1,8 +0,0 @@
-#!/bin/bash
-
-fw_depends mysql go
-
-go get github.com/gin-gonic/gin
-go get github.com/go-sql-driver/mysql
-
-go run hello.go &

+ 0 - 5
frameworks/Go/go-std/benchmark_config.json

@@ -2,7 +2,6 @@
   "framework": "go",
   "tests": [{
     "default": {
-      "setup_file": "setup",
       "json_url": "/json",
       "db_url": "/db",
       "query_url": "/queries?queries=",
@@ -26,7 +25,6 @@
       "versus": "go"
     },
     "interpolate": {
-      "setup_file": "setup",
       "db_url": "/dbInterpolate",
       "query_url": "/queriesInterpolate?queries=",
       "fortune_url": "/fortuneInterpolate",
@@ -48,7 +46,6 @@
       "versus": "go"
     },
     "prefork": {
-      "setup_file": "setup_prefork",
       "json_url": "/json",
       "db_url": "/db",
       "query_url": "/queries?queries=",
@@ -72,7 +69,6 @@
       "versus": "go"
     },
     "mongo": {
-      "setup_file": "setup_mongo",
       "db_url": "/db",
       "query_url": "/queries?queries=",
       "fortune_url": "/fortune",
@@ -94,7 +90,6 @@
       "versus": "go"
     },
     "postgres": {
-      "setup_file": "setup_postgres",
       "db_url": "/db",
       "query_url": "/queries?queries=",
       "fortune_url": "/fortune",

+ 7 - 0
frameworks/Go/go-std/go-base.dockerfile

@@ -0,0 +1,7 @@
+FROM tfb/go-lang:latest
+ADD ./ /go-std
+WORKDIR /go-std
+
+RUN mkdir bin
+ENV GOPATH /go-std
+ENV PATH ${GOPATH}/bin:${PATH}

+ 3 - 0
frameworks/Go/go-std/go-interpolate.dockerfile

@@ -0,0 +1,3 @@
+FROM tfb/go-base:latest
+RUN go get github.com/go-sql-driver/mysql
+CMD go run hello_mysql.go

+ 4 - 0
frameworks/Go/go-std/go-mongo.dockerfile

@@ -0,0 +1,4 @@
+FROM tfb/go-base:latest
+RUN apt-get install -y libsasl2-dev
+RUN go get gopkg.in/mgo.v2
+CMD go run hello_mongo.go

+ 3 - 0
frameworks/Go/go-std/go-postgres.dockerfile

@@ -0,0 +1,3 @@
+FROM tfb/go-base:latest
+RUN go get github.com/lib/pq
+CMD go run hello_postgres.go

+ 3 - 0
frameworks/Go/go-std/go-prefork.dockerfile

@@ -0,0 +1,3 @@
+FROM tfb/go-base:latest
+RUN go get github.com/go-sql-driver/mysql
+CMD go run hello_mysql.go -prefork

+ 3 - 0
frameworks/Go/go-std/go.dockerfile

@@ -0,0 +1,3 @@
+FROM tfb/go-base:latest
+RUN go get github.com/go-sql-driver/mysql
+CMD go run hello_mysql.go

+ 1 - 1
frameworks/Go/go-std/hello_mongo.go

@@ -14,7 +14,7 @@ import (
 )
 
 const (
-	connectionString = "localhost"
+	connectionString = "TFB-database"
 	worldRowCount    = 10000
 	fortuneHTML      = `<!DOCTYPE html>
 <html>

+ 2 - 7
frameworks/Go/go-std/hello_mysql.go

@@ -4,7 +4,6 @@ import (
 	"database/sql"
 	"encoding/json"
 	"flag"
-	"fmt"
 	"html/template"
 	"log"
 	"math/rand"
@@ -63,7 +62,7 @@ const (
 	// It reduces round trips without prepared statement.
 	//
 	// We can see difference between prepared statement and interpolation by comparing go-std-mysql and go-std-mysql-interpolate
-	connectionString = "benchmarkdbuser:benchmarkdbpass@tcp(%s:3306)/hello_world?interpolateParams=true"
+	connectionString = "benchmarkdbuser:benchmarkdbpass@tcp(TFB-database:3306)/hello_world?interpolateParams=true"
 	worldSelect      = "SELECT id, randomNumber FROM World WHERE id = ?"
 	worldUpdate      = "UPDATE World SET randomNumber = ? WHERE id = ?"
 	fortuneSelect    = "SELECT id, message FROM Fortune"
@@ -89,11 +88,7 @@ var child = flag.Bool("child", false, "is child proc")
 
 func initDB() {
 	var err error
-	var dbhost = os.Getenv("DBHOST")
-	if dbhost == "" {
-		dbhost = "localhost"
-	}
-	db, err = sql.Open("mysql", fmt.Sprintf(connectionString, dbhost))
+	db, err = sql.Open("mysql", connectionString)
 	if err != nil {
 		log.Fatalf("Error opening database: %v", err)
 	}

+ 2 - 8
frameworks/Go/go-std/hello_postgres.go

@@ -4,12 +4,10 @@ import (
 	"database/sql"
 	"encoding/json"
 	"flag"
-	"fmt"
 	"html/template"
 	"log"
 	"math/rand"
 	"net/http"
-	"os"
 	"sort"
 	"strconv"
 
@@ -54,7 +52,7 @@ const (
 </html>`
 
 	// Database
-	connectionString = "postgres://benchmarkdbuser:benchmarkdbpass@%s/hello_world?sslmode=disable"
+	connectionString = "postgres://benchmarkdbuser:benchmarkdbpass@TFB-database/hello_world?sslmode=disable"
 	worldSelect      = "SELECT id, randomNumber FROM World WHERE id = $1"
 	worldUpdate      = "UPDATE World SET randomNumber = $1 WHERE id = $2"
 	fortuneSelect    = "SELECT id, message FROM Fortune"
@@ -75,11 +73,7 @@ var (
 
 func initDB() {
 	var err error
-	var dbhost = os.Getenv("DBHOST")
-	if dbhost == "" {
-		dbhost = "localhost"
-	}
-	db, err = sql.Open("postgres", fmt.Sprintf(connectionString, dbhost))
+	db, err = sql.Open("postgres", connectionString)
 	if err != nil {
 		log.Fatalf("Error opening database: %v", err)
 	}

+ 0 - 2
frameworks/Go/go-std/setup.bat

@@ -1,2 +0,0 @@
-set GOPATH=C:\FrameworkBenchmarks\go
-go run src\hello\hello.go

+ 0 - 7
frameworks/Go/go-std/setup.sh

@@ -1,7 +0,0 @@
-#!/bin/bash
-
-fw_depends mysql go
-
-go get github.com/go-sql-driver/mysql
-
-go run hello_mysql.go &

+ 0 - 9
frameworks/Go/go-std/setup_mongo.sh

@@ -1,9 +0,0 @@
-#!/bin/bash
-
-sed -i 's|connectionString = "localhost"|connectionString = "'"${DBHOST}"'"|g' hello_mongo.go
-
-fw_depends mongodb go libsasl2-dev 
-
-go get gopkg.in/mgo.v2
-
-go run hello_mongo.go &

+ 0 - 7
frameworks/Go/go-std/setup_postgres.sh

@@ -1,7 +0,0 @@
-#!/bin/bash
-
-fw_depends postgresql go
-
-go get github.com/lib/pq
-
-go run hello_postgres.go &

+ 0 - 7
frameworks/Go/go-std/setup_prefork.sh

@@ -1,7 +0,0 @@
-#!/bin/bash
-
-fw_depends mysql go
-
-go get github.com/go-sql-driver/mysql
-
-go run hello_mysql.go -prefork &

+ 0 - 1
frameworks/Go/goji/benchmark_config.json

@@ -2,7 +2,6 @@
   "framework": "goji",
   "tests": [{
     "default": {
-      "setup_file": "setup",
       "json_url": "/json",
       "db_url": "/db",
       "query_url": "/queries?queries=",

+ 13 - 0
frameworks/Go/goji/goji.dockerfile

@@ -0,0 +1,13 @@
+FROM tfb/go-lang:latest
+ADD ./ /goji
+WORKDIR /goji
+
+RUN mkdir bin
+ENV GOPATH /goji
+ENV PATH ${GOPATH}/bin:${PATH}
+
+RUN go get github.com/go-sql-driver/mysql
+RUN go get github.com/zenazn/goji
+RUN go get github.com/zenazn/goji/web
+
+CMD go run src/goji/server.go

+ 0 - 11
frameworks/Go/goji/setup.sh

@@ -1,11 +0,0 @@
-#!/bin/bash
-
-sed -i 's|tcp(.*:3306)|tcp('"${DBHOST}"':3306)|g' src/goji/server.go
-
-fw_depends mysql go
-
-go get github.com/go-sql-driver/mysql
-go get github.com/zenazn/goji
-go get github.com/zenazn/goji/web
-
-go run src/goji/server.go &

+ 1 - 1
frameworks/Go/goji/src/goji/server.go

@@ -22,7 +22,7 @@ import (
 
 const (
 	// Database
-	connectionString   = "benchmarkdbuser:benchmarkdbpass@tcp(localhost:3306)/hello_world"
+	connectionString   = "benchmarkdbuser:benchmarkdbpass@tcp(TFB-database:3306)/hello_world"
 	worldSelect        = "SELECT id, randomNumber FROM World WHERE id = ?"
 	worldUpdate        = "UPDATE World SET randomNumber = ? WHERE id = ?"
 	fortuneSelect      = "SELECT id, message FROM Fortune;"

+ 0 - 1
frameworks/Go/kami/benchmark_config.json

@@ -2,7 +2,6 @@
   "framework": "kami",
   "tests": [{
     "default": {
-      "setup_file": "setup",
       "json_url": "/json",
       "db_url": "/db",
       "query_url": "/queries?queries=",

+ 12 - 0
frameworks/Go/kami/kami.dockerfile

@@ -0,0 +1,12 @@
+FROM tfb/go-lang:latest
+ADD ./ /kami
+WORKDIR /kami
+
+RUN mkdir bin
+ENV GOPATH /kami
+ENV PATH ${GOPATH}/bin:${PATH}
+
+RUN go get github.com/go-sql-driver/mysql
+RUN go get github.com/guregu/kami
+
+CMD go run src/kami/server.go

+ 0 - 10
frameworks/Go/kami/setup.sh

@@ -1,10 +0,0 @@
-#!/bin/bash
-
-sed -i 's|tcp(.*:3306)|tcp('"${DBHOST}"':3306)|g' src/kami/server.go
-
-fw_depends mysql go
-
-go get github.com/go-sql-driver/mysql
-go get github.com/guregu/kami
-
-go run src/kami/server.go &

+ 1 - 1
frameworks/Go/kami/src/kami/server.go

@@ -33,7 +33,7 @@ type Fortune struct {
 
 // Databases
 const (
-	connectionString   = "benchmarkdbuser:benchmarkdbpass@tcp(localhost:3306)/hello_world?interpolateParams=true"
+	connectionString   = "benchmarkdbuser:benchmarkdbpass@tcp(TFB-database:3306)/hello_world?interpolateParams=true"
 	worldSelect        = "SELECT id, randomNumber FROM World WHERE id = ?"
 	worldUpdate        = "UPDATE World SET randomNumber = ? WHERE id = ?"
 	fortuneSelect      = "SELECT id, message FROM Fortune;"

+ 0 - 4
frameworks/Go/revel/benchmark_config.json

@@ -2,7 +2,6 @@
   "framework": "revel",
   "tests": [{
     "default": {
-      "setup_file": "setup_mysql",
       "json_url": "/json",
       "plaintext_url": "/plaintext",
       "port": 8080,
@@ -22,7 +21,6 @@
       "versus": "go"
     },
     "raw": {
-      "setup_file": "setup_mysql",
       "db_url": "/db",
       "query_url": "/db?queries=",
       "fortune_url": "/fortune",
@@ -44,7 +42,6 @@
       "versus": "go"
     },
     "jet": {
-      "setup_file": "setup_mysql",
       "db_url": "/jet-db",
       "query_url": "/jet-db?queries=",
       "fortune_url": "/jet-fortune",
@@ -66,7 +63,6 @@
       "versus": "go"
     },
     "qbs": {
-      "setup_file": "setup_mysql",
       "db_url": "/qbs-db",
       "query_url": "/qbs-db?queries=",
       "fortune_url": "/qbs-fortune",

BIN
frameworks/Go/revel/bin/benchmark


BIN
frameworks/Go/revel/bin/revel


+ 12 - 0
frameworks/Go/revel/revel-base.dockerfile

@@ -0,0 +1,12 @@
+FROM tfb/go-lang:latest
+ADD ./ /revel
+WORKDIR /revel
+
+RUN mkdir bin
+ENV GOPATH /revel
+ENV PATH ${GOPATH}/bin:${PATH}
+
+RUN go get -u github.com/go-sql-driver/mysql
+RUN go get -u github.com/revel/cmd/revel
+RUN go get -u github.com/coocood/qbs
+RUN go get -u github.com/eaigner/jet

+ 2 - 0
frameworks/Go/revel/revel-jet.dockerfile

@@ -0,0 +1,2 @@
+FROM tfb/revel-base:latest
+CMD revel run benchmark prod

+ 2 - 0
frameworks/Go/revel/revel-qbs.dockerfile

@@ -0,0 +1,2 @@
+FROM tfb/revel-base:latest
+CMD revel run benchmark prod

+ 2 - 0
frameworks/Go/revel/revel-raw.dockerfile

@@ -0,0 +1,2 @@
+FROM tfb/revel-base:latest
+CMD revel run benchmark prod

+ 2 - 0
frameworks/Go/revel/revel.dockerfile

@@ -0,0 +1,2 @@
+FROM tfb/revel-base:latest
+CMD revel run benchmark prod

+ 0 - 11
frameworks/Go/revel/setup.sh

@@ -1,11 +0,0 @@
-#!/bin/bash
-
-fw_depends go
-
-sed -i 's|tcp(.*:3306)|tcp('"${DBHOST}"':3306)|g' src/benchmark/conf/app.conf
-
-go get -u github.com/revel/cmd/revel
-go get -u github.com/coocood/qbs
-go get -u github.com/eaigner/jet
-
-bin/revel run benchmark prod

+ 0 - 5
frameworks/Go/revel/setup_mysql.sh

@@ -1,5 +0,0 @@
-#!/bin/bash
-
-fw_depends mysql
-
-source ./setup.sh

+ 1 - 1
frameworks/Go/revel/src/benchmark/conf/app.conf

@@ -4,7 +4,7 @@ http.port=8080
 
 db.driver = mysql
 db.import = github.com/go-sql-driver/mysql
-db.spec = benchmarkdbuser:benchmarkdbpass@tcp(localhost:3306)/hello_world
+db.spec = benchmarkdbuser:benchmarkdbpass@tcp(TFB-database:3306)/hello_world
 
 results.pretty=false
 results.chunked=false

+ 0 - 0
frameworks/Go/webgo/.gitkeep


+ 0 - 1
frameworks/Go/webgo/benchmark_config.json

@@ -2,7 +2,6 @@
   "framework": "webgo",
   "tests": [{
     "default": {
-      "setup_file": "setup",
       "json_url": "/json",
       "port": 8080,
       "approach": "Realistic",

+ 0 - 0
frameworks/Go/webgo/bin/.gitkepp


+ 0 - 2
frameworks/Go/webgo/setup.bat

@@ -1,2 +0,0 @@
-set GOPATH=C:\FrameworkBenchmarks\webgo
-go run src\hello\hello.go

+ 0 - 7
frameworks/Go/webgo/setup.sh

@@ -1,7 +0,0 @@
-#!/bin/bash
-
-fw_depends go
-
-go get github.com/hoisie/web
-
-go run src/hello/hello.go &

+ 11 - 0
frameworks/Go/webgo/webgo.dockerfile

@@ -0,0 +1,11 @@
+FROM tfb/go-lang:latest
+ADD ./ /webgo
+WORKDIR /webgo
+
+RUN mkdir bin
+ENV GOPATH /webgo
+ENV PATH ${GOPATH}/bin:${PATH}
+
+RUN go get github.com/hoisie/web
+
+CMD go run src/hello/hello.go

+ 10 - 0
toolset/setup/docker/languages/go-lang.dockerfile

@@ -0,0 +1,10 @@
+FROM tfb/base:latest
+
+RUN mkdir /go-lang
+WORKDIR /go-lang
+RUN curl -sL https://storage.googleapis.com/golang/go1.10.linux-amd64.tar.gz | tar xz
+
+ENV GOROOT /go-lang/go
+ENV PATH ${GOROOT}/bin:${PATH}
+
+ENV GOGC 1000