From 0b043d0886307dc42dde996c3b33b285c9d7342e Mon Sep 17 00:00:00 2001 From: Manu Mtz-Almeida Date: Thu, 4 Jun 2015 01:54:36 +0200 Subject: [PATCH] Fixes performance regression --- gin.go | 3 ++- routes_test.go | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/gin.go b/gin.go index 1bba1df4..d2887ed2 100644 --- a/gin.go +++ b/gin.go @@ -158,7 +158,7 @@ func (engine *Engine) addRoute(method, path string, handlers HandlersChain) { panic("there must be at least one handler") } - root := engine.trees.get("method") + root := engine.trees.get(method) if root == nil { root = new(node) engine.trees = append(engine.trees, methodTree{ @@ -247,6 +247,7 @@ func (engine *Engine) handleHTTPRequest(context *Context) { return } } + break } } diff --git a/routes_test.go b/routes_test.go index ec50b9d0..2f451f84 100644 --- a/routes_test.go +++ b/routes_test.go @@ -78,6 +78,26 @@ func testRouteNotOK2(method string, t *testing.T) { assert.Equal(t, w.Code, http.StatusMethodNotAllowed) } +func TestRouterMethod(t *testing.T) { + router := New() + router.PUT("/hey2", func(c *Context) { + c.String(200, "sup2") + }) + + router.PUT("/hey", func(c *Context) { + c.String(200, "called") + }) + + router.PUT("/hey3", func(c *Context) { + c.String(200, "sup3") + }) + + w := performRequest(router, "PUT", "/hey") + + assert.Equal(t, w.Code, 200) + assert.Equal(t, w.Body.String(), "called") +} + func TestRouterGroupRouteOK(t *testing.T) { testRouteOK("GET", t) testRouteOK("POST", t)