From d674fa3e3799c30103cdde661b5d60947eda65a5 Mon Sep 17 00:00:00 2001 From: "Mark D. Roth" Date: Mon, 1 Jun 2020 14:39:37 -0700 Subject: [PATCH] Support xDS via both "xds" and "xds-experimental" URI schemes. --- examples/python/xds/README.md | 2 +- .../client_channel/resolver/xds/xds_resolver.cc | 16 ++++++++++++++-- test/cpp/end2end/xds_end2end_test.cc | 3 +-- .../grpc_xds_bazel_python_test_in_docker.sh | 2 +- .../linux/grpc_xds_bazel_test_in_docker.sh | 2 +- .../linux/grpc_xds_csharp_test_in_docker.sh | 2 +- .../linux/grpc_xds_php_test_in_docker.sh | 2 +- .../linux/grpc_xds_ruby_test_in_docker.sh | 2 +- 8 files changed, 21 insertions(+), 10 deletions(-) diff --git a/examples/python/xds/README.md b/examples/python/xds/README.md index 28014c7c965..ceb59216ce1 100644 --- a/examples/python/xds/README.md +++ b/examples/python/xds/README.md @@ -57,7 +57,7 @@ export GRPC_XDS_BOOTSTRAP=/etc/xds-bootstrap.json Finally, run your client: ``` -python client.py xds-experimental:///my-backend +python client.py xds:///my-backend ``` Alternatively, `grpcurl` can be used to test your server. If you don't have it, diff --git a/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc b/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc index 28ea4bb5c17..d3b79e39e2c 100644 --- a/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +++ b/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc @@ -144,6 +144,8 @@ void XdsResolver::StartLocked() { class XdsResolverFactory : public ResolverFactory { public: + explicit XdsResolverFactory(const char* scheme) : scheme_(scheme) {} + bool IsValidUri(const grpc_uri* uri) const override { if (GPR_UNLIKELY(0 != strcmp(uri->authority, ""))) { gpr_log(GPR_ERROR, "URI authority not supported"); @@ -157,16 +159,26 @@ class XdsResolverFactory : public ResolverFactory { return MakeOrphanable(std::move(args)); } - const char* scheme() const override { return "xds-experimental"; } + const char* scheme() const override { return scheme_; } + + private: + const char* scheme_; }; +constexpr char kXdsScheme[] = "xds"; +constexpr char kXdsExperimentalScheme[] = "xds-experimental"; + } // namespace } // namespace grpc_core void grpc_resolver_xds_init() { grpc_core::ResolverRegistry::Builder::RegisterResolverFactory( - absl::make_unique()); + absl::make_unique(grpc_core::kXdsScheme)); + // TODO(roth): Remov this in the 1.31 release. + grpc_core::ResolverRegistry::Builder::RegisterResolverFactory( + absl::make_unique( + grpc_core::kXdsExperimentalScheme)); } void grpc_resolver_xds_shutdown() {} diff --git a/test/cpp/end2end/xds_end2end_test.cc b/test/cpp/end2end/xds_end2end_test.cc index a8e66858953..4c1402a4d22 100644 --- a/test/cpp/end2end/xds_end2end_test.cc +++ b/test/cpp/end2end/xds_end2end_test.cc @@ -1201,8 +1201,7 @@ class XdsEnd2endTest : public ::testing::TestWithParam { if (!expected_targets.empty()) { args.SetString(GRPC_ARG_FAKE_SECURITY_EXPECTED_TARGETS, expected_targets); } - grpc::string scheme = - GetParam().use_xds_resolver() ? "xds-experimental" : "fake"; + grpc::string scheme = GetParam().use_xds_resolver() ? "xds" : "fake"; std::ostringstream uri; uri << scheme << ":///" << kApplicationTargetName_; // TODO(dgq): templatize tests to run everything using both secure and diff --git a/tools/internal_ci/linux/grpc_xds_bazel_python_test_in_docker.sh b/tools/internal_ci/linux/grpc_xds_bazel_python_test_in_docker.sh index a9a74eef377..12729543bdb 100755 --- a/tools/internal_ci/linux/grpc_xds_bazel_python_test_in_docker.sh +++ b/tools/internal_ci/linux/grpc_xds_bazel_python_test_in_docker.sh @@ -56,4 +56,4 @@ GRPC_VERBOSITY=debug GRPC_TRACE=xds_client,xds_resolver,cds_lb,eds_lb,priority_l --path_to_server_binary=/java_server/grpc-java/interop-testing/build/install/grpc-interop-testing/bin/xds-test-server \ --gcp_suffix=$(date '+%s') \ --verbose \ - --client_cmd='bazel run //src/python/grpcio_tests/tests_py3_only/interop:xds_interop_client -- --server=xds-experimental:///{server_uri} --stats_port={stats_port} --qps={qps} --verbose' + --client_cmd='bazel run //src/python/grpcio_tests/tests_py3_only/interop:xds_interop_client -- --server=xds:///{server_uri} --stats_port={stats_port} --qps={qps} --verbose' diff --git a/tools/internal_ci/linux/grpc_xds_bazel_test_in_docker.sh b/tools/internal_ci/linux/grpc_xds_bazel_test_in_docker.sh index 54ade769e75..667dc7c7e36 100755 --- a/tools/internal_ci/linux/grpc_xds_bazel_test_in_docker.sh +++ b/tools/internal_ci/linux/grpc_xds_bazel_test_in_docker.sh @@ -56,4 +56,4 @@ GRPC_VERBOSITY=debug GRPC_TRACE=xds_client,xds_resolver,cds_lb,eds_lb,priority_l --path_to_server_binary=/java_server/grpc-java/interop-testing/build/install/grpc-interop-testing/bin/xds-test-server \ --gcp_suffix=$(date '+%s') \ --verbose \ - --client_cmd='bazel-bin/test/cpp/interop/xds_interop_client --server=xds-experimental:///{server_uri} --stats_port={stats_port} --qps={qps} {fail_on_failed_rpc}' + --client_cmd='bazel-bin/test/cpp/interop/xds_interop_client --server=xds:///{server_uri} --stats_port={stats_port} --qps={qps} {fail_on_failed_rpc}' diff --git a/tools/internal_ci/linux/grpc_xds_csharp_test_in_docker.sh b/tools/internal_ci/linux/grpc_xds_csharp_test_in_docker.sh index c5eef3be572..03ecbc4b32c 100755 --- a/tools/internal_ci/linux/grpc_xds_csharp_test_in_docker.sh +++ b/tools/internal_ci/linux/grpc_xds_csharp_test_in_docker.sh @@ -56,4 +56,4 @@ GRPC_VERBOSITY=debug GRPC_TRACE=xds_client,xds_resolver,cds_lb,eds_lb,priority_l --path_to_server_binary=/java_server/grpc-java/interop-testing/build/install/grpc-interop-testing/bin/xds-test-server \ --gcp_suffix=$(date '+%s') \ --verbose \ - --client_cmd='dotnet exec src/csharp/Grpc.IntegrationTesting.XdsClient/bin/Release/netcoreapp2.1/Grpc.IntegrationTesting.XdsClient.dll -- --server=xds-experimental:///{server_uri} --stats_port={stats_port} --qps={qps}' + --client_cmd='dotnet exec src/csharp/Grpc.IntegrationTesting.XdsClient/bin/Release/netcoreapp2.1/Grpc.IntegrationTesting.XdsClient.dll -- --server=xds:///{server_uri} --stats_port={stats_port} --qps={qps}' diff --git a/tools/internal_ci/linux/grpc_xds_php_test_in_docker.sh b/tools/internal_ci/linux/grpc_xds_php_test_in_docker.sh index 0d971d7b69b..c0bbcea535b 100755 --- a/tools/internal_ci/linux/grpc_xds_php_test_in_docker.sh +++ b/tools/internal_ci/linux/grpc_xds_php_test_in_docker.sh @@ -70,4 +70,4 @@ GRPC_VERBOSITY=debug GRPC_TRACE=xds_client,xds_resolver,cds_lb,eds_lb,priority_l --gcp_suffix=$(date '+%s') \ --only_stable_gcp_apis \ --verbose \ - --client_cmd='php -d extension=grpc.so -d extension=pthreads.so src/php/tests/interop/xds_client.php --server=xds-experimental:///{server_uri} --stats_port={stats_port} --qps={qps}' + --client_cmd='php -d extension=grpc.so -d extension=pthreads.so src/php/tests/interop/xds_client.php --server=xds:///{server_uri} --stats_port={stats_port} --qps={qps}' diff --git a/tools/internal_ci/linux/grpc_xds_ruby_test_in_docker.sh b/tools/internal_ci/linux/grpc_xds_ruby_test_in_docker.sh index 2cf3d46d0d3..8d643e3ad25 100644 --- a/tools/internal_ci/linux/grpc_xds_ruby_test_in_docker.sh +++ b/tools/internal_ci/linux/grpc_xds_ruby_test_in_docker.sh @@ -57,4 +57,4 @@ GRPC_VERBOSITY=debug GRPC_TRACE=xds_client,xds_resolver,cds_lb,eds_lb,priority_l --gcp_suffix=$(date '+%s') \ --only_stable_gcp_apis \ --verbose \ - --client_cmd='ruby src/ruby/pb/test/xds_client.rb --server=xds-experimental:///{server_uri} --stats_port={stats_port} --qps={qps}' + --client_cmd='ruby src/ruby/pb/test/xds_client.rb --server=xds:///{server_uri} --stats_port={stats_port} --qps={qps}'