diff --git a/go.mod b/go.mod index 0dff916..5ba7db0 100644 --- a/go.mod +++ b/go.mod @@ -5,12 +5,13 @@ go 1.18 require ( github.com/dop251/goja v0.0.0-20221019153710-09250e0eba20 github.com/linkedin/goavro/v2 v2.12.0 + github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c github.com/riferrei/srclient v0.5.4 github.com/santhosh-tekuri/jsonschema/v5 v5.0.1 github.com/segmentio/kafka-go v0.4.35 github.com/sirupsen/logrus v1.9.0 github.com/stretchr/testify v1.8.0 - go.k6.io/k6 v0.40.0 + go.k6.io/k6 v0.41.0 gopkg.in/guregu/null.v3 v3.5.0 ) @@ -20,13 +21,14 @@ require ( github.com/fatih/color v1.13.0 // indirect github.com/go-sourcemap/sourcemap v2.1.4-0.20211119122758-180fcef48034+incompatible // indirect github.com/golang/snappy v0.0.4 // indirect + github.com/josharian/intern v1.0.0 // indirect github.com/klauspost/compress v1.15.11 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.16 // indirect + github.com/mstoykov/atlas v0.0.0-20220808085829-90340e9998bd // indirect github.com/onsi/ginkgo v1.16.5 // indirect github.com/onsi/gomega v1.20.2 // indirect - github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c // indirect github.com/pierrec/lz4/v4 v4.1.17 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/serenize/snaker v0.0.0-20201027110005-a7ad2135616e // indirect @@ -34,7 +36,6 @@ require ( github.com/xdg/scram v1.0.5 // indirect github.com/xdg/stringprep v1.0.3 // indirect golang.org/x/crypto v0.1.0 // indirect - golang.org/x/net v0.1.0 // indirect golang.org/x/sync v0.1.0 // indirect golang.org/x/sys v0.1.0 // indirect golang.org/x/text v0.4.0 // indirect diff --git a/go.sum b/go.sum index 4225488..56b94f2 100644 --- a/go.sum +++ b/go.sum @@ -55,8 +55,6 @@ github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwu github.com/dlclark/regexp2 v1.7.0 h1:7lJfhqlPssTb1WQx4yvTHN0uElPEv52sbaECrAQxjAo= github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/dop251/goja v0.0.0-20211022113120-dc8c55024d06/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= -github.com/dop251/goja v0.0.0-20220815083517-0c74f9139fd6 h1:xHdUVG+c8SWJnct16Z3QJOVlaYo3OwoJyamo6kR6OL0= -github.com/dop251/goja v0.0.0-20220815083517-0c74f9139fd6/go.mod h1:yRkwfj0CBpOGre+TwBsqPV0IH0Pk73e4PXJOeNDboGs= github.com/dop251/goja v0.0.0-20221019153710-09250e0eba20 h1:AxWn8phZA9tjgDGKyDRbHtI6nCBkDu8UH17FCpSHRPA= github.com/dop251/goja v0.0.0-20221019153710-09250e0eba20/go.mod h1:yRkwfj0CBpOGre+TwBsqPV0IH0Pk73e4PXJOeNDboGs= github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= @@ -70,8 +68,8 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -144,13 +142,12 @@ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.15.7/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= -github.com/klauspost/compress v1.15.9 h1:wKRjX6JRtDdrE9qwa4b/Cip7ACOshUI4smpCQanqjSY= -github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/compress v1.15.11 h1:Lcadnb3RKGin4FYM/orgq0qde+nc15E5Cbqg4B9Sx9c= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= @@ -175,6 +172,8 @@ github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27k github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mccutchen/go-httpbin v1.1.2-0.20190116014521-c5cb2f4802fa h1:lx8ZnNPwjkXSzOROz0cg69RlErRXs+L3eDkggASWKLo= +github.com/mstoykov/atlas v0.0.0-20220808085829-90340e9998bd h1:x/wQ8/umYu2x0icx5wNNTSK1NlkYVmsgzQ+U6v4ijv0= +github.com/mstoykov/atlas v0.0.0-20220808085829-90340e9998bd/go.mod h1:9vRHVuLCjoFfE3GT06X0spdOAO+Zzo4AMjdIwUHBvAk= github.com/mstoykov/envconfig v1.4.1-0.20220114105314-765c6d8c76f1 h1:94EkGmhXrVUEal+uLwFUf4fMXPhZpM5tYxuIsxrCCbI= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= @@ -189,7 +188,6 @@ github.com/onsi/gomega v1.20.2 h1:8uQq0zMgLEfa0vRrrBgaJF2gyW9Da9BmfGV+OyUzfkY= github.com/onsi/gomega v1.20.2/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0= -github.com/pierrec/lz4/v4 v4.1.15 h1:MO0/ucJhngq7299dKLwIMtgTfbkoSPF6AoMYDd8Q4q0= github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pierrec/lz4/v4 v4.1.17 h1:kV4Ip+/hUBC+8T6+2EgburRtkE9ef4nbY3f4dFhGjMc= github.com/pierrec/lz4/v4 v4.1.17/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= @@ -203,7 +201,6 @@ github.com/riferrei/srclient v0.5.4/go.mod h1:vbkLmWcgYa7JgfPvuy/+K8fTS0p1bApqad github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 h1:TToq11gyfNlrMFZiYujSekIsPd9AmsA2Bj/iv+s4JHE= github.com/santhosh-tekuri/jsonschema/v5 v5.0.0/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H/cDPdvJ/SZJQLWWXWGrZ0= github.com/santhosh-tekuri/jsonschema/v5 v5.0.1 h1:HNLA3HtUIROrQwG1cuu5EYuqk3UEoJ61Dr/9xkd6sok= github.com/santhosh-tekuri/jsonschema/v5 v5.0.1/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H/cDPdvJ/SZJQLWWXWGrZ0= @@ -233,8 +230,8 @@ github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.k6.io/k6 v0.40.0 h1:Hb6VVg6mByxJvU9UnpQVhoCE1mXFOXoss9+y21apYgs= -go.k6.io/k6 v0.40.0/go.mod h1:cjDBWjCZ8K9Sq0UoGWx/NcJaw5k20PU4OPh7QlBWD0s= +go.k6.io/k6 v0.41.0 h1:w/J10BV3MGahDF3UsT3WESNBCpsw7soxj9GaLCGTf4I= +go.k6.io/k6 v0.41.0/go.mod h1:ZrgrR06UZbzZt9u+so/yQhlkJFH5gkJ3qCp1hwq1mEU= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -249,8 +246,6 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90 h1:Y/gsMcFOcR+6S6f3YeMKl5g+dZMEWqcz5Czj/GWYbkM= -golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -321,10 +316,7 @@ golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220706163947-c90051bbdb60/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b h1:PxfKdU9lEEDYjdIzOtC4qFWgkU2rGHdKlKowJSMN9h0= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.1.0 h1:hZ/3BUoy5aId7sCpA/Tc5lt8DkFgdVS2onTpJsZ/fl0= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -344,8 +336,6 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/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-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220907140024-f12130a52804 h1:0SH2R3f1b1VmIMG7BXbEZCBUu2dKmHschSmjqGUrW8A= -golang.org/x/sync v0.0.0-20220907140024-f12130a52804/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -393,8 +383,6 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220909162455-aba9fc2a8ff2 h1:wM1k/lXfpc5HdkJJyW9GELpd8ERGdnh8sMGL6Gzq3Ho= -golang.org/x/sys v0.0.0-20220909162455-aba9fc2a8ff2/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U= 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= @@ -406,15 +394,12 @@ 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.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= 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/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9 h1:ftMN5LMiBFjbzleLqtoBZk7KdJwhuybIU+FckUHgoyQ= -golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.1.0 h1:xYY+Bajn2a7VBmTM5GikTmnK8ZuX8YgnQCqZpbBNtmA= golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -548,7 +533,7 @@ google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.47.0 h1:9n77onPX5F3qfFCqjy9dhn8PbNQsIKeVU04J9G7umt8= +google.golang.org/grpc v1.49.0 h1:WTLtQzmQori5FUH25Pq4WT22oCsv8USpQ+F6rqtsmxw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/kafka_helpers_test.go b/kafka_helpers_test.go index 541b708..b783b73 100644 --- a/kafka_helpers_test.go +++ b/kafka_helpers_test.go @@ -6,6 +6,7 @@ import ( "testing" "github.com/dop251/goja" + "github.com/oxtoacart/bpool" kafkago "github.com/segmentio/kafka-go" "github.com/stretchr/testify/require" "go.k6.io/k6/js/common" @@ -15,6 +16,10 @@ import ( "gopkg.in/guregu/null.v3" ) +const ( + GoErrorPrefix = "GoError: " +) + // struct to keep all the things test need in one place. type kafkaTest struct { rt *goja.Runtime @@ -64,14 +69,21 @@ func (k *kafkaTest) moveToVUCode() error { samples := make(chan metrics.SampleContainer, 1000) // Save it, so we can reuse it in other tests k.samples = samples + + registry := metrics.NewRegistry() + state := &lib.State{ Group: rootGroup, Options: lib.Options{ UserAgent: null.StringFrom("TestUserAgent"), Paused: null.BoolFrom(false), }, - Samples: k.samples, - BuiltinMetrics: metrics.RegisterBuiltinMetrics(metrics.NewRegistry()), + BPool: bpool.NewBufferPool(1), + Samples: k.samples, + Tags: lib.NewVUStateTags(registry.RootTagSet().WithTagsFromMap(map[string]string{ + "group": rootGroup.Path, + })), + BuiltinMetrics: metrics.RegisterBuiltinMetrics(registry), } k.vu.StateField = state k.vu.InitEnvField = nil diff --git a/reader.go b/reader.go index 754c152..2fe467b 100644 --- a/reader.go +++ b/reader.go @@ -323,134 +323,193 @@ func (k *Kafka) reportReaderStats(currentStats kafkago.ReaderStats) { common.Throw(k.vu.Runtime(), err) } - sampleTags := metrics.IntoSampleTags(&map[string]string{ - "clientid": currentStats.ClientID, - "topic": currentStats.Topic, - "partition": currentStats.Partition, - }) + ctm := k.vu.State().Tags.GetCurrentValues() + sampleTags := ctm.Tags.With("topic", currentStats.Topic) + sampleTags = sampleTags.With("clientid", currentStats.ClientID) + sampleTags = sampleTags.With("partition", currentStats.Partition) now := time.Now() metrics.PushIfNotDone(ctx, state.Samples, metrics.ConnectedSamples{ Samples: []metrics.Sample{ { - Time: now, - Metric: k.metrics.ReaderDials, - Tags: sampleTags, - Value: float64(currentStats.Dials), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.ReaderDials, + Tags: sampleTags, + }, + Value: float64(currentStats.Dials), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.ReaderFetches, - Tags: sampleTags, - Value: float64(currentStats.Fetches), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.ReaderFetches, + Tags: sampleTags, + }, + Value: float64(currentStats.Fetches), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.ReaderMessages, - Tags: sampleTags, - Value: float64(currentStats.Messages), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.ReaderMessages, + Tags: sampleTags, + }, + Value: float64(currentStats.Messages), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.ReaderBytes, - Tags: sampleTags, - Value: float64(currentStats.Bytes), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.ReaderBytes, + Tags: sampleTags, + }, + Value: float64(currentStats.Bytes), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.ReaderRebalances, - Tags: sampleTags, - Value: float64(currentStats.Rebalances), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.ReaderRebalances, + Tags: sampleTags, + }, + Value: float64(currentStats.Rebalances), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.ReaderTimeouts, - Tags: sampleTags, - Value: float64(currentStats.Timeouts), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.ReaderTimeouts, + Tags: sampleTags, + }, + Value: float64(currentStats.Timeouts), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.ReaderErrors, - Tags: sampleTags, - Value: float64(currentStats.Errors), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.ReaderErrors, + Tags: sampleTags, + }, + Value: float64(currentStats.Errors), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.ReaderDialTime, - Tags: sampleTags, - Value: metrics.D(currentStats.DialTime.Avg), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.ReaderDialTime, + Tags: sampleTags, + }, + Value: metrics.D(currentStats.DialTime.Avg), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.ReaderReadTime, - Tags: sampleTags, - Value: metrics.D(currentStats.ReadTime.Avg), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.ReaderReadTime, + Tags: sampleTags, + }, + Value: metrics.D(currentStats.ReadTime.Avg), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.ReaderWaitTime, - Tags: sampleTags, - Value: metrics.D(currentStats.WaitTime.Avg), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.ReaderWaitTime, + Tags: sampleTags, + }, + Value: metrics.D(currentStats.WaitTime.Avg), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.ReaderFetchSize, - Tags: sampleTags, - Value: float64(currentStats.FetchSize.Avg), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.ReaderFetchSize, + Tags: sampleTags, + }, + Value: float64(currentStats.FetchSize.Avg), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.ReaderFetchBytes, - Tags: sampleTags, - Value: float64(currentStats.FetchBytes.Min), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.ReaderFetchBytes, + Tags: sampleTags, + }, + Value: float64(currentStats.FetchBytes.Min), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.ReaderFetchBytes, - Tags: sampleTags, - Value: float64(currentStats.FetchBytes.Max), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.ReaderFetchBytes, + Tags: sampleTags, + }, + Value: float64(currentStats.FetchBytes.Max), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.ReaderOffset, - Tags: sampleTags, - Value: float64(currentStats.Offset), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.ReaderOffset, + Tags: sampleTags, + }, + Value: float64(currentStats.Offset), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.ReaderLag, - Tags: sampleTags, - Value: float64(currentStats.Lag), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.ReaderLag, + Tags: sampleTags, + }, + Value: float64(currentStats.Lag), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.ReaderMinBytes, - Tags: sampleTags, - Value: float64(currentStats.MinBytes), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.ReaderMinBytes, + Tags: sampleTags, + }, + Value: float64(currentStats.MinBytes), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.ReaderMaxBytes, - Tags: sampleTags, - Value: float64(currentStats.MaxBytes), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.ReaderMaxBytes, + Tags: sampleTags, + }, + Value: float64(currentStats.MaxBytes), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.ReaderMaxWait, - Tags: sampleTags, - Value: metrics.D(currentStats.MaxWait), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.ReaderMaxWait, + Tags: sampleTags, + }, + Value: metrics.D(currentStats.MaxWait), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.ReaderQueueLength, - Tags: sampleTags, - Value: float64(currentStats.QueueLength), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.ReaderQueueLength, + Tags: sampleTags, + }, + Value: float64(currentStats.QueueLength), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.ReaderQueueCapacity, - Tags: sampleTags, - Value: float64(currentStats.QueueCapacity), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.ReaderQueueCapacity, + Tags: sampleTags, + }, + Value: float64(currentStats.QueueCapacity), + Metadata: ctm.Metadata, }, }, Tags: sampleTags, diff --git a/schema_registry_test.go b/schema_registry_test.go index 8978ca5..c80f6d0 100644 --- a/schema_registry_test.go +++ b/schema_registry_test.go @@ -33,7 +33,7 @@ func TestDecodeWireFormatFails(t *testing.T) { err := recover() assert.Equal(t, err.(*goja.Object).ToString().String(), - "Invalid message: message too short to contain schema id.") + GoErrorPrefix+"Invalid message: message too short to contain schema id.") }() test.module.Kafka.decodeWireFormat(encoded) diff --git a/serdes_test.go b/serdes_test.go index 2f4c54d..772a770 100644 --- a/serdes_test.go +++ b/serdes_test.go @@ -232,7 +232,9 @@ func TestSerializeFails(t *testing.T) { t.Run("serialize fails", func(t *testing.T) { defer func(t *testing.T) { err := recover() - assert.Equal(t, err.(*goja.Object).ToString().String(), testData.err.Error()) + assert.Equal(t, + err.(*goja.Object).ToString().String(), + GoErrorPrefix+testData.err.Error()) }(t) err := test.module.Kafka.serialize(testData.container) diff --git a/writer.go b/writer.go index bfd6e8a..2d1b6c1 100644 --- a/writer.go +++ b/writer.go @@ -272,109 +272,156 @@ func (k *Kafka) reportWriterStats(currentStats kafkago.WriterStats) { common.Throw(k.vu.Runtime(), err) } - sampleTags := metrics.IntoSampleTags(&map[string]string{ - "topic": currentStats.Topic, - }) + ctm := k.vu.State().Tags.GetCurrentValues() + sampleTags := ctm.Tags.With("topic", currentStats.Topic) now := time.Now() metrics.PushIfNotDone(ctx, state.Samples, metrics.ConnectedSamples{ Samples: []metrics.Sample{ { - Time: now, - Metric: k.metrics.WriterWrites, - Tags: sampleTags, - Value: float64(currentStats.Writes), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.WriterWrites, + Tags: sampleTags, + }, + Value: float64(currentStats.Writes), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.WriterMessages, - Tags: sampleTags, - Value: float64(currentStats.Messages), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.WriterMessages, + Tags: sampleTags, + }, + Value: float64(currentStats.Messages), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.WriterBytes, - Tags: sampleTags, - Value: float64(currentStats.Bytes), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.WriterBytes, + Tags: sampleTags, + }, + Value: float64(currentStats.Bytes), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.WriterErrors, - Tags: sampleTags, - Value: float64(currentStats.Errors), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.WriterErrors, + Tags: sampleTags, + }, + Value: float64(currentStats.Errors), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.WriterWriteTime, - Tags: sampleTags, - Value: metrics.D(currentStats.WriteTime.Avg), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.WriterWriteTime, + Tags: sampleTags, + }, + Value: metrics.D(currentStats.WriteTime.Avg), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.WriterWaitTime, - Tags: sampleTags, - Value: metrics.D(currentStats.WaitTime.Avg), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.WriterWaitTime, + Tags: sampleTags, + }, + Value: metrics.D(currentStats.WaitTime.Avg), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.WriterRetries, - Tags: sampleTags, - Value: float64(currentStats.Retries.Avg), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.WriterRetries, + Tags: sampleTags, + }, + Value: float64(currentStats.Retries.Avg), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.WriterBatchSize, - Tags: sampleTags, - Value: float64(currentStats.BatchSize.Avg), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.WriterBatchSize, + Tags: sampleTags, + }, + Value: float64(currentStats.BatchSize.Avg), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.WriterBatchBytes, - Tags: sampleTags, - Value: float64(currentStats.BatchBytes.Avg), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.WriterBatchBytes, + Tags: sampleTags, + }, + Value: float64(currentStats.BatchBytes.Avg), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.WriterMaxAttempts, - Tags: sampleTags, - Value: float64(currentStats.MaxAttempts), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.WriterMaxAttempts, + Tags: sampleTags, + }, + Value: float64(currentStats.MaxAttempts), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.WriterMaxBatchSize, - Tags: sampleTags, - Value: float64(currentStats.MaxBatchSize), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.WriterMaxBatchSize, + Tags: sampleTags, + }, + Value: float64(currentStats.MaxBatchSize), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.WriterBatchTimeout, - Tags: sampleTags, - Value: float64(currentStats.BatchTimeout), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.WriterBatchTimeout, + Tags: sampleTags, + }, + Value: float64(currentStats.BatchTimeout), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.WriterReadTimeout, - Tags: sampleTags, - Value: float64(currentStats.ReadTimeout), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.WriterReadTimeout, + Tags: sampleTags, + }, + Value: float64(currentStats.ReadTimeout), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.WriterWriteTimeout, - Tags: sampleTags, - Value: float64(currentStats.WriteTimeout), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.WriterWriteTimeout, + Tags: sampleTags, + }, + Value: float64(currentStats.WriteTimeout), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.WriterRequiredAcks, - Tags: sampleTags, - Value: float64(currentStats.RequiredAcks), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.WriterRequiredAcks, + Tags: sampleTags, + }, + Value: float64(currentStats.RequiredAcks), + Metadata: ctm.Metadata, }, { - Time: now, - Metric: k.metrics.WriterAsync, - Tags: sampleTags, - Value: metrics.B(currentStats.Async), + Time: now, + TimeSeries: metrics.TimeSeries{ + Metric: k.metrics.WriterAsync, + Tags: sampleTags, + }, + Value: metrics.B(currentStats.Async), + Metadata: ctm.Metadata, }, }, Tags: sampleTags,