From 0b73b75466e9c5225415b81ec292e7b64871276b Mon Sep 17 00:00:00 2001 From: Edward McFarlane Date: Wed, 21 Jun 2023 21:00:30 +0100 Subject: [PATCH 1/5] Init connect transcode for gRPC servers --- Makefile | 1 + cmd/client/main.go | 2 +- cmd/servergrpc/main.go | 49 +++++++++++++++++++++++++++++++++++------- docker-compose.yaml | 12 ++++++++++- go.mod | 4 ++-- go.sum | 6 ++++++ 6 files changed, 62 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 26c00cdc..594eeb0a 100644 --- a/Makefile +++ b/Makefile @@ -92,6 +92,7 @@ dockercomposetestgo: dockercomposeclean docker-compose run client-connect-grpc-web-to-envoy-server-connect-h1 docker-compose run client-connect-grpc-web-to-envoy-server-grpc-h1 docker-compose run client-connect-grpc-to-server-grpc + docker-compose run client-connect-to-server-grpc-transcode-h1 docker-compose run client-grpc-to-server-connect docker-compose run client-grpc-to-server-grpc $(MAKE) dockercomposeclean diff --git a/cmd/client/main.go b/cmd/client/main.go index 70a111a6..0d71d99c 100644 --- a/cmd/client/main.go +++ b/cmd/client/main.go @@ -110,7 +110,7 @@ func bind(cmd *cobra.Command, flags *flags) error { "i", "", fmt.Sprintf( - "the client implementation tested, accepted values are %q, %q, %q, %q, %q, %q, %q, %q, or %q", + "the client implementation tested, accepted values are %q, %q, %q, %q, %q, %q, %q, %q or %q", connectH1, connectH2, connectH3, diff --git a/cmd/servergrpc/main.go b/cmd/servergrpc/main.go index f1323763..1a7ad510 100644 --- a/cmd/servergrpc/main.go +++ b/cmd/servergrpc/main.go @@ -17,15 +17,22 @@ package main import ( "crypto/tls" "crypto/x509" + "errors" "fmt" "log" "net" + "net/http" "os" + "os/signal" + "syscall" testrpc "github.com/bufbuild/connect-crosstest/internal/gen/proto/go/grpc/testing" serverpb "github.com/bufbuild/connect-crosstest/internal/gen/proto/go/server/v1" "github.com/bufbuild/connect-crosstest/internal/interop/interopgrpc" + connect "github.com/bufbuild/connect-go" "github.com/spf13/cobra" + "golang.org/x/net/http2" + "golang.org/x/net/http2/h2c" "google.golang.org/grpc" "google.golang.org/grpc/credentials" _ "google.golang.org/grpc/encoding/gzip" // this register the gzip compressor to the grpc server @@ -33,15 +40,17 @@ import ( ) const ( - portFlagName = "port" - certFlagName = "cert" - keyFlagName = "key" + portFlagName = "port" + transcodePortFlagName = "transcodeport" + certFlagName = "cert" + keyFlagName = "key" ) type flags struct { - port string - certFile string - keyFile string + port string + transcodePort string + certFile string + keyFile string } func main() { @@ -61,6 +70,7 @@ func main() { func bind(cmd *cobra.Command, flagset *flags) error { cmd.Flags().StringVar(&flagset.port, portFlagName, "", "the port the server will listen on") + cmd.Flags().StringVar(&flagset.transcodePort, transcodePortFlagName, "", "port for gRPC transcode traffic") cmd.Flags().StringVar(&flagset.certFile, certFlagName, "", "path to the TLS cert file") cmd.Flags().StringVar(&flagset.keyFile, keyFlagName, "", "path to the TLS key file") for _, requiredFlag := range []string{portFlagName, certFlagName, keyFlagName} { @@ -100,8 +110,22 @@ func run(flagset *flags) { } _, _ = fmt.Fprintln(os.Stdout, string(bytes)) testrpc.RegisterTestServiceServer(server, interopgrpc.NewTestServer()) - _ = server.Serve(lis) - defer server.GracefulStop() + + transcodeServer := newTranscodeServer(flagset, server) + + done := make(chan os.Signal, 1) + signal.Notify(done, os.Interrupt, syscall.SIGINT, syscall.SIGTERM) + go func() { + err := transcodeServer.ListenAndServeTLS(flagset.certFile, flagset.keyFile) + if err != nil && !errors.Is(err, http.ErrServerClosed) { + log.Fatalln(err) + } + }() + go func() { + _ = server.Serve(lis) + }() + <-done + server.GracefulStop() } func newTLSConfig(certFile, keyFile string) *tls.Config { @@ -121,3 +145,12 @@ func newTLSConfig(certFile, keyFile string) *tls.Config { RootCAs: caCertPool, } } + +func newTranscodeServer(flags *flags, server *grpc.Server) *http.Server { + handler := connect.GRPCHandler(server) + transcodeServer := &http.Server{ + Addr: ":" + flags.transcodePort, + } + transcodeServer.Handler = h2c.NewHandler(handler, &http2.Server{}) + return transcodeServer +} diff --git a/docker-compose.yaml b/docker-compose.yaml index 7a24995f..ee8e5e39 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -17,9 +17,10 @@ services: dockerfile: Dockerfile.crosstest args: TEST_CONNECT_GO_BRANCH: "${TEST_CONNECT_GO_BRANCH:-}" - entrypoint: /usr/local/bin/servergrpc --port "8083" --cert "cert/server-grpc.crt" --key "cert/server-grpc.key" + entrypoint: /usr/local/bin/servergrpc --port "8083" --transcodeport "8084" --cert "cert/server-grpc.crt" --key "cert/server-grpc.key" ports: - "8083:8083" + - "8084:8084" envoy: image: envoyproxy/envoy:v1.20-latest ports: @@ -130,6 +131,15 @@ services: entrypoint: /usr/local/bin/client --host="server-grpc" --port="8083" --implementation="connect-grpc-h2" --cert "cert/client.crt" --key "cert/client.key" depends_on: - server-grpc + client-connect-to-server-grpc-transcode-h1: + build: + context: . + dockerfile: Dockerfile.crosstest + args: + TEST_CONNECT_GO_BRANCH: "${TEST_CONNECT_GO_BRANCH:-}" + entrypoint: /usr/local/bin/client --host="server-grpc" --port="8084" --implementation="connect-h1" --cert "cert/client.crt" --key "cert/client.key" + depends_on: + - server-grpc client-grpc-to-server-connect: build: context: . diff --git a/go.mod b/go.mod index 8ca76a0a..e5565561 100644 --- a/go.mod +++ b/go.mod @@ -3,14 +3,14 @@ module github.com/bufbuild/connect-crosstest go 1.18 require ( - github.com/bufbuild/connect-go v1.7.0 + github.com/bufbuild/connect-go v1.8.1-0.20230621195536-9a358b4148b8 github.com/quic-go/quic-go v0.33.0 github.com/rs/cors v1.8.3 github.com/spf13/cobra v1.6.1 github.com/stretchr/testify v1.8.2 golang.org/x/net v0.8.0 google.golang.org/grpc v1.53.0 - google.golang.org/protobuf v1.28.1 + google.golang.org/protobuf v1.30.0 ) require ( diff --git a/go.sum b/go.sum index 52a114d8..2c1cb4d1 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,9 @@ github.com/bufbuild/connect-go v1.7.0 h1:MGp82v7SCza+3RhsVhV7aMikwxvI3ZfD72YiGt8FYJo= github.com/bufbuild/connect-go v1.7.0/go.mod h1:GmMJYR6orFqD0Y6ZgX8pwQ8j9baizDrIQMm1/a6LnHk= +github.com/bufbuild/connect-go v1.8.1-0.20230621163608-20c3d4533d6d h1:RDFrbJqNm/xIAKLVfljLnoDpXgNQoxLYelN8bOhwuUU= +github.com/bufbuild/connect-go v1.8.1-0.20230621163608-20c3d4533d6d/go.mod h1:GmMJYR6orFqD0Y6ZgX8pwQ8j9baizDrIQMm1/a6LnHk= +github.com/bufbuild/connect-go v1.8.1-0.20230621195536-9a358b4148b8 h1:luA5f1GK92mmhm5Axl4a9yaewROpCC3fw0KLz3TJkfM= +github.com/bufbuild/connect-go v1.8.1-0.20230621195536-9a358b4148b8/go.mod h1:GmMJYR6orFqD0Y6ZgX8pwQ8j9baizDrIQMm1/a6LnHk= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -103,6 +107,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 26818d0b7d0e15240f99bf8bdf7ddb3900098b7e Mon Sep 17 00:00:00 2001 From: Edward McFarlane Date: Wed, 21 Jun 2023 21:44:01 +0100 Subject: [PATCH 2/5] Use 8085 to avoid port conflict --- docker-compose.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index ee8e5e39..780c6212 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -17,10 +17,10 @@ services: dockerfile: Dockerfile.crosstest args: TEST_CONNECT_GO_BRANCH: "${TEST_CONNECT_GO_BRANCH:-}" - entrypoint: /usr/local/bin/servergrpc --port "8083" --transcodeport "8084" --cert "cert/server-grpc.crt" --key "cert/server-grpc.key" + entrypoint: /usr/local/bin/servergrpc --port "8083" --transcodeport "8085" --cert "cert/server-grpc.crt" --key "cert/server-grpc.key" ports: - "8083:8083" - - "8084:8084" + - "8085:8085" envoy: image: envoyproxy/envoy:v1.20-latest ports: @@ -137,7 +137,7 @@ services: dockerfile: Dockerfile.crosstest args: TEST_CONNECT_GO_BRANCH: "${TEST_CONNECT_GO_BRANCH:-}" - entrypoint: /usr/local/bin/client --host="server-grpc" --port="8084" --implementation="connect-h1" --cert "cert/client.crt" --key "cert/client.key" + entrypoint: /usr/local/bin/client --host="server-grpc" --port="8085" --implementation="connect-h1" --cert "cert/client.crt" --key "cert/client.key" depends_on: - server-grpc client-grpc-to-server-connect: From 56605db318e2484943d32c7d4da3b0bc81707284 Mon Sep 17 00:00:00 2001 From: Edward McFarlane Date: Thu, 22 Jun 2023 15:05:26 +0100 Subject: [PATCH 3/5] Add connect-gRPC web to grpc transcode test --- Makefile | 2 ++ cmd/servergrpc/main.go | 4 +++- docker-compose.yaml | 18 ++++++++++++++++++ go.mod | 2 +- go.sum | 6 ++++++ 5 files changed, 30 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 594eeb0a..44a27103 100644 --- a/Makefile +++ b/Makefile @@ -93,6 +93,8 @@ dockercomposetestgo: dockercomposeclean docker-compose run client-connect-grpc-web-to-envoy-server-grpc-h1 docker-compose run client-connect-grpc-to-server-grpc docker-compose run client-connect-to-server-grpc-transcode-h1 + docker-compose run client-connect-to-server-grpc-transcode-h2 + docker-compose run client-connect-grpc-web-to-server-grpc-transcode-h2 docker-compose run client-grpc-to-server-connect docker-compose run client-grpc-to-server-grpc $(MAKE) dockercomposeclean diff --git a/cmd/servergrpc/main.go b/cmd/servergrpc/main.go index 1a7ad510..b0a165a5 100644 --- a/cmd/servergrpc/main.go +++ b/cmd/servergrpc/main.go @@ -25,6 +25,7 @@ import ( "os" "os/signal" "syscall" + "time" testrpc "github.com/bufbuild/connect-crosstest/internal/gen/proto/go/grpc/testing" serverpb "github.com/bufbuild/connect-crosstest/internal/gen/proto/go/server/v1" @@ -149,7 +150,8 @@ func newTLSConfig(certFile, keyFile string) *tls.Config { func newTranscodeServer(flags *flags, server *grpc.Server) *http.Server { handler := connect.GRPCHandler(server) transcodeServer := &http.Server{ - Addr: ":" + flags.transcodePort, + Addr: ":" + flags.transcodePort, + ReadHeaderTimeout: 3 * time.Second, } transcodeServer.Handler = h2c.NewHandler(handler, &http2.Server{}) return transcodeServer diff --git a/docker-compose.yaml b/docker-compose.yaml index 780c6212..c9a9c750 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -140,6 +140,24 @@ services: entrypoint: /usr/local/bin/client --host="server-grpc" --port="8085" --implementation="connect-h1" --cert "cert/client.crt" --key "cert/client.key" depends_on: - server-grpc + client-connect-to-server-grpc-transcode-h2: + build: + context: . + dockerfile: Dockerfile.crosstest + args: + TEST_CONNECT_GO_BRANCH: "${TEST_CONNECT_GO_BRANCH:-}" + entrypoint: /usr/local/bin/client --host="server-grpc" --port="8085" --implementation="connect-h2" --cert "cert/client.crt" --key "cert/client.key" + depends_on: + - server-grpc + client-connect-grpc-web-to-server-grpc-transcode-h2: + build: + context: . + dockerfile: Dockerfile.crosstest + args: + TEST_CONNECT_GO_BRANCH: "${TEST_CONNECT_GO_BRANCH:-}" + entrypoint: /usr/local/bin/client --host="server-grpc" --port="8085" --implementation="connect-grpc-web-h2" --cert "cert/client.crt" --key "cert/client.key" + depends_on: + - server-grpc client-grpc-to-server-connect: build: context: . diff --git a/go.mod b/go.mod index e5565561..32cc4fd2 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/bufbuild/connect-crosstest go 1.18 require ( - github.com/bufbuild/connect-go v1.8.1-0.20230621195536-9a358b4148b8 + github.com/bufbuild/connect-go v1.8.1-0.20230622140301-2ba61a8ca1ae github.com/quic-go/quic-go v0.33.0 github.com/rs/cors v1.8.3 github.com/spf13/cobra v1.6.1 diff --git a/go.sum b/go.sum index 2c1cb4d1..02098eb0 100644 --- a/go.sum +++ b/go.sum @@ -4,6 +4,12 @@ github.com/bufbuild/connect-go v1.8.1-0.20230621163608-20c3d4533d6d h1:RDFrbJqNm github.com/bufbuild/connect-go v1.8.1-0.20230621163608-20c3d4533d6d/go.mod h1:GmMJYR6orFqD0Y6ZgX8pwQ8j9baizDrIQMm1/a6LnHk= github.com/bufbuild/connect-go v1.8.1-0.20230621195536-9a358b4148b8 h1:luA5f1GK92mmhm5Axl4a9yaewROpCC3fw0KLz3TJkfM= github.com/bufbuild/connect-go v1.8.1-0.20230621195536-9a358b4148b8/go.mod h1:GmMJYR6orFqD0Y6ZgX8pwQ8j9baizDrIQMm1/a6LnHk= +github.com/bufbuild/connect-go v1.8.1-0.20230622114132-905be91fe811 h1:6wEO+vfZJpx+zlVPabKV/V/2gWmfwa72lqgEVdATFZM= +github.com/bufbuild/connect-go v1.8.1-0.20230622114132-905be91fe811/go.mod h1:GmMJYR6orFqD0Y6ZgX8pwQ8j9baizDrIQMm1/a6LnHk= +github.com/bufbuild/connect-go v1.8.1-0.20230622134822-f008229488ec h1:GZHPpEMcVDFiYBFrBCrQKB963tQeNx06rJMlp1IFpGI= +github.com/bufbuild/connect-go v1.8.1-0.20230622134822-f008229488ec/go.mod h1:GmMJYR6orFqD0Y6ZgX8pwQ8j9baizDrIQMm1/a6LnHk= +github.com/bufbuild/connect-go v1.8.1-0.20230622140301-2ba61a8ca1ae h1:48tBlO+djhMJskaPCZfn8WICZDWw9BCvwnT5jcujGXI= +github.com/bufbuild/connect-go v1.8.1-0.20230622140301-2ba61a8ca1ae/go.mod h1:GmMJYR6orFqD0Y6ZgX8pwQ8j9baizDrIQMm1/a6LnHk= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= From a0deaae71040861cc308aea26b8d7fec5e789d5d Mon Sep 17 00:00:00 2001 From: Edward McFarlane Date: Fri, 23 Jun 2023 15:36:56 +0100 Subject: [PATCH 4/5] Rename to gRPC adapter --- Makefile | 6 +++--- cmd/servergrpc/main.go | 34 +++++++++++++++++----------------- docker-compose.yaml | 8 ++++---- go.mod | 2 +- go.sum | 2 ++ 5 files changed, 27 insertions(+), 25 deletions(-) diff --git a/Makefile b/Makefile index 44a27103..6550b77e 100644 --- a/Makefile +++ b/Makefile @@ -92,9 +92,9 @@ dockercomposetestgo: dockercomposeclean docker-compose run client-connect-grpc-web-to-envoy-server-connect-h1 docker-compose run client-connect-grpc-web-to-envoy-server-grpc-h1 docker-compose run client-connect-grpc-to-server-grpc - docker-compose run client-connect-to-server-grpc-transcode-h1 - docker-compose run client-connect-to-server-grpc-transcode-h2 - docker-compose run client-connect-grpc-web-to-server-grpc-transcode-h2 + docker-compose run client-connect-to-server-grpc-adapter-h1 + docker-compose run client-connect-to-server-grpc-adapter-h2 + docker-compose run client-connect-grpc-web-to-server-grpc-adapter-h2 docker-compose run client-grpc-to-server-connect docker-compose run client-grpc-to-server-grpc $(MAKE) dockercomposeclean diff --git a/cmd/servergrpc/main.go b/cmd/servergrpc/main.go index b0a165a5..1de6c328 100644 --- a/cmd/servergrpc/main.go +++ b/cmd/servergrpc/main.go @@ -41,17 +41,17 @@ import ( ) const ( - portFlagName = "port" - transcodePortFlagName = "transcodeport" - certFlagName = "cert" - keyFlagName = "key" + portFlagName = "port" + adapterPortFlagName = "adapterport" + certFlagName = "cert" + keyFlagName = "key" ) type flags struct { - port string - transcodePort string - certFile string - keyFile string + port string + adapterPort string + certFile string + keyFile string } func main() { @@ -71,7 +71,7 @@ func main() { func bind(cmd *cobra.Command, flagset *flags) error { cmd.Flags().StringVar(&flagset.port, portFlagName, "", "the port the server will listen on") - cmd.Flags().StringVar(&flagset.transcodePort, transcodePortFlagName, "", "port for gRPC transcode traffic") + cmd.Flags().StringVar(&flagset.adapterPort, adapterPortFlagName, "", "port for gRPC adapter traffic") cmd.Flags().StringVar(&flagset.certFile, certFlagName, "", "path to the TLS cert file") cmd.Flags().StringVar(&flagset.keyFile, keyFlagName, "", "path to the TLS key file") for _, requiredFlag := range []string{portFlagName, certFlagName, keyFlagName} { @@ -112,12 +112,12 @@ func run(flagset *flags) { _, _ = fmt.Fprintln(os.Stdout, string(bytes)) testrpc.RegisterTestServiceServer(server, interopgrpc.NewTestServer()) - transcodeServer := newTranscodeServer(flagset, server) + adapterServer := newAdapterServer(flagset, server) done := make(chan os.Signal, 1) signal.Notify(done, os.Interrupt, syscall.SIGINT, syscall.SIGTERM) go func() { - err := transcodeServer.ListenAndServeTLS(flagset.certFile, flagset.keyFile) + err := adapterServer.ListenAndServeTLS(flagset.certFile, flagset.keyFile) if err != nil && !errors.Is(err, http.ErrServerClosed) { log.Fatalln(err) } @@ -147,12 +147,12 @@ func newTLSConfig(certFile, keyFile string) *tls.Config { } } -func newTranscodeServer(flags *flags, server *grpc.Server) *http.Server { - handler := connect.GRPCHandler(server) - transcodeServer := &http.Server{ - Addr: ":" + flags.transcodePort, +func newAdapterServer(flags *flags, server *grpc.Server) *http.Server { + handler := connect.NewGRPCAdapter(server) + adapterServer := &http.Server{ + Addr: ":" + flags.adapterPort, ReadHeaderTimeout: 3 * time.Second, } - transcodeServer.Handler = h2c.NewHandler(handler, &http2.Server{}) - return transcodeServer + adapterServer.Handler = h2c.NewHandler(handler, &http2.Server{}) + return adapterServer } diff --git a/docker-compose.yaml b/docker-compose.yaml index c9a9c750..fac822b3 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -17,7 +17,7 @@ services: dockerfile: Dockerfile.crosstest args: TEST_CONNECT_GO_BRANCH: "${TEST_CONNECT_GO_BRANCH:-}" - entrypoint: /usr/local/bin/servergrpc --port "8083" --transcodeport "8085" --cert "cert/server-grpc.crt" --key "cert/server-grpc.key" + entrypoint: /usr/local/bin/servergrpc --port "8083" --adapterport "8085" --cert "cert/server-grpc.crt" --key "cert/server-grpc.key" ports: - "8083:8083" - "8085:8085" @@ -131,7 +131,7 @@ services: entrypoint: /usr/local/bin/client --host="server-grpc" --port="8083" --implementation="connect-grpc-h2" --cert "cert/client.crt" --key "cert/client.key" depends_on: - server-grpc - client-connect-to-server-grpc-transcode-h1: + client-connect-to-server-grpc-adapter-h1: build: context: . dockerfile: Dockerfile.crosstest @@ -140,7 +140,7 @@ services: entrypoint: /usr/local/bin/client --host="server-grpc" --port="8085" --implementation="connect-h1" --cert "cert/client.crt" --key "cert/client.key" depends_on: - server-grpc - client-connect-to-server-grpc-transcode-h2: + client-connect-to-server-grpc-adapter-h2: build: context: . dockerfile: Dockerfile.crosstest @@ -149,7 +149,7 @@ services: entrypoint: /usr/local/bin/client --host="server-grpc" --port="8085" --implementation="connect-h2" --cert "cert/client.crt" --key "cert/client.key" depends_on: - server-grpc - client-connect-grpc-web-to-server-grpc-transcode-h2: + client-connect-grpc-web-to-server-grpc-adapter-h2: build: context: . dockerfile: Dockerfile.crosstest diff --git a/go.mod b/go.mod index 32cc4fd2..72fbc80d 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/bufbuild/connect-crosstest go 1.18 require ( - github.com/bufbuild/connect-go v1.8.1-0.20230622140301-2ba61a8ca1ae + github.com/bufbuild/connect-go v1.8.1-0.20230623114306-a88b0b702130 github.com/quic-go/quic-go v0.33.0 github.com/rs/cors v1.8.3 github.com/spf13/cobra v1.6.1 diff --git a/go.sum b/go.sum index 02098eb0..a3db42f8 100644 --- a/go.sum +++ b/go.sum @@ -10,6 +10,8 @@ github.com/bufbuild/connect-go v1.8.1-0.20230622134822-f008229488ec h1:GZHPpEMcV github.com/bufbuild/connect-go v1.8.1-0.20230622134822-f008229488ec/go.mod h1:GmMJYR6orFqD0Y6ZgX8pwQ8j9baizDrIQMm1/a6LnHk= github.com/bufbuild/connect-go v1.8.1-0.20230622140301-2ba61a8ca1ae h1:48tBlO+djhMJskaPCZfn8WICZDWw9BCvwnT5jcujGXI= github.com/bufbuild/connect-go v1.8.1-0.20230622140301-2ba61a8ca1ae/go.mod h1:GmMJYR6orFqD0Y6ZgX8pwQ8j9baizDrIQMm1/a6LnHk= +github.com/bufbuild/connect-go v1.8.1-0.20230623114306-a88b0b702130 h1:ZdLI77MnxOeq4hc6OYpNWbE4jXLb6ZzlHhY8e8sXuXo= +github.com/bufbuild/connect-go v1.8.1-0.20230623114306-a88b0b702130/go.mod h1:GmMJYR6orFqD0Y6ZgX8pwQ8j9baizDrIQMm1/a6LnHk= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= From 754f52d085563b5af7034f045c7f64fcd30b94e0 Mon Sep 17 00:00:00 2001 From: Edward McFarlane Date: Mon, 3 Jul 2023 11:07:02 +0100 Subject: [PATCH 5/5] Update to grpcadapter --- Makefile | 7 ++++--- cmd/servergrpc/main.go | 4 ++-- docker-compose.yaml | 12 ++++++------ go.mod | 10 +++++----- go.sum | 28 ++++++++++++---------------- 5 files changed, 29 insertions(+), 32 deletions(-) diff --git a/Makefile b/Makefile index c20408d0..78e067ca 100644 --- a/Makefile +++ b/Makefile @@ -86,6 +86,8 @@ dockercomposetestgo: dockercomposeclean docker-compose run client-connect-go-to-server-connect-go-h3 docker-compose run client-connect-go-to-server-connect-node-fastify-h1 docker-compose run client-connect-go-to-server-connect-node-fastify-h2 + docker-compose run client-connect-go-to-server-grpc-adapter-h1 + docker-compose run client-connect-go-to-server-grpc-adapter-h2 docker-compose run client-connect-go-grpc-to-server-connect-node-fastify-h1 docker-compose run client-connect-go-grpc-to-server-connect-node-fastify-h2 docker-compose run client-connect-go-grpc-web-to-server-connect-node-fastify-h1 @@ -98,13 +100,12 @@ dockercomposetestgo: dockercomposeclean docker-compose run client-connect-go-grpc-web-to-envoy-server-connect-go-h1 docker-compose run client-connect-go-grpc-web-to-envoy-server-grpc-go-h1 docker-compose run client-connect-go-grpc-web-to-envoy-server-connect-node-fastify-h1 + docker-compose run client-connect-go-grpc-web-to-server-grpc-adapter-h2 docker-compose run client-connect-go-grpc-to-server-grpc-go docker-compose run client-grpc-go-to-server-connect-go docker-compose run client-grpc-go-to-server-grpc-go docker-compose run client-grpc-go-to-server-connect-node-fastify - docker-compose run client-connect-grpc-to-server-grpc - docker-compose run client-connect-to-server-grpc-adapter-h1 - docker-compose run client-connect-to-server-grpc-adapter-h2 + $(MAKE) dockercomposeclean .PHONY: dockercomposetestweb diff --git a/cmd/servergrpc/main.go b/cmd/servergrpc/main.go index 1de6c328..180765b7 100644 --- a/cmd/servergrpc/main.go +++ b/cmd/servergrpc/main.go @@ -30,7 +30,7 @@ import ( testrpc "github.com/bufbuild/connect-crosstest/internal/gen/proto/go/grpc/testing" serverpb "github.com/bufbuild/connect-crosstest/internal/gen/proto/go/server/v1" "github.com/bufbuild/connect-crosstest/internal/interop/interopgrpc" - connect "github.com/bufbuild/connect-go" + "github.com/bufbuild/connect-go/grpcadapter" "github.com/spf13/cobra" "golang.org/x/net/http2" "golang.org/x/net/http2/h2c" @@ -148,7 +148,7 @@ func newTLSConfig(certFile, keyFile string) *tls.Config { } func newAdapterServer(flags *flags, server *grpc.Server) *http.Server { - handler := connect.NewGRPCAdapter(server) + handler := grpcadapter.NewHandler(server) adapterServer := &http.Server{ Addr: ":" + flags.adapterPort, ReadHeaderTimeout: 3 * time.Second, diff --git a/docker-compose.yaml b/docker-compose.yaml index 289119f0..861e4a57 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -226,28 +226,28 @@ services: entrypoint: /usr/local/bin/client --host="server-grpc" --port="8083" --implementation="connect-grpc-h2" --cert "cert/client.crt" --key "cert/client.key" depends_on: - server-grpc - client-connect-to-server-grpc-adapter-h1: + client-connect-go-to-server-grpc-adapter-h1: build: context: . - dockerfile: Dockerfile.crosstest + dockerfile: Dockerfile.crosstestgo args: TEST_CONNECT_GO_BRANCH: "${TEST_CONNECT_GO_BRANCH:-}" entrypoint: /usr/local/bin/client --host="server-grpc" --port="8085" --implementation="connect-h1" --cert "cert/client.crt" --key "cert/client.key" depends_on: - server-grpc - client-connect-to-server-grpc-adapter-h2: + client-connect-go-to-server-grpc-adapter-h2: build: context: . - dockerfile: Dockerfile.crosstest + dockerfile: Dockerfile.crosstestgo args: TEST_CONNECT_GO_BRANCH: "${TEST_CONNECT_GO_BRANCH:-}" entrypoint: /usr/local/bin/client --host="server-grpc" --port="8085" --implementation="connect-h2" --cert "cert/client.crt" --key "cert/client.key" depends_on: - server-grpc - client-connect-grpc-web-to-server-grpc-adapter-h2: + client-connect-go-grpc-web-to-server-grpc-adapter-h2: build: context: . - dockerfile: Dockerfile.crosstest + dockerfile: Dockerfile.crosstestgo args: TEST_CONNECT_GO_BRANCH: "${TEST_CONNECT_GO_BRANCH:-}" entrypoint: /usr/local/bin/client --host="server-grpc" --port="8085" --implementation="connect-grpc-web-h2" --cert "cert/client.crt" --key "cert/client.key" diff --git a/go.mod b/go.mod index 4d9de64b..7fb016cd 100644 --- a/go.mod +++ b/go.mod @@ -3,12 +3,12 @@ module github.com/bufbuild/connect-crosstest go 1.18 require ( - github.com/bufbuild/connect-go v1.8.1-0.20230623114306-a88b0b702130 + github.com/bufbuild/connect-go v1.9.1-0.20230630154638-574b6cb367e3 github.com/quic-go/quic-go v0.33.0 github.com/rs/cors v1.8.3 github.com/spf13/cobra v1.6.1 github.com/stretchr/testify v1.8.2 - golang.org/x/net v0.8.0 + golang.org/x/net v0.11.0 google.golang.org/grpc v1.53.0 google.golang.org/protobuf v1.31.0 ) @@ -27,11 +27,11 @@ require ( github.com/quic-go/qtls-go1-19 v0.2.1 // indirect github.com/quic-go/qtls-go1-20 v0.1.1 // indirect github.com/spf13/pflag v1.0.5 // indirect - golang.org/x/crypto v0.6.0 // indirect + golang.org/x/crypto v0.10.0 // indirect golang.org/x/exp v0.0.0-20230213192124-5e25df0256eb // indirect golang.org/x/mod v0.8.0 // indirect - golang.org/x/sys v0.6.0 // indirect - golang.org/x/text v0.8.0 // indirect + golang.org/x/sys v0.9.0 // indirect + golang.org/x/text v0.10.0 // indirect golang.org/x/tools v0.6.0 // indirect google.golang.org/genproto v0.0.0-20230221151758-ace64dc21148 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index dad952d7..44a9b2f0 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,5 @@ -github.com/bufbuild/connect-go v1.7.0 h1:MGp82v7SCza+3RhsVhV7aMikwxvI3ZfD72YiGt8FYJo= -github.com/bufbuild/connect-go v1.7.0/go.mod h1:GmMJYR6orFqD0Y6ZgX8pwQ8j9baizDrIQMm1/a6LnHk= -github.com/bufbuild/connect-go v1.8.1-0.20230623114306-a88b0b702130 h1:ZdLI77MnxOeq4hc6OYpNWbE4jXLb6ZzlHhY8e8sXuXo= -github.com/bufbuild/connect-go v1.8.1-0.20230623114306-a88b0b702130/go.mod h1:GmMJYR6orFqD0Y6ZgX8pwQ8j9baizDrIQMm1/a6LnHk= +github.com/bufbuild/connect-go v1.9.1-0.20230630154638-574b6cb367e3 h1:c84rcZWYmgiDnEQhgx8CHEKKfoPNkg1V5SSU6ree0vE= +github.com/bufbuild/connect-go v1.9.1-0.20230630154638-574b6cb367e3/go.mod h1:dg3XQQDFUWdXW/RQ4/J3/W5CO/WEsjeSUrALQw0uLt4= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -62,8 +60,8 @@ github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= 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.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= -golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= +golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= +golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= golang.org/x/exp v0.0.0-20230213192124-5e25df0256eb h1:PaBZQdo+iSDyHT053FjUCgZQ/9uqVwPOcl7KSWhKn6w= golang.org/x/exp v0.0.0-20230213192124-5e25df0256eb/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -72,8 +70,8 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= 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-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= +golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -81,13 +79,13 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w 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/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= +golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 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.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= +golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= @@ -103,10 +101,8 @@ google.golang.org/grpc v1.53.0 h1:LAv2ds7cmFV/XTS3XG1NneeENYrXGmorPxsBbptIjNc= google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= 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.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= -google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= -google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=