From cd9ac02052cf420ade5839ef5de1ce867a1cddb1 Mon Sep 17 00:00:00 2001 From: Guilherme Salazar Date: Sun, 22 Dec 2024 12:54:12 -0300 Subject: [PATCH 1/4] tests(helpers): reorganize grpc target service --- .github/workflows/build.yml | 2 +- .../28-grpc-gateway/01-proxy_spec.lua | 4 +- spec/fixtures/grpc/.gitignore | 1 + spec/fixtures/grpc/go.mod | 18 + spec/fixtures/grpc/{target => }/go.sum | 67 ++- .../grpc/{ => proto}/direct_imports.proto | 0 .../{ => proto}/google/api/annotations.proto | 0 .../grpc/{ => proto}/google/api/http.proto | 0 .../{ => proto}/google/api/httpbody.proto | 0 .../{ => proto}/google/protobuf/any.proto | 0 .../{ => proto}/google/protobuf/api.proto | 0 .../google/protobuf/descriptor.proto | 0 .../google/protobuf/duration.proto | 0 .../{ => proto}/google/protobuf/empty.proto | 0 .../google/protobuf/field_mask.proto | 0 .../google/protobuf/source_context.proto | 0 .../{ => proto}/google/protobuf/struct.proto | 0 .../google/protobuf/timestamp.proto | 0 .../{ => proto}/google/protobuf/type.proto | 0 .../google/protobuf/wrappers.proto | 0 spec/fixtures/grpc/{ => proto}/hello.proto | 0 .../grpc/{ => proto}/helloworld.proto | 0 .../{ => proto}/second_level_imports.proto | 0 .../grpc/{ => proto}/targetservice.proto | 8 + .../grpc/{target/grpc-target.go => target.go} | 4 +- spec/fixtures/grpc/target/go.mod | 10 - .../targetservice/targetservice.pb.go | 488 ++++++++++-------- .../targetservice/targetservice_grpc.pb.go | 98 +++- spec/internal/constants.lua | 4 +- 29 files changed, 428 insertions(+), 276 deletions(-) create mode 100644 spec/fixtures/grpc/.gitignore create mode 100644 spec/fixtures/grpc/go.mod rename spec/fixtures/grpc/{target => }/go.sum (77%) rename spec/fixtures/grpc/{ => proto}/direct_imports.proto (100%) rename spec/fixtures/grpc/{ => proto}/google/api/annotations.proto (100%) rename spec/fixtures/grpc/{ => proto}/google/api/http.proto (100%) rename spec/fixtures/grpc/{ => proto}/google/api/httpbody.proto (100%) rename spec/fixtures/grpc/{ => proto}/google/protobuf/any.proto (100%) rename spec/fixtures/grpc/{ => proto}/google/protobuf/api.proto (100%) rename spec/fixtures/grpc/{ => proto}/google/protobuf/descriptor.proto (100%) rename spec/fixtures/grpc/{ => proto}/google/protobuf/duration.proto (100%) rename spec/fixtures/grpc/{ => proto}/google/protobuf/empty.proto (100%) rename spec/fixtures/grpc/{ => proto}/google/protobuf/field_mask.proto (100%) rename spec/fixtures/grpc/{ => proto}/google/protobuf/source_context.proto (100%) rename spec/fixtures/grpc/{ => proto}/google/protobuf/struct.proto (100%) rename spec/fixtures/grpc/{ => proto}/google/protobuf/timestamp.proto (100%) rename spec/fixtures/grpc/{ => proto}/google/protobuf/type.proto (100%) rename spec/fixtures/grpc/{ => proto}/google/protobuf/wrappers.proto (100%) rename spec/fixtures/grpc/{ => proto}/hello.proto (100%) rename spec/fixtures/grpc/{ => proto}/helloworld.proto (100%) rename spec/fixtures/grpc/{ => proto}/second_level_imports.proto (100%) rename spec/fixtures/grpc/{ => proto}/targetservice.proto (93%) rename spec/fixtures/grpc/{target/grpc-target.go => target.go} (96%) delete mode 100644 spec/fixtures/grpc/target/go.mod rename spec/fixtures/grpc/{target => }/targetservice/targetservice.pb.go (54%) rename spec/fixtures/grpc/{target => }/targetservice/targetservice_grpc.pb.go (68%) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d7007460c48..64cec99d39f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -44,7 +44,7 @@ jobs: - name: Install packages if: steps.cache-deps.outputs.cache-hit != 'true' - run: sudo apt update && sudo apt install libyaml-dev valgrind libprotobuf-dev + run: sudo apt update && sudo apt install libyaml-dev valgrind libprotobuf-dev protobuf-compiler - name: Build Kong if: steps.cache-deps.outputs.cache-hit != 'true' diff --git a/spec/03-plugins/28-grpc-gateway/01-proxy_spec.lua b/spec/03-plugins/28-grpc-gateway/01-proxy_spec.lua index 88741562b01..87be4e7c8a5 100644 --- a/spec/03-plugins/28-grpc-gateway/01-proxy_spec.lua +++ b/spec/03-plugins/28-grpc-gateway/01-proxy_spec.lua @@ -44,7 +44,7 @@ for _, strategy in helpers.each_strategy() do route = route1, name = "grpc-gateway", config = { - proto = "./spec/fixtures/grpc/targetservice.proto", + proto = "./spec/fixtures/grpc/proto/targetservice.proto", }, }) @@ -64,7 +64,7 @@ for _, strategy in helpers.each_strategy() do route = mock_grpc_route, name = "grpc-gateway", config = { - proto = "./spec/fixtures/grpc/targetservice.proto", + proto = "./spec/fixtures/grpc/proto/targetservice.proto", }, }) diff --git a/spec/fixtures/grpc/.gitignore b/spec/fixtures/grpc/.gitignore new file mode 100644 index 00000000000..eb5a316cbd1 --- /dev/null +++ b/spec/fixtures/grpc/.gitignore @@ -0,0 +1 @@ +target diff --git a/spec/fixtures/grpc/go.mod b/spec/fixtures/grpc/go.mod new file mode 100644 index 00000000000..ccca18af411 --- /dev/null +++ b/spec/fixtures/grpc/go.mod @@ -0,0 +1,18 @@ +module grpc + +go 1.21 + +toolchain go1.22.10 + +require ( + github.com/golang/protobuf v1.5.4 + google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea + google.golang.org/grpc v1.65.1 + google.golang.org/protobuf v1.34.1 +) + +require ( + golang.org/x/net v0.25.0 // indirect + golang.org/x/sys v0.20.0 // indirect + golang.org/x/text v0.15.0 // indirect +) diff --git a/spec/fixtures/grpc/target/go.sum b/spec/fixtures/grpc/go.sum similarity index 77% rename from spec/fixtures/grpc/target/go.sum rename to spec/fixtures/grpc/go.sum index 780a5f3fbbb..144c7f25755 100644 --- a/spec/fixtures/grpc/target/go.sum +++ b/spec/fixtures/grpc/go.sum @@ -1,33 +1,44 @@ +cel.dev/expr v0.15.0 h1:O1jzfJCQBfL5BFoYktaxwIhuttaQPsVWerH9/EEKx0w= +cel.dev/expr v0.15.0/go.mod h1:TRSuuV7DlVCE/uwv5QbAiW/v8l5O8C4eEPHeu7gf7Sg= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0 h1:eOI3/cP2VTU6uZLDYAoic+eyzzB9YyGmJ7eIjl8rOPg= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= +cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= +github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403 h1:cqQfy1jclcSy/FwLjemeg3SR1yaINm74aQyupQ0Bl8M= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed h1:OZmjad4L3H8ncOIR8rnb5MREYqG8ixi5+WbeUsquF0c= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b h1:ga8SEFjZ60pxLcmhnThWgvH2wg8376yUJmPhEH4H3kw= +github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= 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/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0 h1:dulLQAYQFYtG5MTplgNGHWuV2D+OBD+Z8lmDBmbLg+s= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A= +github.com/envoyproxy/go-control-plane v0.12.0 h1:4X+VP1GHd1Mhj6IB5mMeGbLCleqxjletLK6K0rbxyZI= +github.com/envoyproxy/go-control-plane v0.12.0/go.mod h1:ZBTaoJ23lqITozF0M6G4/IragXCQKCnYbmlmtHvwRG0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= +github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -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/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= +github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/mock v1.1.1 h1:G5FRp8JnTd7RQH5kemVNlMeyXQAztQ3mOWV95KxsXH8= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -42,17 +53,20 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= +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/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -71,8 +85,9 @@ go.opentelemetry.io/proto/otlp v0.7.0 h1:rwOQPCuKAKmwGKq2aVNnYIibI6wnV7EvzgfTCzc go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= 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 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/exp v0.0.0-20190121172915-509febef88a4 h1:c2HOrn5iMezYjSlGPncknSEr/8x5LELb/ilJbXi9DEA= 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= @@ -81,8 +96,9 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -91,31 +107,37 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn 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-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 h1:4nGaVu0QrbjT/AK2PRLuQfQuh6DJve+pELhqTdAj3x0= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= +golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/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-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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/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 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= +golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -123,8 +145,9 @@ golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.1.4 h1:cVngSRcfgyZCzys3KYOpCFa+4dqX/Oub9tAq00ttGVs= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= 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= @@ -139,14 +162,19 @@ google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea h1:8ZyCcgugUqamxp/vZSEJw9CMy7VZlSWYJLLJPi/dSDA= google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= 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.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.39.0 h1:Klz8I9kdtkIN6EpHHUOMLCYhTn/2WAe5a0s1hcBkdTI= google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.65.1 h1:toSN4j5/Xju+HVovfaY5g1YZVuJeHzQZhP8eJ0L0f1I= +google.golang.org/grpc v1.65.1/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= 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= @@ -158,8 +186,9 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= +google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= 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.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/spec/fixtures/grpc/direct_imports.proto b/spec/fixtures/grpc/proto/direct_imports.proto similarity index 100% rename from spec/fixtures/grpc/direct_imports.proto rename to spec/fixtures/grpc/proto/direct_imports.proto diff --git a/spec/fixtures/grpc/google/api/annotations.proto b/spec/fixtures/grpc/proto/google/api/annotations.proto similarity index 100% rename from spec/fixtures/grpc/google/api/annotations.proto rename to spec/fixtures/grpc/proto/google/api/annotations.proto diff --git a/spec/fixtures/grpc/google/api/http.proto b/spec/fixtures/grpc/proto/google/api/http.proto similarity index 100% rename from spec/fixtures/grpc/google/api/http.proto rename to spec/fixtures/grpc/proto/google/api/http.proto diff --git a/spec/fixtures/grpc/google/api/httpbody.proto b/spec/fixtures/grpc/proto/google/api/httpbody.proto similarity index 100% rename from spec/fixtures/grpc/google/api/httpbody.proto rename to spec/fixtures/grpc/proto/google/api/httpbody.proto diff --git a/spec/fixtures/grpc/google/protobuf/any.proto b/spec/fixtures/grpc/proto/google/protobuf/any.proto similarity index 100% rename from spec/fixtures/grpc/google/protobuf/any.proto rename to spec/fixtures/grpc/proto/google/protobuf/any.proto diff --git a/spec/fixtures/grpc/google/protobuf/api.proto b/spec/fixtures/grpc/proto/google/protobuf/api.proto similarity index 100% rename from spec/fixtures/grpc/google/protobuf/api.proto rename to spec/fixtures/grpc/proto/google/protobuf/api.proto diff --git a/spec/fixtures/grpc/google/protobuf/descriptor.proto b/spec/fixtures/grpc/proto/google/protobuf/descriptor.proto similarity index 100% rename from spec/fixtures/grpc/google/protobuf/descriptor.proto rename to spec/fixtures/grpc/proto/google/protobuf/descriptor.proto diff --git a/spec/fixtures/grpc/google/protobuf/duration.proto b/spec/fixtures/grpc/proto/google/protobuf/duration.proto similarity index 100% rename from spec/fixtures/grpc/google/protobuf/duration.proto rename to spec/fixtures/grpc/proto/google/protobuf/duration.proto diff --git a/spec/fixtures/grpc/google/protobuf/empty.proto b/spec/fixtures/grpc/proto/google/protobuf/empty.proto similarity index 100% rename from spec/fixtures/grpc/google/protobuf/empty.proto rename to spec/fixtures/grpc/proto/google/protobuf/empty.proto diff --git a/spec/fixtures/grpc/google/protobuf/field_mask.proto b/spec/fixtures/grpc/proto/google/protobuf/field_mask.proto similarity index 100% rename from spec/fixtures/grpc/google/protobuf/field_mask.proto rename to spec/fixtures/grpc/proto/google/protobuf/field_mask.proto diff --git a/spec/fixtures/grpc/google/protobuf/source_context.proto b/spec/fixtures/grpc/proto/google/protobuf/source_context.proto similarity index 100% rename from spec/fixtures/grpc/google/protobuf/source_context.proto rename to spec/fixtures/grpc/proto/google/protobuf/source_context.proto diff --git a/spec/fixtures/grpc/google/protobuf/struct.proto b/spec/fixtures/grpc/proto/google/protobuf/struct.proto similarity index 100% rename from spec/fixtures/grpc/google/protobuf/struct.proto rename to spec/fixtures/grpc/proto/google/protobuf/struct.proto diff --git a/spec/fixtures/grpc/google/protobuf/timestamp.proto b/spec/fixtures/grpc/proto/google/protobuf/timestamp.proto similarity index 100% rename from spec/fixtures/grpc/google/protobuf/timestamp.proto rename to spec/fixtures/grpc/proto/google/protobuf/timestamp.proto diff --git a/spec/fixtures/grpc/google/protobuf/type.proto b/spec/fixtures/grpc/proto/google/protobuf/type.proto similarity index 100% rename from spec/fixtures/grpc/google/protobuf/type.proto rename to spec/fixtures/grpc/proto/google/protobuf/type.proto diff --git a/spec/fixtures/grpc/google/protobuf/wrappers.proto b/spec/fixtures/grpc/proto/google/protobuf/wrappers.proto similarity index 100% rename from spec/fixtures/grpc/google/protobuf/wrappers.proto rename to spec/fixtures/grpc/proto/google/protobuf/wrappers.proto diff --git a/spec/fixtures/grpc/hello.proto b/spec/fixtures/grpc/proto/hello.proto similarity index 100% rename from spec/fixtures/grpc/hello.proto rename to spec/fixtures/grpc/proto/hello.proto diff --git a/spec/fixtures/grpc/helloworld.proto b/spec/fixtures/grpc/proto/helloworld.proto similarity index 100% rename from spec/fixtures/grpc/helloworld.proto rename to spec/fixtures/grpc/proto/helloworld.proto diff --git a/spec/fixtures/grpc/second_level_imports.proto b/spec/fixtures/grpc/proto/second_level_imports.proto similarity index 100% rename from spec/fixtures/grpc/second_level_imports.proto rename to spec/fixtures/grpc/proto/second_level_imports.proto diff --git a/spec/fixtures/grpc/targetservice.proto b/spec/fixtures/grpc/proto/targetservice.proto similarity index 93% rename from spec/fixtures/grpc/targetservice.proto rename to spec/fixtures/grpc/proto/targetservice.proto index e2f887fecce..949b61670e9 100644 --- a/spec/fixtures/grpc/targetservice.proto +++ b/spec/fixtures/grpc/proto/targetservice.proto @@ -51,6 +51,12 @@ service Bouncer { body: "*" }; } + + rpc EchoHeaders(Void) returns (Headers) { + option (google.api.http) = { + get: "/v1/echoheaders" + }; + } } @@ -93,3 +99,5 @@ message EchoMsg { repeated string array = 1; string nullable = 2; } + +message Void {} diff --git a/spec/fixtures/grpc/target/grpc-target.go b/spec/fixtures/grpc/target.go similarity index 96% rename from spec/fixtures/grpc/target/grpc-target.go rename to spec/fixtures/grpc/target.go index de15cd4cad8..c7d1174d8f6 100644 --- a/spec/fixtures/grpc/target/grpc-target.go +++ b/spec/fixtures/grpc/target.go @@ -7,14 +7,14 @@ import ( "net" "time" - pb "target/targetservice" + pb "grpc/targetservice" "google.golang.org/grpc" "google.golang.org/protobuf/types/known/timestamppb" ) const ( - port = ":15010" + port = "localhost:15010" ) type server struct { diff --git a/spec/fixtures/grpc/target/go.mod b/spec/fixtures/grpc/target/go.mod deleted file mode 100644 index 24a43b891d4..00000000000 --- a/spec/fixtures/grpc/target/go.mod +++ /dev/null @@ -1,10 +0,0 @@ -module target - -go 1.15 - -require ( - github.com/golang/protobuf v1.5.2 - google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea - google.golang.org/grpc v1.39.0 - google.golang.org/protobuf v1.27.1 -) diff --git a/spec/fixtures/grpc/target/targetservice/targetservice.pb.go b/spec/fixtures/grpc/targetservice/targetservice.pb.go similarity index 54% rename from spec/fixtures/grpc/target/targetservice/targetservice.pb.go rename to spec/fixtures/grpc/targetservice/targetservice.pb.go index 43cf24212bd..def19b1abaa 100644 --- a/spec/fixtures/grpc/target/targetservice/targetservice.pb.go +++ b/spec/fixtures/grpc/targetservice/targetservice.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.28.1 -// protoc v3.21.7 +// protoc-gen-go v1.36.1 +// protoc v5.29.2 // source: targetservice.proto package targetservice @@ -23,21 +23,18 @@ const ( ) type HelloRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Greeting string `protobuf:"bytes,1,opt,name=greeting,proto3" json:"greeting,omitempty"` + BooleanTest bool `protobuf:"varint,2,opt,name=boolean_test,json=booleanTest,proto3" json:"boolean_test,omitempty"` unknownFields protoimpl.UnknownFields - - Greeting string `protobuf:"bytes,1,opt,name=greeting,proto3" json:"greeting,omitempty"` - BooleanTest bool `protobuf:"varint,2,opt,name=boolean_test,json=booleanTest,proto3" json:"boolean_test,omitempty"` + sizeCache protoimpl.SizeCache } func (x *HelloRequest) Reset() { *x = HelloRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_targetservice_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_targetservice_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HelloRequest) String() string { @@ -48,7 +45,7 @@ func (*HelloRequest) ProtoMessage() {} func (x *HelloRequest) ProtoReflect() protoreflect.Message { mi := &file_targetservice_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -78,21 +75,18 @@ func (x *HelloRequest) GetBooleanTest() bool { } type HelloResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Reply string `protobuf:"bytes,1,opt,name=reply,proto3" json:"reply,omitempty"` + BooleanTest bool `protobuf:"varint,2,opt,name=boolean_test,json=booleanTest,proto3" json:"boolean_test,omitempty"` unknownFields protoimpl.UnknownFields - - Reply string `protobuf:"bytes,1,opt,name=reply,proto3" json:"reply,omitempty"` - BooleanTest bool `protobuf:"varint,2,opt,name=boolean_test,json=booleanTest,proto3" json:"boolean_test,omitempty"` + sizeCache protoimpl.SizeCache } func (x *HelloResponse) Reset() { *x = HelloResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_targetservice_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_targetservice_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *HelloResponse) String() string { @@ -103,7 +97,7 @@ func (*HelloResponse) ProtoMessage() {} func (x *HelloResponse) ProtoReflect() protoreflect.Message { mi := &file_targetservice_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -133,22 +127,19 @@ func (x *HelloResponse) GetBooleanTest() bool { } type BallIn struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` + When *timestamp.Timestamp `protobuf:"bytes,2,opt,name=when,proto3" json:"when,omitempty"` + Now *timestamp.Timestamp `protobuf:"bytes,3,opt,name=now,proto3" json:"now,omitempty"` unknownFields protoimpl.UnknownFields - - Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` - When *timestamp.Timestamp `protobuf:"bytes,2,opt,name=when,proto3" json:"when,omitempty"` - Now *timestamp.Timestamp `protobuf:"bytes,3,opt,name=now,proto3" json:"now,omitempty"` + sizeCache protoimpl.SizeCache } func (x *BallIn) Reset() { *x = BallIn{} - if protoimpl.UnsafeEnabled { - mi := &file_targetservice_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_targetservice_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BallIn) String() string { @@ -159,7 +150,7 @@ func (*BallIn) ProtoMessage() {} func (x *BallIn) ProtoReflect() protoreflect.Message { mi := &file_targetservice_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -196,22 +187,19 @@ func (x *BallIn) GetNow() *timestamp.Timestamp { } type BallOut struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Reply string `protobuf:"bytes,1,opt,name=reply,proto3" json:"reply,omitempty"` + TimeMessage string `protobuf:"bytes,2,opt,name=time_message,json=timeMessage,proto3" json:"time_message,omitempty"` + Now *timestamp.Timestamp `protobuf:"bytes,3,opt,name=now,proto3" json:"now,omitempty"` unknownFields protoimpl.UnknownFields - - Reply string `protobuf:"bytes,1,opt,name=reply,proto3" json:"reply,omitempty"` - TimeMessage string `protobuf:"bytes,2,opt,name=time_message,json=timeMessage,proto3" json:"time_message,omitempty"` - Now *timestamp.Timestamp `protobuf:"bytes,3,opt,name=now,proto3" json:"now,omitempty"` + sizeCache protoimpl.SizeCache } func (x *BallOut) Reset() { *x = BallOut{} - if protoimpl.UnsafeEnabled { - mi := &file_targetservice_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_targetservice_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BallOut) String() string { @@ -222,7 +210,7 @@ func (*BallOut) ProtoMessage() {} func (x *BallOut) ProtoReflect() protoreflect.Message { mi := &file_targetservice_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -259,21 +247,18 @@ func (x *BallOut) GetNow() *timestamp.Timestamp { } type Limb struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count int32 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"` + Endings string `protobuf:"bytes,2,opt,name=endings,proto3" json:"endings,omitempty"` unknownFields protoimpl.UnknownFields - - Count int32 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"` - Endings string `protobuf:"bytes,2,opt,name=endings,proto3" json:"endings,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Limb) Reset() { *x = Limb{} - if protoimpl.UnsafeEnabled { - mi := &file_targetservice_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_targetservice_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Limb) String() string { @@ -284,7 +269,7 @@ func (*Limb) ProtoMessage() {} func (x *Limb) ProtoReflect() protoreflect.Message { mi := &file_targetservice_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -314,23 +299,20 @@ func (x *Limb) GetEndings() string { } type Body struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Hands *Limb `protobuf:"bytes,2,opt,name=hands,proto3" json:"hands,omitempty"` + Legs *Limb `protobuf:"bytes,3,opt,name=legs,proto3" json:"legs,omitempty"` + Tail *Limb `protobuf:"bytes,4,opt,name=tail,proto3" json:"tail,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Hands *Limb `protobuf:"bytes,2,opt,name=hands,proto3" json:"hands,omitempty"` - Legs *Limb `protobuf:"bytes,3,opt,name=legs,proto3" json:"legs,omitempty"` - Tail *Limb `protobuf:"bytes,4,opt,name=tail,proto3" json:"tail,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Body) Reset() { *x = Body{} - if protoimpl.UnsafeEnabled { - mi := &file_targetservice_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_targetservice_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Body) String() string { @@ -341,7 +323,7 @@ func (*Body) ProtoMessage() {} func (x *Body) ProtoReflect() protoreflect.Message { mi := &file_targetservice_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -385,21 +367,18 @@ func (x *Body) GetTail() *Limb { } type EchoMsg struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Array []string `protobuf:"bytes,1,rep,name=array,proto3" json:"array,omitempty"` + Nullable string `protobuf:"bytes,2,opt,name=nullable,proto3" json:"nullable,omitempty"` unknownFields protoimpl.UnknownFields - - Array []string `protobuf:"bytes,1,rep,name=array,proto3" json:"array,omitempty"` - Nullable string `protobuf:"bytes,2,opt,name=nullable,proto3" json:"nullable,omitempty"` + sizeCache protoimpl.SizeCache } func (x *EchoMsg) Reset() { *x = EchoMsg{} - if protoimpl.UnsafeEnabled { - mi := &file_targetservice_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_targetservice_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EchoMsg) String() string { @@ -410,7 +389,7 @@ func (*EchoMsg) ProtoMessage() {} func (x *EchoMsg) ProtoReflect() protoreflect.Message { mi := &file_targetservice_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -439,6 +418,138 @@ func (x *EchoMsg) GetNullable() string { return "" } +type Header struct { + state protoimpl.MessageState `protogen:"open.v1"` + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Header) Reset() { + *x = Header{} + mi := &file_targetservice_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Header) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Header) ProtoMessage() {} + +func (x *Header) ProtoReflect() protoreflect.Message { + mi := &file_targetservice_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Header.ProtoReflect.Descriptor instead. +func (*Header) Descriptor() ([]byte, []int) { + return file_targetservice_proto_rawDescGZIP(), []int{7} +} + +func (x *Header) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *Header) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +type Headers struct { + state protoimpl.MessageState `protogen:"open.v1"` + Headers []*Header `protobuf:"bytes,1,rep,name=headers,proto3" json:"headers,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Headers) Reset() { + *x = Headers{} + mi := &file_targetservice_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Headers) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Headers) ProtoMessage() {} + +func (x *Headers) ProtoReflect() protoreflect.Message { + mi := &file_targetservice_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Headers.ProtoReflect.Descriptor instead. +func (*Headers) Descriptor() ([]byte, []int) { + return file_targetservice_proto_rawDescGZIP(), []int{8} +} + +func (x *Headers) GetHeaders() []*Header { + if x != nil { + return x.Headers + } + return nil +} + +type Void struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Void) Reset() { + *x = Void{} + mi := &file_targetservice_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Void) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Void) ProtoMessage() {} + +func (x *Void) ProtoReflect() protoreflect.Message { + mi := &file_targetservice_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Void.ProtoReflect.Descriptor instead. +func (*Void) Descriptor() ([]byte, []int) { + return file_targetservice_proto_rawDescGZIP(), []int{9} +} + var File_targetservice_proto protoreflect.FileDescriptor var file_targetservice_proto_rawDesc = []byte{ @@ -490,40 +601,53 @@ var file_targetservice_proto_rawDesc = []byte{ 0x0a, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, - 0x32, 0x80, 0x04, 0x0a, 0x07, 0x42, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x12, 0x9f, 0x01, 0x0a, - 0x08, 0x53, 0x61, 0x79, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x1b, 0x2e, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x58, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x12, 0x17, 0x2f, 0x76, - 0x31, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x65, 0x65, - 0x74, 0x69, 0x6e, 0x67, 0x7d, 0x3a, 0x01, 0x2a, 0x5a, 0x34, 0x12, 0x21, 0x2f, 0x76, 0x31, 0x2f, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, - 0x7b, 0x67, 0x72, 0x65, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x3d, 0x2a, 0x2a, 0x7d, 0x5a, 0x0f, 0x22, - 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x12, 0x6a, - 0x0a, 0x0d, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, + 0x22, 0x30, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0x3a, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x0a, + 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x06, + 0x0a, 0x04, 0x56, 0x6f, 0x69, 0x64, 0x32, 0xd5, 0x04, 0x0a, 0x07, 0x42, 0x6f, 0x75, 0x6e, 0x63, + 0x65, 0x72, 0x12, 0x9f, 0x01, 0x0a, 0x08, 0x53, 0x61, 0x79, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x1b, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, 0x65, 0x6c, - 0x6c, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x2f, - 0x7b, 0x67, 0x72, 0x65, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x7d, 0x12, 0x4d, 0x0a, 0x08, 0x42, 0x6f, - 0x75, 0x6e, 0x63, 0x65, 0x49, 0x74, 0x12, 0x15, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x6c, 0x6c, 0x49, 0x6e, 0x1a, 0x16, 0x2e, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, - 0x6c, 0x6c, 0x4f, 0x75, 0x74, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x22, 0x07, 0x2f, - 0x62, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x4b, 0x0a, 0x08, 0x47, 0x72, 0x6f, - 0x77, 0x54, 0x61, 0x69, 0x6c, 0x12, 0x13, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x1a, 0x13, 0x2e, 0x74, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x22, - 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, - 0x77, 0x2f, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x4b, 0x0a, 0x04, 0x45, 0x63, 0x68, 0x6f, 0x12, 0x16, - 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, - 0x63, 0x68, 0x6f, 0x4d, 0x73, 0x67, 0x1a, 0x16, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x63, 0x68, 0x6f, 0x4d, 0x73, 0x67, 0x22, 0x13, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x22, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x63, 0x68, 0x6f, - 0x3a, 0x01, 0x2a, 0x42, 0x11, 0x5a, 0x0f, 0x2e, 0x2f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x58, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x52, 0x3a, 0x01, 0x2a, 0x5a, 0x34, 0x5a, 0x0f, 0x22, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x12, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x7b, 0x67, + 0x72, 0x65, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x17, 0x2f, 0x76, 0x31, + 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x65, 0x65, 0x74, + 0x69, 0x6e, 0x67, 0x7d, 0x12, 0x6a, 0x0a, 0x0d, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1b, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x6e, + 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x2f, 0x7b, 0x67, 0x72, 0x65, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x7d, + 0x12, 0x4d, 0x0a, 0x08, 0x42, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x49, 0x74, 0x12, 0x15, 0x2e, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x6c, + 0x6c, 0x49, 0x6e, 0x1a, 0x16, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x6c, 0x6c, 0x4f, 0x75, 0x74, 0x22, 0x12, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x0c, 0x3a, 0x01, 0x2a, 0x22, 0x07, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x12, + 0x4b, 0x0a, 0x08, 0x47, 0x72, 0x6f, 0x77, 0x54, 0x61, 0x69, 0x6c, 0x12, 0x13, 0x2e, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x6f, 0x64, 0x79, + 0x1a, 0x13, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, + 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x77, 0x2f, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x4b, 0x0a, 0x04, + 0x45, 0x63, 0x68, 0x6f, 0x12, 0x16, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x63, 0x68, 0x6f, 0x4d, 0x73, 0x67, 0x1a, 0x16, 0x2e, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x63, 0x68, + 0x6f, 0x4d, 0x73, 0x67, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x3a, 0x01, 0x2a, 0x22, + 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x63, 0x68, 0x6f, 0x12, 0x53, 0x0a, 0x0b, 0x45, 0x63, 0x68, + 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x13, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, 0x6f, 0x69, 0x64, 0x1a, 0x16, 0x2e, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, + 0x76, 0x31, 0x2f, 0x65, 0x63, 0x68, 0x6f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x42, 0x11, + 0x5a, 0x0f, 0x2e, 0x2f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -538,8 +662,8 @@ func file_targetservice_proto_rawDescGZIP() []byte { return file_targetservice_proto_rawDescData } -var file_targetservice_proto_msgTypes = make([]protoimpl.MessageInfo, 7) -var file_targetservice_proto_goTypes = []interface{}{ +var file_targetservice_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_targetservice_proto_goTypes = []any{ (*HelloRequest)(nil), // 0: targetservice.HelloRequest (*HelloResponse)(nil), // 1: targetservice.HelloResponse (*BallIn)(nil), // 2: targetservice.BallIn @@ -547,30 +671,36 @@ var file_targetservice_proto_goTypes = []interface{}{ (*Limb)(nil), // 4: targetservice.Limb (*Body)(nil), // 5: targetservice.Body (*EchoMsg)(nil), // 6: targetservice.EchoMsg - (*timestamp.Timestamp)(nil), // 7: google.protobuf.Timestamp + (*Header)(nil), // 7: targetservice.Header + (*Headers)(nil), // 8: targetservice.Headers + (*Void)(nil), // 9: targetservice.Void + (*timestamp.Timestamp)(nil), // 10: google.protobuf.Timestamp } var file_targetservice_proto_depIdxs = []int32{ - 7, // 0: targetservice.BallIn.when:type_name -> google.protobuf.Timestamp - 7, // 1: targetservice.BallIn.now:type_name -> google.protobuf.Timestamp - 7, // 2: targetservice.BallOut.now:type_name -> google.protobuf.Timestamp + 10, // 0: targetservice.BallIn.when:type_name -> google.protobuf.Timestamp + 10, // 1: targetservice.BallIn.now:type_name -> google.protobuf.Timestamp + 10, // 2: targetservice.BallOut.now:type_name -> google.protobuf.Timestamp 4, // 3: targetservice.Body.hands:type_name -> targetservice.Limb 4, // 4: targetservice.Body.legs:type_name -> targetservice.Limb 4, // 5: targetservice.Body.tail:type_name -> targetservice.Limb - 0, // 6: targetservice.Bouncer.SayHello:input_type -> targetservice.HelloRequest - 0, // 7: targetservice.Bouncer.UnknownMethod:input_type -> targetservice.HelloRequest - 2, // 8: targetservice.Bouncer.BounceIt:input_type -> targetservice.BallIn - 5, // 9: targetservice.Bouncer.GrowTail:input_type -> targetservice.Body - 6, // 10: targetservice.Bouncer.Echo:input_type -> targetservice.EchoMsg - 1, // 11: targetservice.Bouncer.SayHello:output_type -> targetservice.HelloResponse - 1, // 12: targetservice.Bouncer.UnknownMethod:output_type -> targetservice.HelloResponse - 3, // 13: targetservice.Bouncer.BounceIt:output_type -> targetservice.BallOut - 5, // 14: targetservice.Bouncer.GrowTail:output_type -> targetservice.Body - 6, // 15: targetservice.Bouncer.Echo:output_type -> targetservice.EchoMsg - 11, // [11:16] is the sub-list for method output_type - 6, // [6:11] is the sub-list for method input_type - 6, // [6:6] is the sub-list for extension type_name - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name + 7, // 6: targetservice.Headers.headers:type_name -> targetservice.Header + 0, // 7: targetservice.Bouncer.SayHello:input_type -> targetservice.HelloRequest + 0, // 8: targetservice.Bouncer.UnknownMethod:input_type -> targetservice.HelloRequest + 2, // 9: targetservice.Bouncer.BounceIt:input_type -> targetservice.BallIn + 5, // 10: targetservice.Bouncer.GrowTail:input_type -> targetservice.Body + 6, // 11: targetservice.Bouncer.Echo:input_type -> targetservice.EchoMsg + 9, // 12: targetservice.Bouncer.EchoHeaders:input_type -> targetservice.Void + 1, // 13: targetservice.Bouncer.SayHello:output_type -> targetservice.HelloResponse + 1, // 14: targetservice.Bouncer.UnknownMethod:output_type -> targetservice.HelloResponse + 3, // 15: targetservice.Bouncer.BounceIt:output_type -> targetservice.BallOut + 5, // 16: targetservice.Bouncer.GrowTail:output_type -> targetservice.Body + 6, // 17: targetservice.Bouncer.Echo:output_type -> targetservice.EchoMsg + 8, // 18: targetservice.Bouncer.EchoHeaders:output_type -> targetservice.Headers + 13, // [13:19] is the sub-list for method output_type + 7, // [7:13] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { file_targetservice_proto_init() } @@ -578,99 +708,13 @@ func file_targetservice_proto_init() { if File_targetservice_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_targetservice_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HelloRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_targetservice_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HelloResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_targetservice_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BallIn); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_targetservice_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BallOut); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_targetservice_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Limb); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_targetservice_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Body); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_targetservice_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EchoMsg); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_targetservice_proto_rawDesc, NumEnums: 0, - NumMessages: 7, + NumMessages: 10, NumExtensions: 0, NumServices: 1, }, diff --git a/spec/fixtures/grpc/target/targetservice/targetservice_grpc.pb.go b/spec/fixtures/grpc/targetservice/targetservice_grpc.pb.go similarity index 68% rename from spec/fixtures/grpc/target/targetservice/targetservice_grpc.pb.go rename to spec/fixtures/grpc/targetservice/targetservice_grpc.pb.go index e59433d7b70..779d27348da 100644 --- a/spec/fixtures/grpc/target/targetservice/targetservice_grpc.pb.go +++ b/spec/fixtures/grpc/targetservice/targetservice_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.2.0 -// - protoc v3.21.7 +// - protoc-gen-go-grpc v1.5.1 +// - protoc v5.29.2 // source: targetservice.proto package targetservice @@ -15,8 +15,17 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + Bouncer_SayHello_FullMethodName = "/targetservice.Bouncer/SayHello" + Bouncer_UnknownMethod_FullMethodName = "/targetservice.Bouncer/UnknownMethod" + Bouncer_BounceIt_FullMethodName = "/targetservice.Bouncer/BounceIt" + Bouncer_GrowTail_FullMethodName = "/targetservice.Bouncer/GrowTail" + Bouncer_Echo_FullMethodName = "/targetservice.Bouncer/Echo" + Bouncer_EchoHeaders_FullMethodName = "/targetservice.Bouncer/EchoHeaders" +) // BouncerClient is the client API for Bouncer service. // @@ -28,6 +37,7 @@ type BouncerClient interface { BounceIt(ctx context.Context, in *BallIn, opts ...grpc.CallOption) (*BallOut, error) GrowTail(ctx context.Context, in *Body, opts ...grpc.CallOption) (*Body, error) Echo(ctx context.Context, in *EchoMsg, opts ...grpc.CallOption) (*EchoMsg, error) + EchoHeaders(ctx context.Context, in *Void, opts ...grpc.CallOption) (*Headers, error) } type bouncerClient struct { @@ -39,8 +49,9 @@ func NewBouncerClient(cc grpc.ClientConnInterface) BouncerClient { } func (c *bouncerClient) SayHello(ctx context.Context, in *HelloRequest, opts ...grpc.CallOption) (*HelloResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(HelloResponse) - err := c.cc.Invoke(ctx, "/targetservice.Bouncer/SayHello", in, out, opts...) + err := c.cc.Invoke(ctx, Bouncer_SayHello_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -48,8 +59,9 @@ func (c *bouncerClient) SayHello(ctx context.Context, in *HelloRequest, opts ... } func (c *bouncerClient) UnknownMethod(ctx context.Context, in *HelloRequest, opts ...grpc.CallOption) (*HelloResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(HelloResponse) - err := c.cc.Invoke(ctx, "/targetservice.Bouncer/UnknownMethod", in, out, opts...) + err := c.cc.Invoke(ctx, Bouncer_UnknownMethod_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -57,8 +69,9 @@ func (c *bouncerClient) UnknownMethod(ctx context.Context, in *HelloRequest, opt } func (c *bouncerClient) BounceIt(ctx context.Context, in *BallIn, opts ...grpc.CallOption) (*BallOut, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(BallOut) - err := c.cc.Invoke(ctx, "/targetservice.Bouncer/BounceIt", in, out, opts...) + err := c.cc.Invoke(ctx, Bouncer_BounceIt_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -66,8 +79,9 @@ func (c *bouncerClient) BounceIt(ctx context.Context, in *BallIn, opts ...grpc.C } func (c *bouncerClient) GrowTail(ctx context.Context, in *Body, opts ...grpc.CallOption) (*Body, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(Body) - err := c.cc.Invoke(ctx, "/targetservice.Bouncer/GrowTail", in, out, opts...) + err := c.cc.Invoke(ctx, Bouncer_GrowTail_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -75,8 +89,19 @@ func (c *bouncerClient) GrowTail(ctx context.Context, in *Body, opts ...grpc.Cal } func (c *bouncerClient) Echo(ctx context.Context, in *EchoMsg, opts ...grpc.CallOption) (*EchoMsg, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(EchoMsg) - err := c.cc.Invoke(ctx, "/targetservice.Bouncer/Echo", in, out, opts...) + err := c.cc.Invoke(ctx, Bouncer_Echo_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *bouncerClient) EchoHeaders(ctx context.Context, in *Void, opts ...grpc.CallOption) (*Headers, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Headers) + err := c.cc.Invoke(ctx, Bouncer_EchoHeaders_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -85,7 +110,7 @@ func (c *bouncerClient) Echo(ctx context.Context, in *EchoMsg, opts ...grpc.Call // BouncerServer is the server API for Bouncer service. // All implementations must embed UnimplementedBouncerServer -// for forward compatibility +// for forward compatibility. type BouncerServer interface { SayHello(context.Context, *HelloRequest) (*HelloResponse, error) // define a gRPC method that's not implemented in the target @@ -93,12 +118,16 @@ type BouncerServer interface { BounceIt(context.Context, *BallIn) (*BallOut, error) GrowTail(context.Context, *Body) (*Body, error) Echo(context.Context, *EchoMsg) (*EchoMsg, error) + EchoHeaders(context.Context, *Void) (*Headers, error) mustEmbedUnimplementedBouncerServer() } -// UnimplementedBouncerServer must be embedded to have forward compatible implementations. -type UnimplementedBouncerServer struct { -} +// UnimplementedBouncerServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedBouncerServer struct{} func (UnimplementedBouncerServer) SayHello(context.Context, *HelloRequest) (*HelloResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SayHello not implemented") @@ -115,7 +144,11 @@ func (UnimplementedBouncerServer) GrowTail(context.Context, *Body) (*Body, error func (UnimplementedBouncerServer) Echo(context.Context, *EchoMsg) (*EchoMsg, error) { return nil, status.Errorf(codes.Unimplemented, "method Echo not implemented") } +func (UnimplementedBouncerServer) EchoHeaders(context.Context, *Void) (*Headers, error) { + return nil, status.Errorf(codes.Unimplemented, "method EchoHeaders not implemented") +} func (UnimplementedBouncerServer) mustEmbedUnimplementedBouncerServer() {} +func (UnimplementedBouncerServer) testEmbeddedByValue() {} // UnsafeBouncerServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to BouncerServer will @@ -125,6 +158,13 @@ type UnsafeBouncerServer interface { } func RegisterBouncerServer(s grpc.ServiceRegistrar, srv BouncerServer) { + // If the following call pancis, it indicates UnimplementedBouncerServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Bouncer_ServiceDesc, srv) } @@ -138,7 +178,7 @@ func _Bouncer_SayHello_Handler(srv interface{}, ctx context.Context, dec func(in } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/targetservice.Bouncer/SayHello", + FullMethod: Bouncer_SayHello_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(BouncerServer).SayHello(ctx, req.(*HelloRequest)) @@ -156,7 +196,7 @@ func _Bouncer_UnknownMethod_Handler(srv interface{}, ctx context.Context, dec fu } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/targetservice.Bouncer/UnknownMethod", + FullMethod: Bouncer_UnknownMethod_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(BouncerServer).UnknownMethod(ctx, req.(*HelloRequest)) @@ -174,7 +214,7 @@ func _Bouncer_BounceIt_Handler(srv interface{}, ctx context.Context, dec func(in } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/targetservice.Bouncer/BounceIt", + FullMethod: Bouncer_BounceIt_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(BouncerServer).BounceIt(ctx, req.(*BallIn)) @@ -192,7 +232,7 @@ func _Bouncer_GrowTail_Handler(srv interface{}, ctx context.Context, dec func(in } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/targetservice.Bouncer/GrowTail", + FullMethod: Bouncer_GrowTail_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(BouncerServer).GrowTail(ctx, req.(*Body)) @@ -210,7 +250,7 @@ func _Bouncer_Echo_Handler(srv interface{}, ctx context.Context, dec func(interf } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/targetservice.Bouncer/Echo", + FullMethod: Bouncer_Echo_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(BouncerServer).Echo(ctx, req.(*EchoMsg)) @@ -218,6 +258,24 @@ func _Bouncer_Echo_Handler(srv interface{}, ctx context.Context, dec func(interf return interceptor(ctx, in, info, handler) } +func _Bouncer_EchoHeaders_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Void) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BouncerServer).EchoHeaders(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Bouncer_EchoHeaders_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BouncerServer).EchoHeaders(ctx, req.(*Void)) + } + return interceptor(ctx, in, info, handler) +} + // Bouncer_ServiceDesc is the grpc.ServiceDesc for Bouncer service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -245,6 +303,10 @@ var Bouncer_ServiceDesc = grpc.ServiceDesc{ MethodName: "Echo", Handler: _Bouncer_Echo_Handler, }, + { + MethodName: "EchoHeaders", + Handler: _Bouncer_EchoHeaders_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "targetservice.proto", diff --git a/spec/internal/constants.lua b/spec/internal/constants.lua index 220b68f889c..a8efd6da2cd 100644 --- a/spec/internal/constants.lua +++ b/spec/internal/constants.lua @@ -7,7 +7,7 @@ local CONSTANTS = { CUSTOM_VAULT_PATH = "./spec/fixtures/custom_vaults/?.lua;./spec/fixtures/custom_vaults/?/init.lua", DNS_MOCK_LUA_PATH = "./spec/fixtures/mocks/lua-resty-dns/?.lua", EXTERNAL_PLUGINS_PATH = "./spec/fixtures/external_plugins", - GRPC_TARGET_SRC_PATH = "./spec/fixtures/grpc/target/", + GRPC_TARGET_SRC_PATH = "./spec/fixtures/grpc/", MOCK_UPSTREAM_PROTOCOL = "http", MOCK_UPSTREAM_SSL_PROTOCOL = "https", MOCK_UPSTREAM_HOST = "127.0.0.1", @@ -19,7 +19,7 @@ local CONSTANTS = { GRPCBIN_HOST = os.getenv("KONG_SPEC_TEST_GRPCBIN_HOST") or "localhost", GRPCBIN_PORT = tonumber(os.getenv("KONG_SPEC_TEST_GRPCBIN_PORT")) or 9000, GRPCBIN_SSL_PORT = tonumber(os.getenv("KONG_SPEC_TEST_GRPCBIN_SSL_PORT")) or 9001, - MOCK_GRPC_UPSTREAM_PROTO_PATH = "./spec/fixtures/grpc/hello.proto", + MOCK_GRPC_UPSTREAM_PROTO_PATH = "./spec/fixtures/grpc/proto/hello.proto", ZIPKIN_HOST = os.getenv("KONG_SPEC_TEST_ZIPKIN_HOST") or "localhost", ZIPKIN_PORT = tonumber(os.getenv("KONG_SPEC_TEST_ZIPKIN_PORT")) or 9411, OTELCOL_HOST = os.getenv("KONG_SPEC_TEST_OTELCOL_HOST") or "localhost", From fa95ea42cd49bcf1d17f37f08b6d39ebb1a0dd6c Mon Sep 17 00:00:00 2001 From: Guilherme Salazar Date: Thu, 23 Jan 2025 10:59:30 -0300 Subject: [PATCH 2/4] tests(helpers): target grpc service makefile Add a makefile to grpc target service. --- spec/fixtures/grpc/Makefile | 20 ++++++++++++++++++++ spec/internal/grpc.lua | 12 ++++++------ 2 files changed, 26 insertions(+), 6 deletions(-) create mode 100644 spec/fixtures/grpc/Makefile diff --git a/spec/fixtures/grpc/Makefile b/spec/fixtures/grpc/Makefile new file mode 100644 index 00000000000..438c74339d9 --- /dev/null +++ b/spec/fixtures/grpc/Makefile @@ -0,0 +1,20 @@ +ALL= targetservice/targetservice.pb.go targetservice/targetservice_grpc.pb.go target + +all: $(ALL) + +.PHONY: go + +clean: + rm -rf $(ALL) + +go: + go mod tidy && go mod download all + +target: go targetservice/targetservice.pb.go targetservice/targetservice_grpc.pb.go target.go + go build -o $@ + +targetservice/targetservice.pb.go: proto/targetservice.proto + protoc -I proto/ --go_out=. --go-grpc_out=. proto/targetservice.proto + +targetservice/targetservice_grpc.pb.go: proto/targetservice.proto + protoc -I proto/ --go_out=. --go-grpc_out=. proto/targetservice.proto diff --git a/spec/internal/grpc.lua b/spec/internal/grpc.lua index 8c49cbda6af..92bd991b9d7 100644 --- a/spec/internal/grpc.lua +++ b/spec/internal/grpc.lua @@ -47,18 +47,18 @@ local function start_grpc_target() assert(make(CONSTANTS.GRPC_TARGET_SRC_PATH, { { target = "targetservice/targetservice.pb.go", - src = { "../targetservice.proto" }, - cmd = "protoc --go_out=. --go-grpc_out=. -I ../ ../targetservice.proto", + src = { "proto/targetservice.proto" }, + cmd = "protoc --go_out=. --go-grpc_out=. -I proto/ proto/targetservice.proto", }, { target = "targetservice/targetservice_grpc.pb.go", - src = { "../targetservice.proto" }, - cmd = "protoc --go_out=. --go-grpc_out=. -I ../ ../targetservice.proto", + src = { "proto/targetservice.proto" }, + cmd = "protoc --go_out=. --go-grpc_out=. -I proto/ proto/targetservice.proto", }, { target = "target", - src = { "grpc-target.go", "targetservice/targetservice.pb.go", "targetservice/targetservice_grpc.pb.go" }, - cmd = "go mod tidy && go mod download all && go build", + src = { "target.go", "targetservice/targetservice.pb.go", "targetservice/targetservice_grpc.pb.go" }, + cmd = "go mod tidy && go mod download all && go build -o target", }, })) grpc_target_proc = assert(ngx_pipe.spawn({ CONSTANTS.GRPC_TARGET_SRC_PATH .. "/target" }, { From 5e5e05bedfac1e1da5443a9fe7e44a22168d19ab Mon Sep 17 00:00:00 2001 From: Guilherme Salazar Date: Sun, 22 Dec 2024 12:45:09 -0300 Subject: [PATCH 3/4] tests(helpers): add EchoHeaders grpc rpc This will improve testability and reliability of some gRPC tests. --- spec/fixtures/grpc/proto/targetservice.proto | 9 +++++++++ spec/fixtures/grpc/target.go | 20 ++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/spec/fixtures/grpc/proto/targetservice.proto b/spec/fixtures/grpc/proto/targetservice.proto index 949b61670e9..5b010a8864a 100644 --- a/spec/fixtures/grpc/proto/targetservice.proto +++ b/spec/fixtures/grpc/proto/targetservice.proto @@ -100,4 +100,13 @@ message EchoMsg { string nullable = 2; } +message Header { + string key = 1; + string value = 2; +} + +message Headers { + repeated Header headers = 1; +} + message Void {} diff --git a/spec/fixtures/grpc/target.go b/spec/fixtures/grpc/target.go index c7d1174d8f6..5e534384a8b 100644 --- a/spec/fixtures/grpc/target.go +++ b/spec/fixtures/grpc/target.go @@ -6,11 +6,15 @@ import ( "log" "net" "time" + "strings" pb "grpc/targetservice" "google.golang.org/grpc" "google.golang.org/protobuf/types/known/timestamppb" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" ) const ( @@ -53,6 +57,22 @@ func (s *server) Echo(ctx context.Context, in *pb.EchoMsg) (*pb.EchoMsg, error) return in, nil } +func (s *server) EchoHeaders(ctx context.Context, in *pb.Void) (*pb.Headers, error) { + md, ok := metadata.FromIncomingContext(ctx) + if !ok { + return nil, status.Errorf(codes.DataLoss, "UnaryEcho: failed to get metadata") + } + headers := &pb.Headers{} + for k, v := range md { + header := &pb.Header{ + Key: k, + Value: strings.Join(v, ", "), + } + headers.Headers = append(headers.Headers, header) + } + return headers, nil +} + func main() { lis, err := net.Listen("tcp", port) if err != nil { From e42139af4c168c62fc68149dee72a6145c5ea810 Mon Sep 17 00:00:00 2001 From: Guilherme Salazar Date: Mon, 23 Dec 2024 13:38:45 -0300 Subject: [PATCH 4/4] tests(grpc): use new EchoHeaders rpc in tests Replace template-based mock grpc service with actual gRPC service to test for `:authority` headers. --- .github/workflows/build.yml | 2 +- kong/tools/grpc.lua | 2 +- .../05-proxy/19-grpc_proxy_spec.lua | 52 ++---- spec/fixtures/grpc/proto/targetservice.proto | 7 +- spec/fixtures/grpc/target.go | 8 +- .../grpc/targetservice/targetservice.pb.go | 172 +++++++----------- 6 files changed, 87 insertions(+), 156 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 64cec99d39f..d7007460c48 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -44,7 +44,7 @@ jobs: - name: Install packages if: steps.cache-deps.outputs.cache-hit != 'true' - run: sudo apt update && sudo apt install libyaml-dev valgrind libprotobuf-dev protobuf-compiler + run: sudo apt update && sudo apt install libyaml-dev valgrind libprotobuf-dev - name: Build Kong if: steps.cache-deps.outputs.cache-hit != 'true' diff --git a/kong/tools/grpc.lua b/kong/tools/grpc.lua index a7d62f01b8f..2a3c4b68e39 100644 --- a/kong/tools/grpc.lua +++ b/kong/tools/grpc.lua @@ -72,7 +72,7 @@ function _M.new() "/usr/local/opt/protobuf/include/", -- homebrew "/usr/include", "kong/include", - "spec/fixtures/grpc", + "spec/fixtures/grpc/proto", } do protoc_instance:addpath(v) end diff --git a/spec/02-integration/05-proxy/19-grpc_proxy_spec.lua b/spec/02-integration/05-proxy/19-grpc_proxy_spec.lua index 0043977b7ef..aa4c092d414 100644 --- a/spec/02-integration/05-proxy/19-grpc_proxy_spec.lua +++ b/spec/02-integration/05-proxy/19-grpc_proxy_spec.lua @@ -30,6 +30,8 @@ for _, strategy in helpers.each_strategy() do reload_router(flavor) lazy_setup(function() + assert(helpers.start_grpc_target()) + local bp = helpers.get_db_utils(strategy, { "routes", "services", @@ -47,12 +49,16 @@ for _, strategy in helpers.each_strategy() do local mock_grpc_service = assert(bp.services:insert { name = "mock_grpc_service", - url = "grpc://localhost:8765", + protocol = "grpc", + host = "127.0.0.1", + port = helpers.get_grpc_target_port(), }) local mock_grpc_service_retry = assert(bp.services:insert { name = "mock_grpc_service_retry", - url = "grpc://grpc_retry", + protocol = "grpc", + host = "127.0.0.1", + port = helpers.get_grpc_target_port(), }) local upstream_retry = assert(bp.upstreams:insert { @@ -111,30 +117,10 @@ for _, strategy in helpers.each_strategy() do }, }) - local fixtures = { - http_mock = {} - } - - fixtures.http_mock.my_server_block = [[ - server { - server_name myserver; - listen 8765; - http2 on; - - location ~ / { - content_by_lua_block { - ngx.header.content_type = "application/grpc" - ngx.header.received_host = ngx.req.get_headers()["Host"] - } - } - } - ]] - assert(helpers.start_kong({ router_flavor = flavor, database = strategy, - nginx_conf = "spec/fixtures/custom_nginx.template", - }, nil, nil, fixtures)) + })) proxy_client_grpc = helpers.proxy_client_grpc() proxy_client_grpcs = helpers.proxy_client_grpcs() @@ -150,6 +136,7 @@ for _, strategy in helpers.each_strategy() do lazy_teardown(function() helpers.stop_kong() + helpers.stop_grpc_target() end) it("proxies grpc", function() @@ -228,32 +215,33 @@ for _, strategy in helpers.each_strategy() do it("proxies :authority header if `preserve_host` is set", function() local _, resp = proxy_client_grpc({ - service = "hello.HelloService.SayHello", + service = "targetservice.Bouncer.EchoHeaders", body = { - greeting = "world!" }, opts = { + ["-proto"] = "./spec/fixtures/grpc/proto/targetservice.proto", + ["-import-path"] = "./spec/fixtures/grpc/proto", ["-authority"] = "grpc_authority_1.example", - ["-v"] = true, } }) - - assert.matches("received%-host: grpc_authority_1.example", resp) + local headers = cjson.decode(resp).headers + assert.matches("grpc_authority_1.example", headers[":authority"]) end) it("sets default :authority header if `preserve_host` isn't set", function() local _, resp = proxy_client_grpc({ - service = "hello.HelloService.SayHello", + service = "targetservice.Bouncer.EchoHeaders", body = { - greeting = "world!" }, opts = { + ["-proto"] = "./spec/fixtures/grpc/proto/targetservice.proto", + ["-import-path"] = "./spec/fixtures/grpc/proto", ["-authority"] = "grpc_authority_2.example", - ["-v"] = true, } }) - assert.matches("received%-host: localhost:8765", resp) + local headers = cjson.decode(resp).headers + assert.matches("127.0.0.1:15010", headers[":authority"]) end) it("proxies :authority header on balancer retry", function() diff --git a/spec/fixtures/grpc/proto/targetservice.proto b/spec/fixtures/grpc/proto/targetservice.proto index 5b010a8864a..5df2a20896a 100644 --- a/spec/fixtures/grpc/proto/targetservice.proto +++ b/spec/fixtures/grpc/proto/targetservice.proto @@ -100,13 +100,8 @@ message EchoMsg { string nullable = 2; } -message Header { - string key = 1; - string value = 2; -} - message Headers { - repeated Header headers = 1; + map headers = 1; } message Void {} diff --git a/spec/fixtures/grpc/target.go b/spec/fixtures/grpc/target.go index 5e534384a8b..bed03a4aa0d 100644 --- a/spec/fixtures/grpc/target.go +++ b/spec/fixtures/grpc/target.go @@ -63,13 +63,11 @@ func (s *server) EchoHeaders(ctx context.Context, in *pb.Void) (*pb.Headers, err return nil, status.Errorf(codes.DataLoss, "UnaryEcho: failed to get metadata") } headers := &pb.Headers{} + var headersMap = make(map[string]string, len(md)) for k, v := range md { - header := &pb.Header{ - Key: k, - Value: strings.Join(v, ", "), - } - headers.Headers = append(headers.Headers, header) + headersMap[k] = strings.Join(v, ", ") } + headers.Headers = headersMap return headers, nil } diff --git a/spec/fixtures/grpc/targetservice/targetservice.pb.go b/spec/fixtures/grpc/targetservice/targetservice.pb.go index def19b1abaa..8b791059842 100644 --- a/spec/fixtures/grpc/targetservice/targetservice.pb.go +++ b/spec/fixtures/grpc/targetservice/targetservice.pb.go @@ -418,68 +418,16 @@ func (x *EchoMsg) GetNullable() string { return "" } -type Header struct { - state protoimpl.MessageState `protogen:"open.v1"` - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *Header) Reset() { - *x = Header{} - mi := &file_targetservice_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *Header) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Header) ProtoMessage() {} - -func (x *Header) ProtoReflect() protoreflect.Message { - mi := &file_targetservice_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Header.ProtoReflect.Descriptor instead. -func (*Header) Descriptor() ([]byte, []int) { - return file_targetservice_proto_rawDescGZIP(), []int{7} -} - -func (x *Header) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -func (x *Header) GetValue() string { - if x != nil { - return x.Value - } - return "" -} - type Headers struct { state protoimpl.MessageState `protogen:"open.v1"` - Headers []*Header `protobuf:"bytes,1,rep,name=headers,proto3" json:"headers,omitempty"` + Headers map[string]string `protobuf:"bytes,1,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Headers) Reset() { *x = Headers{} - mi := &file_targetservice_proto_msgTypes[8] + mi := &file_targetservice_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -491,7 +439,7 @@ func (x *Headers) String() string { func (*Headers) ProtoMessage() {} func (x *Headers) ProtoReflect() protoreflect.Message { - mi := &file_targetservice_proto_msgTypes[8] + mi := &file_targetservice_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -504,10 +452,10 @@ func (x *Headers) ProtoReflect() protoreflect.Message { // Deprecated: Use Headers.ProtoReflect.Descriptor instead. func (*Headers) Descriptor() ([]byte, []int) { - return file_targetservice_proto_rawDescGZIP(), []int{8} + return file_targetservice_proto_rawDescGZIP(), []int{7} } -func (x *Headers) GetHeaders() []*Header { +func (x *Headers) GetHeaders() map[string]string { if x != nil { return x.Headers } @@ -522,7 +470,7 @@ type Void struct { func (x *Void) Reset() { *x = Void{} - mi := &file_targetservice_proto_msgTypes[9] + mi := &file_targetservice_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -534,7 +482,7 @@ func (x *Void) String() string { func (*Void) ProtoMessage() {} func (x *Void) ProtoReflect() protoreflect.Message { - mi := &file_targetservice_proto_msgTypes[9] + mi := &file_targetservice_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -547,7 +495,7 @@ func (x *Void) ProtoReflect() protoreflect.Message { // Deprecated: Use Void.ProtoReflect.Descriptor instead. func (*Void) Descriptor() ([]byte, []int) { - return file_targetservice_proto_rawDescGZIP(), []int{9} + return file_targetservice_proto_rawDescGZIP(), []int{8} } var File_targetservice_proto protoreflect.FileDescriptor @@ -601,53 +549,55 @@ var file_targetservice_proto_rawDesc = []byte{ 0x0a, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, - 0x22, 0x30, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x22, 0x3a, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x0a, - 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, + 0x22, 0x84, 0x01, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x3d, 0x0a, 0x07, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x06, 0x0a, 0x04, 0x56, 0x6f, 0x69, 0x64, 0x32, + 0xd5, 0x04, 0x0a, 0x07, 0x42, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x12, 0x9f, 0x01, 0x0a, 0x08, + 0x53, 0x61, 0x79, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x1b, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x58, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x3a, 0x01, 0x2a, 0x5a, 0x34, + 0x5a, 0x0f, 0x22, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, + 0x2f, 0x12, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2f, + 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x7b, 0x67, 0x72, 0x65, 0x65, 0x74, 0x69, 0x6e, 0x67, + 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x65, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x7d, 0x12, 0x6a, 0x0a, + 0x0d, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1b, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x06, - 0x0a, 0x04, 0x56, 0x6f, 0x69, 0x64, 0x32, 0xd5, 0x04, 0x0a, 0x07, 0x42, 0x6f, 0x75, 0x6e, 0x63, - 0x65, 0x72, 0x12, 0x9f, 0x01, 0x0a, 0x08, 0x53, 0x61, 0x79, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x12, - 0x1b, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, 0x65, 0x6c, - 0x6c, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x58, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x52, 0x3a, 0x01, 0x2a, 0x5a, 0x34, 0x5a, 0x0f, 0x22, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x12, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x7b, 0x67, - 0x72, 0x65, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x17, 0x2f, 0x76, 0x31, - 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x65, 0x65, 0x74, - 0x69, 0x6e, 0x67, 0x7d, 0x12, 0x6a, 0x0a, 0x0d, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1b, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x6e, - 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x2f, 0x7b, 0x67, 0x72, 0x65, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x7d, - 0x12, 0x4d, 0x0a, 0x08, 0x42, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x49, 0x74, 0x12, 0x15, 0x2e, 0x74, + 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, 0x65, 0x6c, 0x6c, + 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x2f, 0x7b, + 0x67, 0x72, 0x65, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x7d, 0x12, 0x4d, 0x0a, 0x08, 0x42, 0x6f, 0x75, + 0x6e, 0x63, 0x65, 0x49, 0x74, 0x12, 0x15, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x6c, 0x6c, 0x49, 0x6e, 0x1a, 0x16, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x6c, - 0x6c, 0x49, 0x6e, 0x1a, 0x16, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x6c, 0x6c, 0x4f, 0x75, 0x74, 0x22, 0x12, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x0c, 0x3a, 0x01, 0x2a, 0x22, 0x07, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x12, - 0x4b, 0x0a, 0x08, 0x47, 0x72, 0x6f, 0x77, 0x54, 0x61, 0x69, 0x6c, 0x12, 0x13, 0x2e, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x6f, 0x64, 0x79, - 0x1a, 0x13, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, - 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x77, 0x2f, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x4b, 0x0a, 0x04, - 0x45, 0x63, 0x68, 0x6f, 0x12, 0x16, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x63, 0x68, 0x6f, 0x4d, 0x73, 0x67, 0x1a, 0x16, 0x2e, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x63, 0x68, - 0x6f, 0x4d, 0x73, 0x67, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x3a, 0x01, 0x2a, 0x22, - 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x63, 0x68, 0x6f, 0x12, 0x53, 0x0a, 0x0b, 0x45, 0x63, 0x68, - 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x13, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, 0x6f, 0x69, 0x64, 0x1a, 0x16, 0x2e, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, - 0x76, 0x31, 0x2f, 0x65, 0x63, 0x68, 0x6f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x42, 0x11, - 0x5a, 0x0f, 0x2e, 0x2f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x4f, 0x75, 0x74, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x3a, 0x01, 0x2a, 0x22, + 0x07, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x12, 0x4b, 0x0a, 0x08, 0x47, 0x72, 0x6f, 0x77, + 0x54, 0x61, 0x69, 0x6c, 0x12, 0x13, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x1a, 0x13, 0x2e, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x22, 0x15, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x77, + 0x2f, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x4b, 0x0a, 0x04, 0x45, 0x63, 0x68, 0x6f, 0x12, 0x16, 0x2e, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x63, + 0x68, 0x6f, 0x4d, 0x73, 0x67, 0x1a, 0x16, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x63, 0x68, 0x6f, 0x4d, 0x73, 0x67, 0x22, 0x13, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x3a, 0x01, 0x2a, 0x22, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x63, + 0x68, 0x6f, 0x12, 0x53, 0x0a, 0x0b, 0x45, 0x63, 0x68, 0x6f, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x12, 0x13, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x56, 0x6f, 0x69, 0x64, 0x1a, 0x16, 0x2e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x17, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x63, 0x68, 0x6f, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x42, 0x11, 0x5a, 0x0f, 0x2e, 0x2f, 0x74, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -671,9 +621,9 @@ var file_targetservice_proto_goTypes = []any{ (*Limb)(nil), // 4: targetservice.Limb (*Body)(nil), // 5: targetservice.Body (*EchoMsg)(nil), // 6: targetservice.EchoMsg - (*Header)(nil), // 7: targetservice.Header - (*Headers)(nil), // 8: targetservice.Headers - (*Void)(nil), // 9: targetservice.Void + (*Headers)(nil), // 7: targetservice.Headers + (*Void)(nil), // 8: targetservice.Void + nil, // 9: targetservice.Headers.HeadersEntry (*timestamp.Timestamp)(nil), // 10: google.protobuf.Timestamp } var file_targetservice_proto_depIdxs = []int32{ @@ -683,19 +633,19 @@ var file_targetservice_proto_depIdxs = []int32{ 4, // 3: targetservice.Body.hands:type_name -> targetservice.Limb 4, // 4: targetservice.Body.legs:type_name -> targetservice.Limb 4, // 5: targetservice.Body.tail:type_name -> targetservice.Limb - 7, // 6: targetservice.Headers.headers:type_name -> targetservice.Header + 9, // 6: targetservice.Headers.headers:type_name -> targetservice.Headers.HeadersEntry 0, // 7: targetservice.Bouncer.SayHello:input_type -> targetservice.HelloRequest 0, // 8: targetservice.Bouncer.UnknownMethod:input_type -> targetservice.HelloRequest 2, // 9: targetservice.Bouncer.BounceIt:input_type -> targetservice.BallIn 5, // 10: targetservice.Bouncer.GrowTail:input_type -> targetservice.Body 6, // 11: targetservice.Bouncer.Echo:input_type -> targetservice.EchoMsg - 9, // 12: targetservice.Bouncer.EchoHeaders:input_type -> targetservice.Void + 8, // 12: targetservice.Bouncer.EchoHeaders:input_type -> targetservice.Void 1, // 13: targetservice.Bouncer.SayHello:output_type -> targetservice.HelloResponse 1, // 14: targetservice.Bouncer.UnknownMethod:output_type -> targetservice.HelloResponse 3, // 15: targetservice.Bouncer.BounceIt:output_type -> targetservice.BallOut 5, // 16: targetservice.Bouncer.GrowTail:output_type -> targetservice.Body 6, // 17: targetservice.Bouncer.Echo:output_type -> targetservice.EchoMsg - 8, // 18: targetservice.Bouncer.EchoHeaders:output_type -> targetservice.Headers + 7, // 18: targetservice.Bouncer.EchoHeaders:output_type -> targetservice.Headers 13, // [13:19] is the sub-list for method output_type 7, // [7:13] is the sub-list for method input_type 7, // [7:7] is the sub-list for extension type_name