瀏覽代碼

More benchmarks

Manu Mtz-Almeida 10 年之前
父節點
當前提交
709fde85d1
共有 1 個文件被更改,包括 49 次插入4 次删除
  1. 49 4
      githubapi_test.go

+ 49 - 4
githubapi_test.go

@@ -8,6 +8,8 @@ import (
 	"bytes"
 	"fmt"
 	"math/rand"
+	"net/http"
+	"net/http/httptest"
 	"testing"
 
 	"github.com/stretchr/testify/assert"
@@ -282,18 +284,23 @@ var githubAPI = []route{
 	{"DELETE", "/user/keys/:id"},
 }
 
-func TestGithubAPI(t *testing.T) {
-	router := New()
-
+func githubConfigRouter(router *Engine) {
 	for _, route := range githubAPI {
 		router.Handle(route.method, route.path, func(c *Context) {
-			output := H{"status": "good"}
+			output := make(map[string]string, len(c.Params)+1)
+			output["status"] = "good"
 			for _, param := range c.Params {
 				output[param.Key] = param.Value
 			}
 			c.JSON(200, output)
 		})
 	}
+}
+
+func TestGithubAPI(t *testing.T) {
+	DefaultWriter = FakeWriter{}
+	router := Default()
+	githubConfigRouter(router)
 
 	for _, route := range githubAPI {
 		path, values := exampleFromPath(route.path)
@@ -342,3 +349,41 @@ func exampleFromPath(path string) (string, Params) {
 
 	return output.String(), params
 }
+
+func BenchmarkGithub(b *testing.B) {
+	router := New()
+	githubConfigRouter(router)
+	runRequest(b, router, "GET", "/legacy/issues/search/:owner/:repository/:state/:keyword")
+}
+
+func BenchmarkParallelGithub(b *testing.B) {
+	DefaultWriter = FakeWriter{}
+	router := New()
+	githubConfigRouter(router)
+
+	req, _ := http.NewRequest("POST", "/repos/manucorporat/sse/git/blobs", nil)
+
+	b.RunParallel(func(pb *testing.PB) {
+		// Each goroutine has its own bytes.Buffer.
+		for pb.Next() {
+			w := httptest.NewRecorder()
+			router.ServeHTTP(w, req)
+		}
+	})
+}
+
+func BenchmarkParallelGithubDefault(b *testing.B) {
+	DefaultWriter = FakeWriter{}
+	router := Default()
+	githubConfigRouter(router)
+
+	req, _ := http.NewRequest("POST", "/repos/manucorporat/sse/git/blobs", nil)
+
+	b.RunParallel(func(pb *testing.PB) {
+		// Each goroutine has its own bytes.Buffer.
+		for pb.Next() {
+			w := httptest.NewRecorder()
+			router.ServeHTTP(w, req)
+		}
+	})
+}