Browse Source

fix Go/echo (#2450)

* Remove fasthttp and prefork

* Fix echo's backward incompatible changes

* merge standard and common

* Use glide to lock library versions
INADA Naoki 8 years ago
parent
commit
175b332cae

+ 1 - 1
frameworks/Go/echo/.gitignore

@@ -1,2 +1,2 @@
 /pkg/
 /pkg/
-/src/
+/src/vendor

+ 3 - 51
frameworks/Go/echo/benchmark_config.json

@@ -5,33 +5,9 @@
       "setup_file": "setup",
       "setup_file": "setup",
       "json_url": "/json",
       "json_url": "/json",
       "db_url": "/db",
       "db_url": "/db",
-      "query_url": "/queries/",
+      "query_url": "/queries?n=",
       "fortune_url": "/fortunes",
       "fortune_url": "/fortunes",
-      "update_url": "/updates/",
-      "plaintext_url": "/plaintext",
-      "port": 8080,
-      "approach": "Realistic",
-      "classification": "Micro",
-      "database": "MySQL",
-      "framework": "None",
-      "language": "Go",
-      "flavor": "None",
-      "orm": "Raw",
-      "platform": "None",
-      "webserver": "None",
-      "os": "Linux",
-      "database_os": "Linux",
-      "display_name": "Echo",
-      "notes": "",
-      "versus": "go"
-    },
-    "std": {
-      "setup_file": "setup_std",
-      "json_url": "/json",
-      "db_url": "/db",
-      "query_url": "/queries/",
-      "fortune_url": "/fortunes",
-      "update_url": "/updates/",
+      "update_url": "/updates?n=",
       "plaintext_url": "/plaintext",
       "plaintext_url": "/plaintext",
       "port": 8080,
       "port": 8080,
       "approach": "Realistic",
       "approach": "Realistic",
@@ -45,31 +21,7 @@
       "webserver": "None",
       "webserver": "None",
       "os": "Linux",
       "os": "Linux",
       "database_os": "Linux",
       "database_os": "Linux",
-      "display_name": "Echo-std",
-      "notes": "",
-      "versus": "go"
-    },
-    "prefork": {
-      "setup_file": "setup_prefork",
-      "json_url": "/json",
-      "db_url": "/db",
-      "query_url": "/queries/",
-      "fortune_url": "/fortunes",
-      "update_url": "/updates/",
-      "plaintext_url": "/plaintext",
-      "port": 8080,
-      "approach": "Realistic",
-      "classification": "Micro",
-      "database": "Postgres",
-      "framework": "None",
-      "language": "Go",
-      "flavor": "None",
-      "orm": "Raw",
-      "platform": "None",
-      "webserver": "None",
-      "os": "Linux",
-      "database_os": "Linux",
-      "display_name": "Echo-prefork",
+      "display_name": "Echo",
       "notes": "",
       "notes": "",
       "versus": "go"
       "versus": "go"
     }
     }

+ 14 - 6
frameworks/Go/echo/setup.sh

@@ -1,10 +1,18 @@
 #!/bin/bash
 #!/bin/bash
 
 
-fw_depends mysql go
+fw_depends postgresql go
 
 
-go get github.com/labstack/echo/...
-go get github.com/lib/pq
-go get github.com/valyala/tcplisten
-go install standard fasthttp
+set -x
 
 
-fasthttp &
+# 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 - 10
frameworks/Go/echo/setup_prefork.sh

@@ -1,10 +0,0 @@
-#!/bin/bash
-
-fw_depends postgresql go
-
-go get github.com/labstack/echo/...
-go get github.com/lib/pq
-go get github.com/valyala/tcplisten
-go install standard fasthttp
-
-fasthttp -prefork &

+ 0 - 10
frameworks/Go/echo/setup_std.sh

@@ -1,10 +0,0 @@
-#!/bin/bash
-
-fw_depends postgresql go
-
-go get github.com/labstack/echo/...
-go get github.com/lib/pq
-go get github.com/valyala/tcplisten
-go install standard fasthttp
-
-standard &

+ 1 - 3
frameworks/Go/echo/source_code

@@ -1,3 +1 @@
-./echo/src/common/common.go
-./echo/src/standard/main.go
-./echo/src/fasthttp/main.go
+./echo/src/app/main.go

+ 17 - 9
frameworks/Go/echo/src/common/common.go → frameworks/Go/echo/src/app/main.go

