diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..9dd95b1 Binary files /dev/null and b/.DS_Store differ diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 0000000..2666698 --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,4 @@ +linters-settings: + custom: + statictest: + path: ./plugin/statictest.so diff --git a/go.mod b/go.mod index 853db6b..b45f4d2 100644 --- a/go.mod +++ b/go.mod @@ -4,11 +4,21 @@ go 1.22.4 require ( github.com/go-chi/chi/v5 v5.1.0 + github.com/jingyugao/rowserrcheck v1.1.1 github.com/stretchr/testify v1.9.0 + github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 + golang.org/x/tools v0.22.0 + honnef.co/go/tools v0.4.7 ) require ( + github.com/BurntSushi/toml v1.2.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/gostaticanalysis/analysisutil v0.7.1 // indirect + github.com/gostaticanalysis/comment v1.4.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + golang.org/x/exp/typeparams v0.0.0-20221208152030-732eee02a75a // indirect + golang.org/x/mod v0.18.0 // indirect + golang.org/x/sync v0.7.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index c4d1e3e..160b5b3 100644 --- a/go.sum +++ b/go.sum @@ -1,12 +1,104 @@ +github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= +github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= 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/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw= github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= +github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= +github.com/gostaticanalysis/comment v1.4.2 h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q= +github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= +github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4 h1:d2/eIbH9XjD1fFwD5SHv8x168fjbQ9PB8hvs8DSEC08= +github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= +github.com/hashicorp/go-version v1.2.1 h1:zEfKbn2+PDgroKdiOzqiE8rsmLqU2uwi5PB5pBJ3TkI= +github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= +github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= +github.com/otiai10/copy v1.2.0 h1:HvG945u96iNadPoG2/Ja2+AUJeW5YuFQMixq9yirC+k= +github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= +github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= +github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= +github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= +github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= 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/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= +github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= +github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= +github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= +github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 h1:quvGphlmUVU+nhpFa4gg4yJyTRJ13reZMDHrKwYw53M= +github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/exp/typeparams v0.0.0-20221208152030-732eee02a75a h1:Jw5wfR+h9mnIYH+OtGT2im5wV1YGGDora5vTv/aa5bE= +golang.org/x/exp/typeparams v0.0.0-20221208152030-732eee02a75a/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= +golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= +golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= +golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= +golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= +golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 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/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.4.7 h1:9MDAWxMoSnB6QoSqiVr7P5mtkT9pOc1kSxchzPCnqJs= +honnef.co/go/tools v0.4.7/go.mod h1:+rnGS1THNh8zMwnd2oVOTL9QF6vmfyG6ZXBULae2uc0= diff --git a/internal/server/handlers.go b/internal/server/handlers.go index 299ca42..bef3725 100644 --- a/internal/server/handlers.go +++ b/internal/server/handlers.go @@ -33,7 +33,10 @@ func (r Resource) Homepage(res http.ResponseWriter, _ *http.Request) { } } - res.Write([]byte(body)) + _, err := res.Write([]byte(body)) + if err != nil { + panic("unable to write") // todo + } } func (r Resource) UpdateMetric(res http.ResponseWriter, req *http.Request) { @@ -91,7 +94,10 @@ func (r Resource) UpdateMetric(res http.ResponseWriter, req *http.Request) { panic("why") // todo } - r.storage.Push(record) + err := r.storage.Push(record) + if err != nil { + panic("cannot push") // todo + } res.WriteHeader(http.StatusOK) } diff --git a/internal/server/handlers_test.go b/internal/server/handlers_test.go index f746e0e..4a52d35 100644 --- a/internal/server/handlers_test.go +++ b/internal/server/handlers_test.go @@ -13,33 +13,28 @@ import ( ) // https://github.com/go-chi/chi/blob/cca4135d8dddff765463feaf1118047a9e506b4a/middleware/get_head_test.go -func testRequest(t *testing.T, ts *httptest.Server, method, path string, body io.Reader) (*http.Response, string) { +func testRequest(t *testing.T, ts *httptest.Server, method, path string, body io.Reader) (int, string, []byte) { req, err := http.NewRequest(method, ts.URL+path, body) - if err != nil { - t.Fatal(err) - return nil, "" - } + require.NoError(t, err) resp, err := http.DefaultClient.Do(req) - if err != nil { - t.Fatal(err) - return nil, "" - } + require.NoError(t, err) - respBody, err := io.ReadAll(resp.Body) - if err != nil { - t.Fatal(err) - return nil, "" - } defer resp.Body.Close() - return resp, string(respBody) + contentType := resp.Header.Get("Content-Type") + + respBody, err := io.ReadAll(resp.Body) + require.NoError(t, err) + + return resp.StatusCode, contentType, respBody } func TestHomepage(t *testing.T) { type result struct { - code int - body string + code int + body string + contains []string } require := require.New(t) @@ -61,7 +56,7 @@ func TestHomepage(t *testing.T) { {Name: "test1", Value: metrics.Counter(1)}, {Name: "test2", Value: metrics.Gauge(2.3)}, }, - want: result{code: http.StatusOK, body: "mainpage here.\nmetrics list:\ntest1 => counter: 1\ntest2 => gauge: 2.3\n"}, + want: result{code: http.StatusOK, contains: []string{"mainpage here.", "metrics list", "test1 => counter: 1", "test2 => gauge: 2.3"}}, }, } @@ -73,15 +68,25 @@ func TestHomepage(t *testing.T) { if len(tt.metrics) > 0 { for _, r := range tt.metrics { - storage.Push(r) + err := storage.Push(r) + require.NoError(err) } } t.Run(tt.name, func(t *testing.T) { - req, body := testRequest(t, testServer, http.MethodGet, tt.path, nil) + code, _, body := testRequest(t, testServer, http.MethodGet, tt.path, nil) - require.Equal(tt.want.code, req.StatusCode) - require.Equal(tt.want.body, string(body)) + require.Equal(tt.want.code, code) + + if len(tt.want.body) > 0 { + require.Equal(tt.want.body, string(body)) + } + + if len(tt.want.contains) > 0 { + for _, v := range tt.want.contains { + require.Contains(string(body), v) + } + } }) } } @@ -146,9 +151,9 @@ func TestUpdateMetric(t *testing.T) { testServer := httptest.NewServer(router) defer testServer.Close() - req, body := testRequest(t, testServer, http.MethodPost, tt.path, nil) + code, _, body := testRequest(t, testServer, http.MethodPost, tt.path, nil) - require.Equal(tt.want.code, req.StatusCode) + require.Equal(tt.want.code, code) require.Equal(tt.want.body, string(body)) }) } diff --git a/internal/storage/memory.go b/internal/storage/memory.go index 9275c06..d7a073c 100644 --- a/internal/storage/memory.go +++ b/internal/storage/memory.go @@ -9,7 +9,7 @@ type MemStorage struct { } func (strg *MemStorage) Push(record Record) error { - id := RecordId(record.Name, record.Value.Kind()) + id := RecordID(record.Name, record.Value.Kind()) strg.Data[id] = record return nil diff --git a/internal/storage/memory_test.go b/internal/storage/memory_test.go index 0891178..0e06575 100644 --- a/internal/storage/memory_test.go +++ b/internal/storage/memory_test.go @@ -20,7 +20,7 @@ func TestPushCounter(t *testing.T) { err := strg.Push(record) require.NoError(err) - require.Equal(value, strg.Data[record.RecordId()].Value) + require.Equal(value, strg.Data[record.RecordID()].Value) } func TestPushGauge(t *testing.T) { @@ -34,7 +34,7 @@ func TestPushGauge(t *testing.T) { err := strg.Push(record) require.NoError(err) - require.Equal(value, strg.Data[record.RecordId()].Value) + require.Equal(value, strg.Data[record.RecordID()].Value) } func TestPushWithSameName(t *testing.T) { @@ -53,8 +53,8 @@ func TestPushWithSameName(t *testing.T) { err2 := strg.Push(record2) require.NoError(err2) - require.Equal(counterValue, strg.Data[record1.RecordId()].Value) - require.Equal(gaugeValue, strg.Data[record2.RecordId()].Value) + require.Equal(counterValue, strg.Data[record1.RecordID()].Value) + require.Equal(gaugeValue, strg.Data[record2.RecordID()].Value) } func TestGet(t *testing.T) { @@ -67,7 +67,7 @@ func TestGet(t *testing.T) { err := strg.Push(record) require.NoError(err) - gotRecord, err := strg.Get(record.RecordId()) + gotRecord, err := strg.Get(record.RecordID()) require.NoError(err) require.Equal(value, gotRecord.Value) } diff --git a/internal/storage/record.go b/internal/storage/record.go index d030267..e4bf4c4 100644 --- a/internal/storage/record.go +++ b/internal/storage/record.go @@ -7,7 +7,7 @@ type Record struct { Value metrics.Metric } -func RecordId(name, kind string) string { +func RecordID(name, kind string) string { if len(name) == 0 || len(kind) == 0 { return "" } @@ -15,6 +15,6 @@ func RecordId(name, kind string) string { return name + "_" + kind } -func (r Record) RecordId() string { - return RecordId(r.Name, r.Value.Kind()) +func (r Record) RecordID() string { + return RecordID(r.Name, r.Value.Kind()) } diff --git a/internal/storage/record_test.go b/internal/storage/record_test.go index b24dad1..3a98258 100644 --- a/internal/storage/record_test.go +++ b/internal/storage/record_test.go @@ -14,16 +14,16 @@ func TestRecordId(t *testing.T) { record1 := storage.Record{Name: "test", Value: metrics.Counter(42)} record2 := storage.Record{Name: "test", Value: metrics.Gauge(42.42)} - require.Equal("test_counter", record1.RecordId()) - require.Equal("test_gauge", record2.RecordId()) + require.Equal("test_counter", record1.RecordID()) + require.Equal("test_gauge", record2.RecordID()) } func TestRecordIdWithEmptyName(t *testing.T) { require := require.New(t) - require.Equal("", storage.RecordId("", "counter")) + require.Equal("", storage.RecordID("", "counter")) } func TestRecordIdWithEmptyKind(t *testing.T) { require := require.New(t) - require.Equal("", storage.RecordId("test", "")) + require.Equal("", storage.RecordID("test", "")) } diff --git a/internal/validators/validators_test.go b/internal/validators/validators_test.go index f1ee287..bffd861 100644 --- a/internal/validators/validators_test.go +++ b/internal/validators/validators_test.go @@ -38,7 +38,6 @@ func TestEnsureNamePresent(t *testing.T) { func TestValidateName(t *testing.T) { type args struct { name string - kind string } tests := []struct { name string