Browse Source

Updated revel\nAdded tests for Revel with Fast engine\nCorrected existing tests to pass\nModified launch to run without proxy (#4109)

Steve 6 years ago
parent
commit
242b14d9de

+ 8 - 0
frameworks/Go/revel/README.md

@@ -0,0 +1,8 @@
+# Revel Benchmarking Test
+
+A high productivity, full-stack web framework for the Go language. 
+
+Community : [gitter](https://gitter.im/revel/community)
+Source : [github](https://github.com/revel)
+Help : [http://revel.github.io/](http://revel.github.io/)
+

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

@@ -20,6 +20,25 @@
       "notes": "",
       "versus": "go"
     },
+    "fast": {
+      "json_url": "/json",
+      "plaintext_url": "/plaintext",
+      "port": 8080,
+      "approach": "Realistic",
+      "classification": "Fullstack",
+      "database": "MySQL",
+      "framework": "None",
+      "language": "Go",
+      "flavor": "None",
+      "orm": "Raw",
+      "platform": "None",
+      "webserver": "None",
+      "os": "Linux",
+      "database_os": "Linux",
+      "display_name": "Revel",
+      "notes": "",
+      "versus": "go"
+    },
     "raw": {
       "db_url": "/db",
       "query_url": "/db?queries=",

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

@@ -0,0 +1,12 @@
+FROM golang:1.10.1
+
+ADD ./ /revel
+WORKDIR /revel
+
+ENV GOPATH /revel
+ENV PATH ${GOPATH}/bin:${PATH}
+
+RUN go get -u github.com/revel/cmd/revel
+RUN revel build -a benchmark -t target -m prod-fasthttp -v
+
+CMD target/run.sh

+ 3 - 6
frameworks/Go/revel/revel-jet.dockerfile

@@ -3,14 +3,11 @@ FROM golang:1.10.1
 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/revel
 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
+RUN revel build -a benchmark -t target -m prod -v
+
+CMD target/run.sh
 
-CMD revel run benchmark prod

+ 4 - 6
frameworks/Go/revel/revel-qbs.dockerfile

@@ -3,14 +3,12 @@ FROM golang:1.10.1
 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/revel
+
 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
+RUN revel build -a benchmark -t target -m prod -v
+
+CMD target/run.sh
 
-CMD revel run benchmark prod

+ 3 - 7
frameworks/Go/revel/revel-raw.dockerfile

@@ -3,14 +3,10 @@ FROM golang:1.10.1
 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/revel
-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
+RUN go get github.com/revel/cmd/revel
+RUN revel build -a benchmark -t target -m prod -v
 
-CMD revel run benchmark prod
+CMD target/run.sh

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

@@ -3,14 +3,10 @@ FROM golang:1.10.1
 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/revel
 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
+RUN revel build -a benchmark -t target -m prod -v
 
-CMD revel run benchmark prod
+CMD target/run.sh

+ 21 - 27
frameworks/Go/revel/src/benchmark/app/controllers/app.go

@@ -84,43 +84,34 @@ func (c App) Plaintext() revel.Result {
 }
 
 func (c App) Db(queries int) revel.Result {
-	if queries <= 1 {
-		var w World
-		err := worldStatement.QueryRow(rand.Intn(WorldRowCount)+1).
-			Scan(&w.Id, &w.RandomNumber)
-		if err != nil {
-			revel.ERROR.Fatalf("Error scanning world row: %v", err)
-		}
-		return c.RenderJSON(w)
-	}
-
+        _, foundQuery := c.Params.Values["queries"]
+        if queries>500 {
+             queries = 500
+        }
+        if queries == 0 {
+          queries = 1
+        }
 	ww := make([]World, queries)
 	for i := 0; i < queries; i++ {
 		err := worldStatement.QueryRow(rand.Intn(WorldRowCount)+1).
 			Scan(&ww[i].Id, &ww[i].RandomNumber)
 		if err != nil {
-			revel.ERROR.Fatalf("Error scanning world row: %v", err)
+			c.Log.Fatalf("Error scanning world row: %v", err)
 		}
 	}
+        if !foundQuery {
+            return c.RenderJSON(ww[0])
+        }
 	return c.RenderJSON(ww)
 }
 
 func (c App) Update(queries int) revel.Result {
-	if queries <= 1 {
-		var w World
-		err := worldStatement.QueryRow(rand.Intn(WorldRowCount)+1).
-			Scan(&w.Id, &w.RandomNumber)
-		if err != nil {
-			revel.ERROR.Fatalf("Error scanning world row: %v", err)
-		}
-		w.RandomNumber = uint16(rand.Intn(WorldRowCount) + 1)
-		_, err = updateStatement.Exec(w.RandomNumber, w.Id)
-		if err != nil {
-			revel.ERROR.Fatalf("Error updating row: %v", err)
-		}
-		return c.RenderJSON(&w)
-	}
-
+        _, foundQuery := c.Params.Values["queries"]
+        if queries>500 {
+             queries = 500
+        } else if queries == 0 {
+             queries = 1
+        }
 	ww := make([]World, queries)
 	for i := 0; i < queries; i++ {
 		err := worldStatement.QueryRow(rand.Intn(WorldRowCount)+1).
@@ -131,7 +122,10 @@ func (c App) Update(queries int) revel.Result {
 		ww[i].RandomNumber = uint16(rand.Intn(WorldRowCount) + 1)
 		updateStatement.Exec(ww[i].RandomNumber, ww[i].Id)
 	}
-	return c.RenderJSON(ww)
+        if !foundQuery {
+            return c.RenderJSON(ww[0])
+        }
+        return c.RenderJSON(ww)
 }
 
 func (c App) Fortune() revel.Result {

+ 22 - 22
frameworks/Go/revel/src/benchmark/app/controllers/jet.go

@@ -10,14 +10,13 @@ import (
 )
 
 func (c App) JetDb(queries int) revel.Result {
-	if queries <= 1 {
-		var w World
-		err := db.Jet.Query(WorldSelect, rand.Intn(WorldRowCount)+1).Rows(&w)
-		if err != nil {
-			revel.ERROR.Fatalf("Db/WorldSelect error: %v", err)
-		}
-		return c.RenderJSON(w)
-	}
+        _, foundQuery := c.Params.Values["queries"]
+        if queries>500 {
+             queries = 500
+        }
+        if queries == 0 {
+          queries = 1
+        }
 
 	ww := make([]World, queries)
 	for i := 0; i < queries; i++ {
@@ -26,22 +25,20 @@ func (c App) JetDb(queries int) revel.Result {
 			revel.ERROR.Fatalf("Db/WorldSelect2 error: %v", err)
 		}
 	}
-	return c.RenderJSON(ww)
+        if !foundQuery {
+            return c.RenderJSON(ww[0])
+        }
+        return c.RenderJSON(ww)
 }
 
 func (c App) JetUpdate(queries int) revel.Result {
-	if queries <= 1 {
-		var w World
-		err := db.Jet.Query(WorldSelect, rand.Intn(WorldRowCount)+1).Rows(&w)
-		if err != nil {
-			revel.ERROR.Fatalf("Update/WorldSelect error: %v", err)
-		}
-		w.RandomNumber = uint16(rand.Intn(WorldRowCount) + 1)
-		if err = db.Jet.Query(WorldUpdate, w.RandomNumber, w.Id).Run(); err != nil {
-			revel.ERROR.Fatalf("Update/WorldUpdate error: %v", err)
-		}
-		return c.RenderJSON(&w)
-	}
+        _, foundQuery := c.Params.Values["queries"]
+        if queries>500 {
+             queries = 500
+        }
+        if queries == 0 {
+          queries = 1
+        }
 
 	ww := make([]World, queries)
 	for i := 0; i < queries; i++ {
@@ -54,7 +51,10 @@ func (c App) JetUpdate(queries int) revel.Result {
 			revel.ERROR.Fatalf("Update/WorldUpdate2 error: %v", err)
 		}
 	}
-	return c.RenderJSON(ww)
+        if !foundQuery {
+            return c.RenderJSON(ww[0])
+        }
+        return c.RenderJSON(ww)
 }
 
 func (c App) JetFortune() revel.Result {

+ 22 - 25
frameworks/Go/revel/src/benchmark/app/controllers/qbs.go

@@ -11,16 +11,13 @@ import (
 func (c App) QbsDb(queries int) revel.Result {
 	qbs, _ := qbs.GetQbs()
 	defer qbs.Close()
-
-	if queries <= 1 {
-		var w World
-		w.Id = uint16(rand.Intn(WorldRowCount) + 1)
-		err := qbs.Find(&w)
-		if err != nil {
-			revel.ERROR.Fatalf("Error scanning world row: %v", err)
-		}
-		return c.RenderJSON(w)
-	}
+        _, foundQuery := c.Params.Values["queries"]
+        if queries>500 {
+             queries = 500
+        }
+        if queries == 0 {
+          queries = 1
+        }
 
 	ww := make([]World, queries)
 	for i := 0; i < queries; i++ {
@@ -29,25 +26,22 @@ func (c App) QbsDb(queries int) revel.Result {
 			revel.ERROR.Fatalf("Error scanning world row: %v", err)
 		}
 	}
-	return c.RenderJSON(ww)
+        if !foundQuery {
+            return c.RenderJSON(ww[0])
+        }
+        return c.RenderJSON(ww)
 }
 
 func (c App) QbsUpdate(queries int) revel.Result {
 	qbs, _ := qbs.GetQbs()
 	defer qbs.Close()
-
-	if queries <= 1 {
-		var w World
-		w.Id = uint16(rand.Intn(WorldRowCount) + 1)
-		if err := qbs.Find(&w); err != nil {
-			revel.ERROR.Fatalf("Error scanning world row: %v", err)
-		}
-		w.RandomNumber = uint16(rand.Intn(WorldRowCount) + 1)
-		if _, err := qbs.Save(&w); err != nil {
-			revel.ERROR.Fatalf("Error updating world row: %v", err)
-		}
-		return c.RenderJSON(&w)
-	}
+        _, foundQuery := c.Params.Values["queries"]
+        if queries>500 {
+             queries = 500
+        }
+        if queries == 0 {
+          queries = 1
+        }
 
 	ww := make([]World, queries)
 	for i := 0; i < queries; i++ {
@@ -60,7 +54,10 @@ func (c App) QbsUpdate(queries int) revel.Result {
 			revel.ERROR.Fatalf("Error scanning world row: %v", err)
 		}
 	}
-	return c.RenderJSON(ww)
+        if !foundQuery {
+            return c.RenderJSON(ww[0])
+        }
+        return c.RenderJSON(ww)
 }
 
 func (c App) QbsFortune() revel.Result {

+ 12 - 0
frameworks/Go/revel/src/benchmark/conf/app.conf

@@ -5,6 +5,7 @@ http.port=8080
 db.driver = mysql
 db.import = github.com/go-sql-driver/mysql
 db.spec = benchmarkdbuser:benchmarkdbpass@tcp(tfb-database:3306)/hello_world
+package.folders=conf,app/views
 
 results.pretty=false
 results.chunked=false
@@ -26,3 +27,14 @@ log.trace.output = off
 log.info.output  = off
 log.warn.output  = stderr
 log.error.output = stderr
+
+[prod-fasthttp]
+mode.dev=false
+watch=false
+module.fasthttp=github.com/revel/modules/server-engine/fasthttp
+server.engine=fasthttp
+
+log.trace.output = off
+log.info.output  = off
+log.warn.output  = stderr
+log.error.output = stderr