gin/benchmarks_test.go

65 lines
1.1 KiB
Go
Raw Normal View History

2014-07-04 20:37:17 +04:00
package gin
import (
"log"
"net/http"
"net/http/httptest"
"testing"
)
func runHandler(B *testing.B, handler HandlerFunc) {
req, err := http.NewRequest("GET", "http://localhost/foo", nil)
if err != nil {
log.Fatal(err)
}
c := &Context{
Writer: &responseWriter{httptest.NewRecorder(), 0, false},
Req: req,
index: 0,
}
B.ReportAllocs()
B.ResetTimer()
for i := 0; i < B.N; i++ {
c.index = 0
handler(c)
}
}
func runRequest(B *testing.B, r *Engine, path string) {
// create fake request
url := "http://localhost" + path
req, err := http.NewRequest("GET", url, nil)
if err != nil {
panic(err)
}
// create fake writes
w := httptest.NewRecorder()
B.ReportAllocs()
B.ResetTimer()
for i := 0; i < B.N; i++ {
r.ServeHTTP(w, req)
}
}
func BenchmarkMiddlewareLogger(B *testing.B) {
runHandler(B, Logger())
}
func BenchmarkDefaultOnlyPing(B *testing.B) {
r := New()
r.GET("/ping", func(c *Context) {
c.String(200, "pong")
})
runRequest(B, r, "/ping")
}
func BenchmarkDefaultPing(B *testing.B) {
r := Default()
r.GET("/ping", func(c *Context) {
c.String(200, "pong")
})
runRequest(B, r, "/ping")
}