12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- 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")
- }
|