forked from mirror/gin
Some work around benchmarks
This commit is contained in:
parent
8f3f3597f3
commit
1abc373aff
|
@ -0,0 +1,64 @@
|
|||
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")
|
||||
}
|
Loading…
Reference in New Issue