From de995840f9bae4c17989a46a11cb55d06ea1bbe0 Mon Sep 17 00:00:00 2001 From: zhang-wei Date: Wed, 8 Jul 2020 21:28:00 +0800 Subject: [PATCH] Migration plugins (#68) --- .github/workflows/ci.yaml | 4 +- .github/workflows/license.yaml | 38 +++++++++++ Makefile | 6 +- README.md | 9 +-- go.mod | 16 +---- go.sum | 72 -------------------- plugins/gear/doc.go | 19 ------ plugins/gear/example_gear_test.go | 83 ----------------------- plugins/gear/gear.go | 57 ---------------- plugins/gin/doc.go | 19 ------ plugins/gin/example_gin_test.go | 86 ----------------------- plugins/gin/gin.go | 98 --------------------------- plugins/http/client.go | 4 +- plugins/http/example_go_resty_test.go | 68 ------------------- plugins/http/example_http_test.go | 39 +---------- plugins/http/go_resty.go | 34 ---------- plugins/http/server.go | 4 +- tools/check-license-header.py | 76 +++++++++++++++++++++ 18 files changed, 132 insertions(+), 600 deletions(-) create mode 100644 .github/workflows/license.yaml delete mode 100644 plugins/gear/doc.go delete mode 100644 plugins/gear/example_gear_test.go delete mode 100644 plugins/gear/gear.go delete mode 100644 plugins/gin/doc.go delete mode 100644 plugins/gin/example_gin_test.go delete mode 100644 plugins/gin/gin.go delete mode 100644 plugins/http/example_go_resty_test.go delete mode 100644 plugins/http/go_resty.go create mode 100644 tools/check-license-header.py diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index d2af60f..4c268e4 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -28,10 +28,10 @@ jobs: name: Build runs-on: ubuntu-latest steps: - - name: Set up Go 1.13 + - name: Set up Go 1.12 uses: actions/setup-go@v1 with: - go-version: 1.13 + go-version: 1.12 id: go - name: Check out code into the Go module directory uses: actions/checkout@v2 diff --git a/.github/workflows/license.yaml b/.github/workflows/license.yaml new file mode 100644 index 0000000..44f7053 --- /dev/null +++ b/.github/workflows/license.yaml @@ -0,0 +1,38 @@ +# Licensed to SkyAPM org under one or more contributor +# license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright +# ownership. SkyAPM org licenses this file to you under +# the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +name: License + +on: + pull_request: + push: + branches: + - master + +jobs: + License: + runs-on: ubuntu-latest + steps: + - name: Set up Python 3.7 + uses: actions/setup-python@v2 + with: + python-version: 3.7 + - name: Check out code into the Go module directory + uses: actions/checkout@v2 + - name: Check license header + run: make license + diff --git a/Makefile b/Makefile index 2537604..0aa6b3d 100644 --- a/Makefile +++ b/Makefile @@ -65,4 +65,8 @@ fix: $(LINTER) $(LINTER) run -v --fix ./... .PHONY: all -all: test lint \ No newline at end of file +all: test lint + +.PHONY: license +license: + python3 tools/check-license-header.py \ No newline at end of file diff --git a/README.md b/README.md index 225bdd1..0aacceb 100644 --- a/README.md +++ b/README.md @@ -124,14 +124,7 @@ They are defined as constant in root package with prefix `Tag`. ## Plugins -Plugins is integrated with specific framework, for instance, `net/http`, `gin` and etc. They -are stored in `plugins` package. - - 1. [HTTP client/server example](plugins/http/example_http_test.go) - 1. [gin example](plugins/gin/example_gin_test.go) - 1. [go-resty example](plugins/http/example_go_resty_test.go) - 1. [gear example](plugins/gear/example_gear_test.go) - +Go to go2sky-plugins repo to see all the plugins, [click here](https://github.com/SkyAPM/go2sky-plugin). # License Apache License 2.0. See [LICENSE](LICENSE) file for details. diff --git a/go.mod b/go.mod index 9892b05..ee4386d 100644 --- a/go.mod +++ b/go.mod @@ -3,22 +3,12 @@ module github.com/SkyAPM/go2sky go 1.12 require ( - github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3 // indirect - github.com/gin-gonic/gin v1.3.0 - github.com/go-resty/resty/v2 v2.2.0 github.com/golang/mock v1.2.0 github.com/golang/protobuf v1.3.2 github.com/google/uuid v1.1.1 - github.com/gorilla/mux v1.7.1 - github.com/json-iterator/go v1.1.6 // indirect - github.com/mattn/go-isatty v0.0.7 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.1 // indirect github.com/pkg/errors v0.8.1 - github.com/stretchr/testify v1.5.1 // indirect - github.com/teambition/gear v1.21.2 - github.com/ugorji/go v1.1.4 // indirect + golang.org/x/net v0.0.0-20200222125558-5a598a2470a0 // indirect + golang.org/x/sys v0.0.0-20190422165155-953cdadca894 // indirect + golang.org/x/text v0.3.1-0.20181010134911-4d1c5fb19474 // indirect google.golang.org/grpc v1.27.0 - gopkg.in/go-playground/assert.v1 v1.2.1 // indirect - gopkg.in/go-playground/validator.v8 v8.18.2 // indirect ) diff --git a/go.sum b/go.sum index 7ca5354..cbfbe2b 100644 --- a/go.sum +++ b/go.sum @@ -1,29 +1,9 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/GitbookIO/mimedb v0.0.0-20180329142916-39fdfdb4def4/go.mod h1:0JA2lIXs/dl3RUgHP5ivwjl3f0g+X2BQz3zWnq8IJa4= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dimfeld/httptreemux v5.0.1+incompatible h1:Qj3gVcDNoOthBAqftuD596rm4wg/adLLz5xh5CmpiCA= -github.com/dimfeld/httptreemux v5.0.1+incompatible/go.mod h1:rbUlSV+CCpv/SuqUTP/8Bk2O3LyUV436/yaRGkhP6Z0= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3 h1:t8FVkw33L+wilf2QiWkw0UV77qRpcH/JHPKGpKa2E8g= -github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= -github.com/gin-gonic/gin v1.3.0 h1:kCmZyPklC0gVdL728E6Aj20uYBJV93nj/TkwBTKhFbs= -github.com/gin-gonic/gin v1.3.0/go.mod h1:7cKuhb5qV2ggCFctp2fJQ+ErvciLZrIeoOSOm6mUr7Y= -github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8 h1:DujepqpGd1hyOd7aW59XpK7Qymp8iy83xq74fLr21is= -github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= -github.com/go-http-utils/cookie v1.3.1 h1:GCdTeqVV5vDcjP7LrgYpH8pbt3dOYKS+Wrs7Jo3/k/w= -github.com/go-http-utils/cookie v1.3.1/go.mod h1:ATl4rfG3bEemjiVa+8WIfgNcBUWdYBTasfXKjJ3Avt8= -github.com/go-http-utils/negotiator v1.0.0 h1:Qp1zofD6Nw7KXApXa3pAjehP06Js0ILguEBCnHhZeVA= -github.com/go-http-utils/negotiator v1.0.0/go.mod h1:mTQe1sH0XhdFkeDiWpCY3QSk7Apo5jwOlIwLWJbJe2c= -github.com/go-resty/resty/v2 v2.2.0 h1:vgZ1cdblp8Aw4jZj3ZsKh6yKAlMg3CHMrqFSFFd+jgY= -github.com/go-resty/resty/v2 v2.2.0/go.mod h1:nYW/8rxqQCmI3bPz9Fsmjbr2FBjGuR2Mzt6kDh3zZ7w= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= @@ -37,47 +17,9 @@ github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gorilla/mux v1.7.1 h1:Dw4jY2nghMMRsh1ol8dv1axHkDwMQK2DHerMNJsIpJU= -github.com/gorilla/mux v1.7.1/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/json-iterator/go v1.1.6 h1:MrUvLMLTMxbqFJ9kzlvat/rYZqZnW3u4wkLzWTaFwKs= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/julienschmidt/httprouter v1.2.0 h1:TDTW5Yz1mjftljbcKqRcrYhd4XeOoI98t+9HbQbYf7g= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/mailgun/timetools v0.0.0-20170619190023-f3a7b8ffff47/go.mod h1:RYmqHbhWwIz3z9eVmQ2rx82rulEMG0t+Q1bzfc9DYN4= -github.com/mattn/go-isatty v0.0.7 h1:UvyT9uN+3r7yLEYSlJsbQGdsaB/a0DlgWP3pql6iwOc= -github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/teambition/compressible-go v1.0.1/go.mod h1:K91wjCUqzpuY2ZpSi039mt4WzzjMGxPFMZHHTEoTvak= -github.com/teambition/gear v1.21.2 h1:mwmfe5SOh9a5kQdoyYqdix/FGswtvu4QPkDzHNvkTLg= -github.com/teambition/gear v1.21.2/go.mod h1:berJp67mxgCZ1ZKgv1oCVV9WpWko3zAgIGYtaN4iGW0= -github.com/teambition/trie-mux v1.4.2 h1:HgbwXfQDsingRLzyYdxEyut3i2Z9To/GOlVZD2gKRiM= -github.com/teambition/trie-mux v1.4.2/go.mod h1:ZWBopELDBGsgw9l8lFD4WCkpZTmmEKhu/8w3FbsxBgo= -github.com/ugorji/go v1.1.4 h1:j4s+tAvLfL3bZyefP2SEWmhBzmuIlH/eqNuPdFPgngw= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/vulcand/oxy v0.0.0-20181019102601-ac21a760928b/go.mod h1:giFb8dicROVdV5W0HXlA5siMBLWKnVXZlkA4Y5ZIzrY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -98,8 +40,6 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522 h1:Ve1ORMCxvRmSXBwJK+t3Oy+V2vRW2OetUQBq4rJIkZE= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223 h1:DH4skfRX4EBpamg7iV4ZlCpblAHI6s6TDM39bFZumv8= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190422165155-953cdadca894 h1:Cz4ceDQGXuKRnVBDTS23GTn/pU5OE2C0WrNTOYK1Uuc= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= @@ -119,19 +59,7 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2El google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0 h1:rRYRFMVgRv6E0D70Skyfsr28tDXIuuPZyWGMPdMcnXg= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM= -gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= -gopkg.in/go-playground/validator.v8 v8.18.2 h1:lFB4DoMU6B626w8ny76MV7VX6W2VHct2GVOI3xgiMrQ= -gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= -gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/plugins/gear/doc.go b/plugins/gear/doc.go deleted file mode 100644 index da936d7..0000000 --- a/plugins/gear/doc.go +++ /dev/null @@ -1,19 +0,0 @@ -// Licensed to SkyAPM org under one or more contributor -// license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright -// ownership. SkyAPM org licenses this file to you under -// the Apache License, Version 2.0 (the "License"); you may -// not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -// Package Gear is a plugin that can be used to trace Gear framework. -package gear diff --git a/plugins/gear/example_gear_test.go b/plugins/gear/example_gear_test.go deleted file mode 100644 index a511958..0000000 --- a/plugins/gear/example_gear_test.go +++ /dev/null @@ -1,83 +0,0 @@ -// Licensed to SkyAPM org under one or more contributor -// license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright -// ownership. SkyAPM org licenses this file to you under -// the Apache License, Version 2.0 (the "License"); you may -// not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -package gear - -import ( - "fmt" - "github.com/SkyAPM/go2sky" - h "github.com/SkyAPM/go2sky/plugins/http" - "github.com/SkyAPM/go2sky/reporter" - "github.com/teambition/gear" - "log" - "net/http" - "sync" - "time" -) - -func ExampleMiddleware() { - re, err := reporter.NewLogReporter() - if err != nil { - log.Fatalf("new reporter error %v \n", err) - } - defer re.Close() - - tracer, err := go2sky.NewTracer("gear", go2sky.WithReporter(re)) - if err != nil { - log.Fatalf("create tracer error %v \n", err) - } - app := gear.New() - - app.Use(Middleware(tracer)) - - router := gear.NewRouter() - router.Get("/user", func(ctx *gear.Context) error { - name := ctx.Param("name") - return ctx.End(http.StatusOK, []byte(fmt.Sprintf("Hello %s", name))) - }) - - app.UseHandler(router) - - go func() { - app.Error(app.Listen(":8080")) - }() - var wg sync.WaitGroup - wg.Add(1) - go func() { - defer wg.Done() - request(tracer) - }() - wg.Wait() - // Output: - time.Sleep(time.Second) -} - -func request(tracer *go2sky.Tracer) { - client, err := h.NewClient(tracer) - if err != nil { - log.Fatalf("create client error %v \n", err) - } - request, err := http.NewRequest("GET", "http://127.0.0.1:8080/user?name=gear", nil) - if err != nil { - log.Fatalf("unable to create http request: %+v\n", err) - } - res, err := client.Do(request) - if err != nil { - log.Fatalf("unable to do http request: %+v\n", err) - } - _ = res.Body.Close() -} diff --git a/plugins/gear/gear.go b/plugins/gear/gear.go deleted file mode 100644 index e114284..0000000 --- a/plugins/gear/gear.go +++ /dev/null @@ -1,57 +0,0 @@ -// Licensed to SkyAPM org under one or more contributor -// license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright -// ownership. SkyAPM org licenses this file to you under -// the Apache License, Version 2.0 (the "License"); you may -// not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -package gear - -import ( - "github.com/SkyAPM/go2sky" - "github.com/SkyAPM/go2sky/propagation" - v3 "github.com/SkyAPM/go2sky/reporter/grpc/language-agent" - "github.com/teambition/gear" - "strconv" - "time" -) - -func Middleware(tracer *go2sky.Tracer) gear.Middleware { - return func(ctx *gear.Context) error { - if tracer == nil { - return nil - } - - span, _, err := tracer.CreateEntrySpan(ctx, ctx.Path, func() (string, error) { - return ctx.GetHeader(propagation.Header), nil - }) - if err != nil { - return nil - } - - span.SetComponent(go2sky.ComponentIDHttpServer) - span.Tag(go2sky.TagHTTPMethod, ctx.Method) - span.Tag(go2sky.TagURL, ctx.Host+ctx.Path) - span.SetSpanLayer(v3.SpanLayer_Http) - - ctx.OnEnd(func() { - code := ctx.Res.Status() - span.Tag(go2sky.TagStatusCode, strconv.Itoa(code)) - if code >= 400 { - span.Error(time.Now(), string(ctx.Res.Body())) - } - span.End() - }) - return nil - } -} diff --git a/plugins/gin/doc.go b/plugins/gin/doc.go deleted file mode 100644 index 48c51fc..0000000 --- a/plugins/gin/doc.go +++ /dev/null @@ -1,19 +0,0 @@ -// Licensed to SkyAPM org under one or more contributor -// license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright -// ownership. SkyAPM org licenses this file to you under -// the Apache License, Version 2.0 (the "License"); you may -// not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -//Package Gin is a HTTP web framework written in Go (Golang) plugin which can be used for integration with Gin http server. -package gin diff --git a/plugins/gin/example_gin_test.go b/plugins/gin/example_gin_test.go deleted file mode 100644 index 982a55e..0000000 --- a/plugins/gin/example_gin_test.go +++ /dev/null @@ -1,86 +0,0 @@ -// Licensed to SkyAPM org under one or more contributor -// license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright -// ownership. SkyAPM org licenses this file to you under -// the Apache License, Version 2.0 (the "License"); you may -// not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -package gin - -import ( - "fmt" - "log" - "net/http" - "sync" - - "github.com/SkyAPM/go2sky" - h "github.com/SkyAPM/go2sky/plugins/http" - "github.com/SkyAPM/go2sky/reporter" - "github.com/gin-gonic/gin" -) - -func ExampleMiddleware() { - // Use gRPC reporter for production - re, err := reporter.NewLogReporter() - if err != nil { - log.Fatalf("new reporter error %v \n", err) - } - defer re.Close() - - tracer, err := go2sky.NewTracer("gin-server", go2sky.WithReporter(re)) - if err != nil { - log.Fatalf("create tracer error %v \n", err) - } - gin.SetMode(gin.ReleaseMode) - r := gin.New() - - //Use go2sky middleware with tracing - r.Use(Middleware(r, tracer)) - - r.GET("/user/:name", func(c *gin.Context) { - name := c.Param("name") - c.String(200, "Hello %s", name) - }) - - go func() { - if err := http.ListenAndServe(":8080", r); err != nil { - panic(err) - } - }() - var wg sync.WaitGroup - wg.Add(1) - go func() { - defer wg.Done() - request(tracer) - }() - wg.Wait() - // Output: - -} - -func request(tracer *go2sky.Tracer, options ...h.ClientOption) { - //NewClient returns an HTTP Client with tracer - client, err := h.NewClient(tracer) - if err != nil { - log.Fatalf("create client error %v \n", err) - } - request, err := http.NewRequest("GET", fmt.Sprintf("%s/user/gin", "http://127.0.0.1:8080"), nil) - if err != nil { - log.Fatalf("unable to create http request: %+v\n", err) - } - res, err := client.Do(request) - if err != nil { - log.Fatalf("unable to do http request: %+v\n", err) - } - _ = res.Body.Close() -} diff --git a/plugins/gin/gin.go b/plugins/gin/gin.go deleted file mode 100644 index a413afe..0000000 --- a/plugins/gin/gin.go +++ /dev/null @@ -1,98 +0,0 @@ -// Licensed to SkyAPM org under one or more contributor -// license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright -// ownership. SkyAPM org licenses this file to you under -// the Apache License, Version 2.0 (the "License"); you may -// not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -//Package Gin is a HTTP web framework written in Go (Golang) plugin which can be used for integration with Gin http server. - -package gin - -import ( - "fmt" - "strconv" - "sync" - "time" - - "github.com/SkyAPM/go2sky" - "github.com/SkyAPM/go2sky/propagation" - v3 "github.com/SkyAPM/go2sky/reporter/grpc/language-agent" - "github.com/gin-gonic/gin" -) - -type routeInfo struct { - operationName string -} - -type middleware struct { - routeMap map[string]map[string]routeInfo - routeMapOnce sync.Once -} - -//Middleware gin middleware return HandlerFunc with tracing. -func Middleware(engine *gin.Engine, tracer *go2sky.Tracer) gin.HandlerFunc { - if engine == nil || tracer == nil { - return func(c *gin.Context) { - c.Next() - } - } - m := new(middleware) - - return func(c *gin.Context) { - m.routeMapOnce.Do(func() { - routes := engine.Routes() - rm := make(map[string]map[string]routeInfo) - for _, r := range routes { - mm := rm[r.Method] - if mm == nil { - mm = make(map[string]routeInfo) - rm[r.Method] = mm - } - mm[r.Handler] = routeInfo{ - operationName: fmt.Sprintf("/%s%s", r.Method, r.Path), - } - } - m.routeMap = rm - }) - var operationName string - handlerName := c.HandlerName() - if routeInfo, ok := m.routeMap[c.Request.Method][handlerName]; ok { - operationName = routeInfo.operationName - } - if operationName == "" { - operationName = c.Request.Method - } - span, ctx, err := tracer.CreateEntrySpan(c.Request.Context(), operationName, func() (string, error) { - return c.Request.Header.Get(propagation.Header), nil - }) - if err != nil { - c.Next() - return - } - span.SetComponent(go2sky.ComponentIDHttpServer) - span.Tag(go2sky.TagHTTPMethod, c.Request.Method) - span.Tag(go2sky.TagURL, c.Request.Host+c.Request.URL.Path) - span.SetSpanLayer(v3.SpanLayer_Http) - - c.Request = c.Request.WithContext(ctx) - - c.Next() - - if len(c.Errors) > 0 { - span.Error(time.Now(), c.Errors.String()) - } - span.Tag(go2sky.TagStatusCode, strconv.Itoa(c.Writer.Status())) - span.End() - } -} diff --git a/plugins/http/client.go b/plugins/http/client.go index 9ba058e..d1f7712 100644 --- a/plugins/http/client.go +++ b/plugins/http/client.go @@ -27,7 +27,7 @@ import ( v3 "github.com/SkyAPM/go2sky/reporter/grpc/language-agent" ) -const httpClientComponentID int32 = 2 +const componentIDGOHttpClient = 5005 type ClientConfig struct { name string @@ -100,7 +100,7 @@ func (t *transport) RoundTrip(req *http.Request) (res *http.Response, err error) return t.delegated.RoundTrip(req) } defer span.End() - span.SetComponent(httpClientComponentID) + span.SetComponent(componentIDGOHttpClient) for k, v := range t.extraTags { span.Tag(go2sky.Tag(k), v) } diff --git a/plugins/http/example_go_resty_test.go b/plugins/http/example_go_resty_test.go deleted file mode 100644 index ffc55b5..0000000 --- a/plugins/http/example_go_resty_test.go +++ /dev/null @@ -1,68 +0,0 @@ -// Licensed to SkyAPM org under one or more contributor -// license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright -// ownership. SkyAPM org licenses this file to you under -// the Apache License, Version 2.0 (the "License"); you may -// not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -package http - -import ( - "fmt" - "log" - "net/http/httptest" - "time" - - "github.com/SkyAPM/go2sky" - "github.com/SkyAPM/go2sky/reporter" - "github.com/gorilla/mux" -) - -func ExampleNewGoResty() { - // Use log reporter for production - r, err := reporter.NewLogReporter() - if err != nil { - log.Fatalf("new reporter error %v \n", err) - } - defer r.Close() - - tracer, err := go2sky.NewTracer("example", go2sky.WithReporter(r)) - if err != nil { - log.Fatalf("create tracer error %v \n", err) - } - - sm, err := NewServerMiddleware(tracer) - if err != nil { - log.Fatalf("create server middleware error %v \n", err) - } - - router := mux.NewRouter() - - // create test server - ts := httptest.NewServer(sm(router)) - defer ts.Close() - - // add handlers - router.Methods("GET").Path("/end").HandlerFunc(endFunc()) - - // create go-resty client - client := NewGoResty(tracer) - resp, err := client.R().Get(fmt.Sprintf("%s/end", ts.URL)) - if err != nil { - log.Fatalf("unable to do http request: %+v\n", err) - } - - _ = resp.RawResponse.Body.Close() - time.Sleep(time.Second) - // Output: -} diff --git a/plugins/http/example_http_test.go b/plugins/http/example_http_test.go index 6a20cbc..3df1aaa 100644 --- a/plugins/http/example_http_test.go +++ b/plugins/http/example_http_test.go @@ -24,8 +24,6 @@ import ( "net/http/httptest" "time" - "github.com/gorilla/mux" - "github.com/SkyAPM/go2sky" "github.com/SkyAPM/go2sky/reporter" ) @@ -53,18 +51,12 @@ func ExampleNewServerMiddleware() { log.Fatalf("create client error %v \n", err) } - router := mux.NewRouter() - // create test server - ts := httptest.NewServer(sm(router)) + ts := httptest.NewServer(sm(endFunc())) defer ts.Close() - // add handlers - router.Methods("GET").Path("/middle").HandlerFunc(middleFunc(client, ts.URL)) - router.Methods("POST").Path("/end").HandlerFunc(endFunc()) - // call end service - request, err := http.NewRequest("GET", fmt.Sprintf("%s/middle", ts.URL), nil) + request, err := http.NewRequest("POST", fmt.Sprintf("%s/end", ts.URL), nil) if err != nil { log.Fatalf("unable to create http request: %+v\n", err) } @@ -78,33 +70,6 @@ func ExampleNewServerMiddleware() { // Output: } -func middleFunc(client *http.Client, url string) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - log.Printf("middle func called with method: %s\n", r.Method) - - // do some operation - time.Sleep(100 * time.Millisecond) - - newRequest, err := http.NewRequest("POST", url+"/end", nil) - if err != nil { - log.Printf("unable to create client: %+v\n", err) - http.Error(w, err.Error(), 500) - return - } - - //Link the context of entry and exit spans - newRequest = newRequest.WithContext(r.Context()) - - res, err := client.Do(newRequest) - if err != nil { - log.Printf("call to end fund returned error: %+v\n", err) - http.Error(w, err.Error(), 500) - return - } - _ = res.Body.Close() - } -} - func endFunc() http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { log.Printf("end func called with method: %s\n", r.Method) diff --git a/plugins/http/go_resty.go b/plugins/http/go_resty.go deleted file mode 100644 index 1baace1..0000000 --- a/plugins/http/go_resty.go +++ /dev/null @@ -1,34 +0,0 @@ -// Licensed to SkyAPM org under one or more contributor -// license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright -// ownership. SkyAPM org licenses this file to you under -// the Apache License, Version 2.0 (the "License"); you may -// not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -package http - -import ( - "log" - - "github.com/SkyAPM/go2sky" - "github.com/go-resty/resty/v2" -) - -// NewGoResty returns a resty Client with tracer -func NewGoResty(tracer *go2sky.Tracer, options ...ClientOption) *resty.Client { - hc, err := NewClient(tracer, options...) - if err != nil { - log.Fatalf("create client error %v \n", err) - } - return resty.NewWithClient(hc) -} diff --git a/plugins/http/server.go b/plugins/http/server.go index 89c534b..cef346c 100644 --- a/plugins/http/server.go +++ b/plugins/http/server.go @@ -33,6 +33,8 @@ const ( errInvalidTracer = tool.Error("invalid tracer") ) +const componentIDGOHttpServer = 5004 + type handler struct { tracer *go2sky.Tracer name string @@ -88,7 +90,7 @@ func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { } return } - span.SetComponent(go2sky.ComponentIDHttpServer) + span.SetComponent(componentIDGOHttpServer) for k, v := range h.extraTags { span.Tag(go2sky.Tag(k), v) } diff --git a/tools/check-license-header.py b/tools/check-license-header.py new file mode 100644 index 0000000..25dd7db --- /dev/null +++ b/tools/check-license-header.py @@ -0,0 +1,76 @@ +# Licensed to SkyAPM org under one or more contributor +# license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright +# ownership. SkyAPM org licenses this file to you under +# the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +import os +import sys + +ignored_chars = '//\n \t' + +ignored_paths = [ + "reporter/grpc" +] + +license_header = ' '.join( + [ + line.strip(ignored_chars) for line in """ + // Licensed to SkyAPM org under one or more contributor + // license agreements. See the NOTICE file distributed with + // this work for additional information regarding copyright + // ownership. SkyAPM org licenses this file to you under + // the Apache License, Version 2.0 (the "License"); you may + // not use this file except in compliance with the License. + // You may obtain a copy of the License at + // + // http://www.apache.org/licenses/LICENSE-2.0 + // + // Unless required by applicable law or agreed to in writing, + // software distributed under the License is distributed on an + // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + // KIND, either express or implied. See the License for the + // specific language governing permissions and limitations + // under the License. + """.splitlines() + ] +).strip(ignored_chars) + + +def walk_through_dir(d) -> bool: + checked = True + for root, sub_dirs, files in os.walk(d): + ignored = False + for ignored_path in ignored_paths: + if root.__contains__(ignored_path): + ignored = True + break + if ignored: + continue + + for filename in files: + if not filename.endswith(".go"): + continue + + file_path = os.path.join(root, filename) + with open(file_path, 'r') as f: + header = ' '.join([line.strip(ignored_chars) for line in f.readlines() if line.startswith('//')]).strip() + print('%s license header in file: %s' % ('✅' if header.startswith(license_header) else '❌', file_path)) + checked &= header.startswith(license_header) + return checked + + +if __name__ == "__main__": + if not walk_through_dir("./"): + sys.exit(1) -- GitLab