From c9f695f625469adf3671c5508a77ab53855b9e4a Mon Sep 17 00:00:00 2001 From: Kapil Verma Date: Wed, 23 Nov 2022 12:35:50 +0530 Subject: [PATCH 1/2] gorrila/mux.SQLCommenterMiddleware test --- go/gorrila/mux/go.mod | 14 +++++++++++ go/gorrila/mux/go.sum | 15 ++++++++++++ go/gorrila/mux/mux.go | 22 +++++++++++++++++ go/gorrila/mux/mux_test.go | 48 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 99 insertions(+) create mode 100644 go/gorrila/mux/go.mod create mode 100644 go/gorrila/mux/go.sum create mode 100644 go/gorrila/mux/mux.go create mode 100644 go/gorrila/mux/mux_test.go diff --git a/go/gorrila/mux/go.mod b/go/gorrila/mux/go.mod new file mode 100644 index 00000000..e85ebe62 --- /dev/null +++ b/go/gorrila/mux/go.mod @@ -0,0 +1,14 @@ +module github.com/google/sqlcommenter/go/gorrila/mux + +go 1.19 + +require ( + github.com/google/sqlcommenter/go/core v0.0.3-beta + github.com/google/sqlcommenter/go/net/http v0.0.3-beta + github.com/gorilla/mux v1.8.0 +) + +require ( + go.opentelemetry.io/otel v1.11.1 // indirect + go.opentelemetry.io/otel/trace v1.11.1 // indirect +) diff --git a/go/gorrila/mux/go.sum b/go/gorrila/mux/go.sum new file mode 100644 index 00000000..e15b61f7 --- /dev/null +++ b/go/gorrila/mux/go.sum @@ -0,0 +1,15 @@ +github.com/google/sqlcommenter/go/core v0.0.3-beta h1:gWUfq/UyMPEmHpAyhjcsGGAXRCV2fjB6e6F8CPedlnU= +github.com/google/sqlcommenter/go/core v0.0.3-beta/go.mod h1:GORu2htXRC4xtejBzOa4ct1L20pohP81DFNYKdCJI70= +github.com/google/sqlcommenter/go/net/http v0.0.2-beta/go.mod h1:1sd6t92iCHaNQc/v5qxTHp+td7KNoD8IIeG4BRetFZo= +github.com/google/sqlcommenter/go/net/http v0.0.3-beta h1:IE/vO3xKddn/2Bq3k+hSy4CxcEuvE1lUiIDYTXjApzA= +github.com/google/sqlcommenter/go/net/http v0.0.3-beta/go.mod h1:duXQQvXZYCX8eQ+XOrlojWF512ltEp1eSKXc/KiS9lg= +github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +go.opentelemetry.io/otel v1.10.0 h1:Y7DTJMR6zs1xkS/upamJYk0SxxN4C9AqRd77jmZnyY4= +go.opentelemetry.io/otel v1.10.0/go.mod h1:NbvWjCthWHKBEUMpf0/v8ZRZlni86PpGFEMA9pnQSnQ= +go.opentelemetry.io/otel v1.11.1 h1:4WLLAmcfkmDk2ukNXJyq3/kiz/3UzCaYq6PskJsaou4= +go.opentelemetry.io/otel v1.11.1/go.mod h1:1nNhXBbWSD0nsL38H6btgnFN2k4i0sNLHNNMZMSbUGE= +go.opentelemetry.io/otel/trace v1.10.0 h1:npQMbR8o7mum8uF95yFbOEJffhs1sbCOfDh8zAJiH5E= +go.opentelemetry.io/otel/trace v1.10.0/go.mod h1:Sij3YYczqAdz+EhmGhE6TpTxUO5/F/AzrK+kxfGqySM= +go.opentelemetry.io/otel/trace v1.11.1 h1:ofxdnzsNrGBYXbP7t7zpUK281+go5rF7dvdIZXF8gdQ= +go.opentelemetry.io/otel/trace v1.11.1/go.mod h1:f/Q9G7vzk5u91PhbmKbg1Qn0rzH1LJ4vbPHFGkTPtOk= diff --git a/go/gorrila/mux/mux.go b/go/gorrila/mux/mux.go new file mode 100644 index 00000000..5fbbb6fb --- /dev/null +++ b/go/gorrila/mux/mux.go @@ -0,0 +1,22 @@ +package mux + +import ( + "net/http" + + "github.com/google/sqlcommenter/go/core" + httpnet "github.com/google/sqlcommenter/go/net/http" + "github.com/gorilla/mux" +) + +func SQLCommenterMiddleware(h http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + route := mux.CurrentRoute(r) + pathTemplate, err := route.GetPathTemplate() + if err != nil { + pathTemplate = "" + } + + ctx := core.ContextInject(r.Context(), httpnet.NewHTTPRequestTags("gorrila/mux", pathTemplate, core.GetFunctionName(route.GetHandler()))) + h.ServeHTTP(w, r.WithContext(ctx)) + }) +} diff --git a/go/gorrila/mux/mux_test.go b/go/gorrila/mux/mux_test.go new file mode 100644 index 00000000..9283603f --- /dev/null +++ b/go/gorrila/mux/mux_test.go @@ -0,0 +1,48 @@ +package mux + +import ( + "net/http" + "net/http/httptest" + "testing" + + "github.com/google/sqlcommenter/go/core" + "github.com/gorilla/mux" +) + +func TestSQLCommenterMiddleware(t *testing.T) { + framework := "gorrila/mux" + route := "/test/{id}" + action := "github.com/google/sqlcommenter/go/gorrila/mux.TestSQLCommenterMiddleware.func1" + + mockHandler := func(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + _framework := ctx.Value(core.Framework) + _route := ctx.Value(core.Route) + _action := ctx.Value(core.Action) + + if _framework != framework { + t.Errorf("mismatched framework - got: %s, want: %s", _framework, framework) + } + + if _route != route { + t.Errorf("mismatched route - got: %s, want: %s", _route, route) + } + + if _action != action { + t.Errorf("mismatched action - got: %s, want: %s", _action, action) + } + } + + router := mux.NewRouter() + router.Use(SQLCommenterMiddleware) + router.HandleFunc(route, mockHandler).Methods("GET") + + rr := httptest.NewRecorder() + req, err := http.NewRequest("GET", "/test/1", nil) + + if err != nil { + t.Errorf("error while building req: %v", err) + } + + router.ServeHTTP(rr, req) +} From a85954e61dc7907581ffc83b7e38a109b8a7511e Mon Sep 17 00:00:00 2001 From: Kapil Verma Date: Wed, 23 Nov 2022 12:41:43 +0530 Subject: [PATCH 2/2] rebased master --- go/gorrila/mux/go.mod | 2 +- go/gorrila/mux/go.sum | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/go/gorrila/mux/go.mod b/go/gorrila/mux/go.mod index e85ebe62..b0129dcb 100644 --- a/go/gorrila/mux/go.mod +++ b/go/gorrila/mux/go.mod @@ -3,7 +3,7 @@ module github.com/google/sqlcommenter/go/gorrila/mux go 1.19 require ( - github.com/google/sqlcommenter/go/core v0.0.3-beta + github.com/google/sqlcommenter/go/core v0.0.5-beta github.com/google/sqlcommenter/go/net/http v0.0.3-beta github.com/gorilla/mux v1.8.0 ) diff --git a/go/gorrila/mux/go.sum b/go/gorrila/mux/go.sum index e15b61f7..c6f852c7 100644 --- a/go/gorrila/mux/go.sum +++ b/go/gorrila/mux/go.sum @@ -1,15 +1,17 @@ -github.com/google/sqlcommenter/go/core v0.0.3-beta h1:gWUfq/UyMPEmHpAyhjcsGGAXRCV2fjB6e6F8CPedlnU= -github.com/google/sqlcommenter/go/core v0.0.3-beta/go.mod h1:GORu2htXRC4xtejBzOa4ct1L20pohP81DFNYKdCJI70= -github.com/google/sqlcommenter/go/net/http v0.0.2-beta/go.mod h1:1sd6t92iCHaNQc/v5qxTHp+td7KNoD8IIeG4BRetFZo= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/sqlcommenter/go/core v0.0.5-beta h1:axqYR1zQCCdRBLnwr/j+ckllBSBJ7uaVdsnANuGzCUI= +github.com/google/sqlcommenter/go/core v0.0.5-beta/go.mod h1:GORu2htXRC4xtejBzOa4ct1L20pohP81DFNYKdCJI70= github.com/google/sqlcommenter/go/net/http v0.0.3-beta h1:IE/vO3xKddn/2Bq3k+hSy4CxcEuvE1lUiIDYTXjApzA= github.com/google/sqlcommenter/go/net/http v0.0.3-beta/go.mod h1:duXQQvXZYCX8eQ+XOrlojWF512ltEp1eSKXc/KiS9lg= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -go.opentelemetry.io/otel v1.10.0 h1:Y7DTJMR6zs1xkS/upamJYk0SxxN4C9AqRd77jmZnyY4= -go.opentelemetry.io/otel v1.10.0/go.mod h1:NbvWjCthWHKBEUMpf0/v8ZRZlni86PpGFEMA9pnQSnQ= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= go.opentelemetry.io/otel v1.11.1 h1:4WLLAmcfkmDk2ukNXJyq3/kiz/3UzCaYq6PskJsaou4= go.opentelemetry.io/otel v1.11.1/go.mod h1:1nNhXBbWSD0nsL38H6btgnFN2k4i0sNLHNNMZMSbUGE= -go.opentelemetry.io/otel/trace v1.10.0 h1:npQMbR8o7mum8uF95yFbOEJffhs1sbCOfDh8zAJiH5E= -go.opentelemetry.io/otel/trace v1.10.0/go.mod h1:Sij3YYczqAdz+EhmGhE6TpTxUO5/F/AzrK+kxfGqySM= go.opentelemetry.io/otel/trace v1.11.1 h1:ofxdnzsNrGBYXbP7t7zpUK281+go5rF7dvdIZXF8gdQ= go.opentelemetry.io/otel/trace v1.11.1/go.mod h1:f/Q9G7vzk5u91PhbmKbg1Qn0rzH1LJ4vbPHFGkTPtOk= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=