@@ -1,4 +1,4 @@
-package common
+package main
 
 
 import (
 import (
 	"database/sql"
 	"database/sql"
@@ -135,7 +135,7 @@ func (h *handler) db() echo.HandlerFunc {
 // Test 3: Multiple database queries
 // Test 3: Multiple database queries
 func (h *handler) queries() echo.HandlerFunc {
 func (h *handler) queries() echo.HandlerFunc {
 	return func(c echo.Context) error {
 	return func(c echo.Context) error {
-		n := getQueryCount(c.P(0))
+		n := getQueryCount(c.QueryParam("n"))
 		worlds := make([]World, n)
 		worlds := make([]World, n)
 		for i := 0; i < n; i++ {
 		for i := 0; i < n; i++ {
 			if err := fetchRandomWorld(&worlds[i]); err != nil {
 			if err := fetchRandomWorld(&worlds[i]); err != nil {
@@ -173,7 +173,7 @@ func (h *handler) fortunes() echo.HandlerFunc {
 // Test 5: Database updates
 // Test 5: Database updates
 func (h *handler) updates() echo.HandlerFunc {
 func (h *handler) updates() echo.HandlerFunc {
 	return func(c echo.Context) error {
 	return func(c echo.Context) error {
-		n := getQueryCount(c.P(0))
+		n := getQueryCount(c.QueryParam("n"))
 		worlds := make([]World, n)
 		worlds := make([]World, n)
 		for i := 0; i < n; i++ {
 		for i := 0; i < n; i++ {
 			// Fetch and modify
 			// Fetch and modify
@@ -256,12 +256,12 @@ func fetchFortunes(rows *sql.Rows) (Fortunes, error) {
 
 
 func InitRoutes(e *echo.Echo) {
 func InitRoutes(e *echo.Echo) {
 	h := new(handler)
 	h := new(handler)
-	e.Get("/json", h.json())
-	e.Get("/db", h.db())
-	e.Get("/queries/*", h.queries())
-	e.Get("/fortunes", h.fortunes())
-	e.Get("/updates/*", h.updates())
-	e.Get("/plaintext", h.plaintext())
+	e.GET("/json", h.json())
+	e.GET("/db", h.db())
+	e.GET("/queries", h.queries())
+	e.GET("/fortunes", h.fortunes())
+	e.GET("/updates", h.updates())
+	e.GET("/plaintext", h.plaintext())
 }
 }
 
 
 func InitPostgres() {
 func InitPostgres() {
@@ -291,3 +291,11 @@ func InitPostgres() {
 		log.Fatal(err)
 		log.Fatal(err)
 	}
 	}
 }
 }
+
+func main() {
+	e := echo.New()
+	e.Renderer = Template
+	InitRoutes(e)
+	InitPostgres()
+	e.Start(":8080")
+}

+ 0 - 69
frameworks/Go/echo/src/fasthttp/main.go

@@ -1,69 +0,0 @@
-package main
-
-import (
-	"common"
-	"flag"
-	"log"
-	"net"
-	"os"
-	"os/exec"
-	"runtime"
-
-	"github.com/labstack/echo"
-	"github.com/labstack/echo/engine"
-	"github.com/labstack/echo/engine/fasthttp"
-	"github.com/valyala/fasthttp/reuseport"
-)
-
-var (
-	prefork = flag.Bool("prefork", false, "use prefork")
-	child   = flag.Bool("child", false, "is child proc")
-)
-
-func getListener() net.Listener {
-	if !*prefork {
-		runtime.GOMAXPROCS(runtime.NumCPU())
-		ln, err := net.Listen("tcp4", ":8080")
-		if err != nil {
-			log.Fatal(err)
-		}
-		return ln
-	}
-
-	if !*child {
-		children := make([]*exec.Cmd, runtime.NumCPU())
-		for i := range children {
-			children[i] = exec.Command(os.Args[0], "-prefork", "-child")
-			children[i].Stdout = os.Stdout
-			children[i].Stderr = os.Stderr
-			if err := children[i].Start(); err != nil {
-				log.Fatal(err)
-			}
-		}
-		for _, ch := range children {
-			if err := ch.Wait(); err != nil {
-				log.Print(err)
-			}
-		}
-		os.Exit(0)
-		panic("unreachable")
-	}
-
-	runtime.GOMAXPROCS(1)
-	ln, err := reuseport.Listen("tcp4", ":8080")
-	if err != nil {
-		log.Fatal(err)
-	}
-	return ln
-}
-
-func main() {
-	flag.Parse()
-	e := echo.New()
-	e.SetRenderer(common.Template)
-	common.InitRoutes(e)
-	common.InitPostgres()
-	e.Run(fasthttp.WithConfig(engine.Config{
-		Listener: getListener(),
-	}))
-}

+ 37 - 0
frameworks/Go/echo/src/glide.lock

@@ -0,0 +1,37 @@
+hash: bc2963fa49e9b909be640418639463f2ef41016c159da6d025252e7ca8075528
+updated: 2016-12-30T10:45:43.942020764+09:00
+imports:
+- name: github.com/labstack/echo
+  version: 8d504c1b699c757b267255c53b3e5219f9974abc
+- name: github.com/labstack/gommon
+  version: 2d272df536d051e737aea353b86c979d6e88bce0
+  subpackages:
+  - color
+  - log
+- name: github.com/lib/pq
+  version: 5bf161122cd640c2a5a2c1d7fa49ea9befff31dd
+  subpackages:
+  - oid
+- name: github.com/mattn/go-colorable
+  version: d228849504861217f796da67fae4f6e347643f15
+- name: github.com/mattn/go-isatty
+  version: 30a891c33c7cde7b02a981314b4228ec99380cca
+- name: github.com/tylerb/graceful
+  version: 4df1190835320af7076dfcf27b3d071fd3612caf
+- name: github.com/valyala/fasttemplate
+  version: 3b874956e03f1636d171bda64b130f9135f42cff
+- name: golang.org/x/crypto
+  version: f6b343c37ca80bfa8ea539da67a0b621f84fab1d
+  subpackages:
+  - acme
+  - acme/autocert
+- name: golang.org/x/net
+  version: 8fd7f25955530b92e73e9e1932a41b522b22ccd9
+  subpackages:
+  - context
+  - context/ctxhttp
+- name: golang.org/x/sys
+  version: d75a52659825e75fff6158388dddc6a5b04f9ba5
+  subpackages:
+  - unix
+testImports: []

+ 5 - 0
frameworks/Go/echo/src/glide.yaml

@@ -0,0 +1,5 @@
+package: app
+import:
+- package: github.com/labstack/echo
+  version: v3.0.3
+- package: github.com/lib/pq

+ 0 - 16
frameworks/Go/echo/src/standard/main.go

@@ -1,16 +0,0 @@
-package main
-
-import (
-	"common"
-
-	"github.com/labstack/echo"
-	"github.com/labstack/echo/engine/standard"
-)
-
-func main() {
-	e := echo.New()
-	e.SetRenderer(common.Template)
-	common.InitRoutes(e)
-	common.InitPostgres()
-	e.Run(standard.New(":8080"))
-}