diff --git a/test/core/transport/chttp2/too_many_pings_test.cc b/test/core/transport/chttp2/too_many_pings_test.cc index eda676191ff..4bbbf8a2764 100644 --- a/test/core/transport/chttp2/too_many_pings_test.cc +++ b/test/core/transport/chttp2/too_many_pings_test.cc @@ -29,7 +29,6 @@ #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" -#include "absl/strings/string_view.h" #include "absl/time/time.h" #include "gtest/gtest.h" @@ -107,23 +106,6 @@ class TransportCounter { int TransportCounter::count_ = 0; -class TooManyPings : public ::testing::Test { - protected: - void SetUp() override { - bool localhost_resolves_to_ipv4 = false; - bool localhost_resolves_to_ipv6 = false; - grpc_core::LocalhostResolves(&localhost_resolves_to_ipv4, - &localhost_resolves_to_ipv6); - ipv6_only_ = !localhost_resolves_to_ipv4 && localhost_resolves_to_ipv6; - } - - absl::string_view GetLocalIp() const { - return ipv6_only_ ? "[::1]" : "127.0.0.1"; - } - - bool ipv6_only_; -}; - // Perform a simple RPC where the server cancels the request with // grpc_call_cancel_with_status grpc_status_code PerformCall(grpc_channel* channel, grpc_server* server, @@ -196,12 +178,12 @@ grpc_status_code PerformCall(grpc_channel* channel, grpc_server* server, // Test that sending a lot of RPCs that are cancelled by the server doesn't // result in too many pings due to the pings sent by BDP. -TEST_F(TooManyPings, TestLotsOfServerCancelledRpcsDoesntGiveTooManyPings) { +TEST(TooManyPings, TestLotsOfServerCancelledRpcsDoesntGiveTooManyPings) { grpc_completion_queue* cq = grpc_completion_queue_create_for_next(nullptr); // create the server grpc_server* server = grpc_server_create(nullptr, nullptr); - std::string server_address = - grpc_core::JoinHostPort(GetLocalIp(), grpc_pick_unused_port_or_die()); + std::string server_address = grpc_core::JoinHostPort( + grpc_core::LocalIp(), grpc_pick_unused_port_or_die()); grpc_server_register_completion_queue(server, cq, nullptr); grpc_server_credentials* server_creds = grpc_insecure_server_credentials_create(); @@ -370,7 +352,7 @@ void VerifyChannelDisconnected(grpc_channel* channel, // necessary. } -class KeepaliveThrottlingTest : public TooManyPings { +class KeepaliveThrottlingTest : public ::testing::Test { protected: // Starts the server and makes sure that the channel is able to get connected. grpc_server* ServerStart(const char* addr, grpc_completion_queue* cq) { @@ -399,8 +381,8 @@ class KeepaliveThrottlingTest : public TooManyPings { TEST_F(KeepaliveThrottlingTest, KeepaliveThrottlingMultipleChannels) { grpc_completion_queue* cq = grpc_completion_queue_create_for_next(nullptr); - std::string server_address = - grpc_core::JoinHostPort(GetLocalIp(), grpc_pick_unused_port_or_die()); + std::string server_address = grpc_core::JoinHostPort( + grpc_core::LocalIp(), grpc_pick_unused_port_or_die()); grpc_server* server = ServerStart(server_address.c_str(), cq); // create two channel with a keepalive ping interval of 1 second. grpc_arg client_args[] = { @@ -473,10 +455,10 @@ grpc_core::Resolver::Result BuildResolverResult( TEST_F(KeepaliveThrottlingTest, NewSubchannelsUseUpdatedKeepaliveTime) { grpc_core::ExecCtx exec_ctx; grpc_completion_queue* cq = grpc_completion_queue_create_for_next(nullptr); - std::string server_address1 = - grpc_core::JoinHostPort(GetLocalIp(), grpc_pick_unused_port_or_die()); - std::string server_address2 = - grpc_core::JoinHostPort(GetLocalIp(), grpc_pick_unused_port_or_die()); + std::string server_address1 = grpc_core::JoinHostPort( + grpc_core::LocalIp(), grpc_pick_unused_port_or_die()); + std::string server_address2 = grpc_core::JoinHostPort( + grpc_core::LocalIp(), grpc_pick_unused_port_or_die()); grpc_server* server1 = ServerStart(server_address1.c_str(), cq); grpc_server* server2 = ServerStart(server_address2.c_str(), cq); // create a single channel with multiple subchannels with a keepalive ping @@ -550,10 +532,10 @@ TEST_F(KeepaliveThrottlingTest, NewSubchannelsUseUpdatedKeepaliveTime) { TEST_F(KeepaliveThrottlingTest, ExistingSubchannelsUseNewKeepaliveTimeWhenReconnecting) { grpc_completion_queue* cq = grpc_completion_queue_create_for_next(nullptr); - std::string server_address1 = - grpc_core::JoinHostPort(GetLocalIp(), grpc_pick_unused_port_or_die()); - std::string server_address2 = - grpc_core::JoinHostPort(GetLocalIp(), grpc_pick_unused_port_or_die()); + std::string server_address1 = grpc_core::JoinHostPort( + grpc_core::LocalIp(), grpc_pick_unused_port_or_die()); + std::string server_address2 = grpc_core::JoinHostPort( + grpc_core::LocalIp(), grpc_pick_unused_port_or_die()); // create a single channel with round robin load balancing policy. auto response_generator = grpc_core::MakeRefCounted(); @@ -748,12 +730,12 @@ void PerformCallWithResponsePayload(grpc_channel* channel, grpc_server* server, grpc_byte_buffer_destroy(response_payload_recv); } -TEST_F(TooManyPings, BdpPingNotSentWithoutReceiveSideActivity) { +TEST(TooManyPings, BdpPingNotSentWithoutReceiveSideActivity) { TransportCounter::WaitForTransportsToBeDestroyed(); grpc_completion_queue* cq = grpc_completion_queue_create_for_next(nullptr); // create the server - std::string server_address = - grpc_core::JoinHostPort(GetLocalIp(), grpc_pick_unused_port_or_die()); + std::string server_address = grpc_core::JoinHostPort( + grpc_core::LocalIp(), grpc_pick_unused_port_or_die()); grpc_arg server_args[] = { grpc_channel_arg_integer_create( const_cast( @@ -824,12 +806,12 @@ TEST_F(TooManyPings, BdpPingNotSentWithoutReceiveSideActivity) { grpc_completion_queue_destroy(cq); } -TEST_F(TooManyPings, TransportsGetCleanedUpOnDisconnect) { +TEST(TooManyPings, TransportsGetCleanedUpOnDisconnect) { TransportCounter::WaitForTransportsToBeDestroyed(); grpc_completion_queue* cq = grpc_completion_queue_create_for_next(nullptr); // create the client and server - std::string server_address = - grpc_core::JoinHostPort(GetLocalIp(), grpc_pick_unused_port_or_die()); + std::string server_address = grpc_core::JoinHostPort( + grpc_core::LocalIp(), grpc_pick_unused_port_or_die()); grpc_arg server_args[] = { grpc_channel_arg_integer_create( const_cast( diff --git a/test/core/util/resolve_localhost_ip46.cc b/test/core/util/resolve_localhost_ip46.cc index 4d069a7f254..1607418f879 100644 --- a/test/core/util/resolve_localhost_ip46.cc +++ b/test/core/util/resolve_localhost_ip46.cc @@ -22,6 +22,7 @@ #include #include "absl/status/statusor.h" +#include "absl/strings/str_cat.h" #include #include @@ -59,4 +60,24 @@ void LocalhostResolves(bool* ipv4, bool* ipv6) { *ipv6 = localhost_to_ipv6; } +bool RunningWithIPv6Only() { + bool localhost_resolves_to_ipv4 = false; + bool localhost_resolves_to_ipv6 = false; + LocalhostResolves(&localhost_resolves_to_ipv4, &localhost_resolves_to_ipv6); + return !localhost_resolves_to_ipv4 && localhost_resolves_to_ipv6; +} + +absl::string_view LocalIp() { + return RunningWithIPv6Only() ? "[::1]" : "127.0.0.1"; +} + +std::string LocalIpAndPort(int port) { + return absl::StrCat(LocalIp(), ":", port); +} + +std::string LocalIpUri(int port) { + return absl::StrCat( + RunningWithIPv6Only() ? "ipv6:%5b::1%5d:" : "ipv4:127.0.0.1:", port); +} + } // namespace grpc_core diff --git a/test/core/util/resolve_localhost_ip46.h b/test/core/util/resolve_localhost_ip46.h index 0865ea7fe89..9d6178181a0 100644 --- a/test/core/util/resolve_localhost_ip46.h +++ b/test/core/util/resolve_localhost_ip46.h @@ -19,11 +19,31 @@ #ifndef GRPC_TEST_CORE_UTIL_RESOLVE_LOCALHOST_IP46_H #define GRPC_TEST_CORE_UTIL_RESOLVE_LOCALHOST_IP46_H +#include + +#include "absl/strings/string_view.h" + namespace grpc_core { // Test whether localhost resolves to ipv4 and/or ipv6 void LocalhostResolves(bool* ipv4, bool* ipv6); +// Returns true if running with IPv6 only, false otherwise. +bool RunningWithIPv6Only(); + +// Returns the IP address of localhost. +// If RunningWithIPv6Only() is true, returns the IPv6 address; +// otherwise, returns the IPv4 address. +absl::string_view LocalIp(); + +// Returns LocalIp() with a port. +std::string LocalIpAndPort(int port); + +// Returns the URI of the IP address of localhost with the given port. +// If RunningWithIPv6Only() is true, returns the IPv6 address; +// otherwise, returns the IPv4 address. +std::string LocalIpUri(int port); + } // namespace grpc_core #endif // GRPC_TEST_CORE_UTIL_RESOLVE_LOCALHOST_IP46_H diff --git a/test/cpp/end2end/channelz_service_test.cc b/test/cpp/end2end/channelz_service_test.cc index bf98726e2af..f7289c86f2a 100644 --- a/test/cpp/end2end/channelz_service_test.cc +++ b/test/cpp/end2end/channelz_service_test.cc @@ -192,11 +192,6 @@ class ChannelzServerTest : public ::testing::TestWithParam { } void SetUp() override { grpc_init(); - bool localhost_resolves_to_ipv4 = false; - bool localhost_resolves_to_ipv6 = false; - grpc_core::LocalhostResolves(&localhost_resolves_to_ipv4, - &localhost_resolves_to_ipv6); - ipv6_only_ = !localhost_resolves_to_ipv4 && localhost_resolves_to_ipv6; // ensure channel server is brought up on all severs we build. grpc::channelz::experimental::InitChannelzService(); @@ -204,8 +199,7 @@ class ChannelzServerTest : public ::testing::TestWithParam { // We set up a proxy server with channelz enabled. proxy_port_ = grpc_pick_unused_port_or_die(); ServerBuilder proxy_builder; - std::string proxy_server_address = - absl::StrCat(LocalIp(), ":", proxy_port_); + std::string proxy_server_address = grpc_core::LocalIpAndPort(proxy_port_); proxy_builder.AddListeningPort(proxy_server_address, GetServerCredentials(GetParam())); // forces channelz and channel tracing to be enabled. @@ -224,10 +218,6 @@ class ChannelzServerTest : public ::testing::TestWithParam { grpc_shutdown(); } - absl::string_view LocalIp() const { - return ipv6_only_ ? "[::1]" : "127.0.0.1"; - } - // Sets the proxy up to have an arbitrary number of backends. void ConfigureProxy(size_t num_backends) { backends_.resize(num_backends); @@ -236,7 +226,7 @@ class ChannelzServerTest : public ::testing::TestWithParam { backends_[i].port = grpc_pick_unused_port_or_die(); ServerBuilder backend_builder; std::string backend_server_address = - absl::StrCat(LocalIp(), ":", backends_[i].port); + grpc_core::LocalIpAndPort(backends_[i].port); backend_builder.AddListeningPort(backend_server_address, GetServerCredentials(GetParam())); backends_[i].service = std::make_unique(); @@ -258,7 +248,8 @@ class ChannelzServerTest : public ::testing::TestWithParam { } void ResetStubs() { - string target = absl::StrCat("dns:", LocalIp(), ":", proxy_port_); + string target = + absl::StrCat("dns:", grpc_core::LocalIp(), ":", proxy_port_); ChannelArguments args; // disable channelz. We only want to focus on proxy to backend outbound. args.SetInt(GRPC_ARG_ENABLE_CHANNELZ, 0); @@ -269,7 +260,8 @@ class ChannelzServerTest : public ::testing::TestWithParam { } std::unique_ptr NewEchoStub() { - string target = absl::StrCat("dns:", LocalIp(), ":", proxy_port_); + string target = + absl::StrCat("dns:", grpc_core::LocalIp(), ":", proxy_port_); ChannelArguments args; // disable channelz. We only want to focus on proxy to backend outbound. args.SetInt(GRPC_ARG_ENABLE_CHANNELZ, 0); @@ -346,8 +338,6 @@ class ChannelzServerTest : public ::testing::TestWithParam { std::unique_ptr service; }; - bool ipv6_only_; - std::unique_ptr channelz_stub_; std::unique_ptr echo_stub_; diff --git a/test/cpp/end2end/client_lb_end2end_test.cc b/test/cpp/end2end/client_lb_end2end_test.cc index 61020295e81..ad4bbfb6490 100644 --- a/test/cpp/end2end/client_lb_end2end_test.cc +++ b/test/cpp/end2end/client_lb_end2end_test.cc @@ -204,14 +204,12 @@ class MyTestServiceImpl : public TestServiceImpl { class FakeResolverResponseGeneratorWrapper { public: - explicit FakeResolverResponseGeneratorWrapper(bool ipv6_only) - : ipv6_only_(ipv6_only), - response_generator_(grpc_core::MakeRefCounted< + FakeResolverResponseGeneratorWrapper() + : response_generator_(grpc_core::MakeRefCounted< grpc_core::FakeResolverResponseGenerator>()) {} FakeResolverResponseGeneratorWrapper( FakeResolverResponseGeneratorWrapper&& other) noexcept { - ipv6_only_ = other.ipv6_only_; response_generator_ = std::move(other.response_generator_); } @@ -220,14 +218,14 @@ class FakeResolverResponseGeneratorWrapper { const grpc_core::ChannelArgs& per_address_args = grpc_core::ChannelArgs()) { grpc_core::ExecCtx exec_ctx; - response_generator_->SetResponseSynchronously(BuildFakeResults( - ipv6_only_, ports, service_config_json, per_address_args)); + response_generator_->SetResponseSynchronously( + BuildFakeResults(ports, service_config_json, per_address_args)); } void SetNextResolutionUponError(const std::vector& ports) { grpc_core::ExecCtx exec_ctx; response_generator_->SetReresolutionResponseSynchronously( - BuildFakeResults(ipv6_only_, ports)); + BuildFakeResults(ports)); } void SetFailureOnReresolution() { @@ -246,15 +244,14 @@ class FakeResolverResponseGeneratorWrapper { private: static grpc_core::Resolver::Result BuildFakeResults( - bool ipv6_only, const std::vector& ports, - const char* service_config_json = nullptr, + const std::vector& ports, const char* service_config_json = nullptr, const grpc_core::ChannelArgs& per_address_args = grpc_core::ChannelArgs()) { grpc_core::Resolver::Result result; result.addresses = grpc_core::EndpointAddressesList(); for (const int& port : ports) { - absl::StatusOr lb_uri = grpc_core::URI::Parse( - absl::StrCat(ipv6_only ? "ipv6:[::1]:" : "ipv4:127.0.0.1:", port)); + absl::StatusOr lb_uri = + grpc_core::URI::Parse(grpc_core::LocalIpUri(port)); GPR_ASSERT(lb_uri.ok()); grpc_resolved_address address; GPR_ASSERT(grpc_parse_uri(*lb_uri, &address)); @@ -271,7 +268,6 @@ class FakeResolverResponseGeneratorWrapper { return result; } - bool ipv6_only_ = false; grpc_core::RefCountedPtr response_generator_; }; @@ -283,14 +279,7 @@ class ClientLbEnd2endTest : public ::testing::Test { creds_(new SecureChannelCredentials( grpc_fake_transport_security_credentials_create())) {} - void SetUp() override { - grpc_init(); - bool localhost_resolves_to_ipv4 = false; - bool localhost_resolves_to_ipv6 = false; - grpc_core::LocalhostResolves(&localhost_resolves_to_ipv4, - &localhost_resolves_to_ipv6); - ipv6_only_ = !localhost_resolves_to_ipv4 && localhost_resolves_to_ipv6; - } + void SetUp() override { grpc_init(); } void TearDown() override { for (size_t i = 0; i < servers_.size(); ++i) { @@ -331,10 +320,6 @@ class ClientLbEnd2endTest : public ::testing::Test { return ports; } - FakeResolverResponseGeneratorWrapper BuildResolverResponseGenerator() { - return FakeResolverResponseGeneratorWrapper(ipv6_only_); - } - std::unique_ptr BuildStub( const std::shared_ptr& channel) { return grpc::testing::EchoTestService::NewStub(channel); @@ -623,13 +608,12 @@ class ClientLbEnd2endTest : public ::testing::Test { const std::string server_host_; std::vector> servers_; std::shared_ptr creds_; - bool ipv6_only_ = false; }; TEST_F(ClientLbEnd2endTest, ChannelStateConnectingWhenResolving) { const int kNumServers = 3; StartServers(kNumServers); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("", response_generator); auto stub = BuildStub(channel); // Initial state should be IDLE. @@ -660,7 +644,7 @@ TEST_F(ClientLbEnd2endTest, ChannelIdleness) { ChannelArguments args; args.SetInt(GRPC_ARG_CLIENT_IDLE_TIMEOUT_MS, 1000 * grpc_test_slowdown_factor()); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("", response_generator, args); auto stub = BuildStub(channel); // The initial channel state should be IDLE. @@ -685,7 +669,7 @@ TEST_F(ClientLbEnd2endTest, ChannelIdleness) { TEST_F(ClientLbEnd2endTest, AuthorityOverrideOnChannel) { StartServers(1); // Set authority via channel arg. - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; ChannelArguments args; args.SetString(GRPC_ARG_DEFAULT_AUTHORITY, "foo.example.com"); auto channel = BuildChannel("", response_generator, args); @@ -705,7 +689,7 @@ TEST_F(ClientLbEnd2endTest, AuthorityOverrideOnChannel) { TEST_F(ClientLbEnd2endTest, AuthorityOverrideFromResolver) { StartServers(1); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("", response_generator); auto stub = BuildStub(channel); // Inject resolver result that sets the per-address authority to a @@ -729,7 +713,7 @@ TEST_F(ClientLbEnd2endTest, AuthorityOverrideFromResolver) { TEST_F(ClientLbEnd2endTest, AuthorityOverridePrecedence) { StartServers(1); // Set authority via channel arg. - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; ChannelArguments args; args.SetString(GRPC_ARG_DEFAULT_AUTHORITY, "foo.example.com"); auto channel = BuildChannel("", response_generator, args); @@ -762,7 +746,7 @@ TEST_F(PickFirstTest, Basic) { // Start servers and send one RPC per server. const int kNumServers = 3; StartServers(kNumServers); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel( "", response_generator); // test that pick first is the default. auto stub = BuildStub(channel); @@ -787,7 +771,7 @@ TEST_F(PickFirstTest, Basic) { TEST_F(PickFirstTest, ProcessPending) { StartServers(1); // Single server - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel( "", response_generator); // test that pick first is the default. auto stub = BuildStub(channel); @@ -798,7 +782,7 @@ TEST_F(PickFirstTest, ProcessPending) { // target (even if it happened over a different channel, because subchannels // are globally reused). Progress should happen without any transition from // this READY state. - auto second_response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper second_response_generator; auto second_channel = BuildChannel("", second_response_generator); auto second_stub = BuildStub(second_channel); second_response_generator.SetNextResolution({servers_[0]->port_}); @@ -815,7 +799,7 @@ TEST_F(PickFirstTest, SelectsReadyAtStartup) { grpc_pick_unused_port_or_die()}; CreateServers(2, ports); StartServer(1); - auto response_generator1 = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator1; auto channel1 = BuildChannel("pick_first", response_generator1, args); auto stub1 = BuildStub(channel1); response_generator1.SetNextResolution(ports); @@ -824,7 +808,7 @@ TEST_F(PickFirstTest, SelectsReadyAtStartup) { // Create a second channel with the same addresses. Its PF instance // should immediately pick the second subchannel, since it's already // in READY state. - auto response_generator2 = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator2; auto channel2 = BuildChannel("pick_first", response_generator2, args); response_generator2.SetNextResolution(ports); // Check that the channel reports READY without waiting for the @@ -838,7 +822,7 @@ TEST_F(PickFirstTest, BackOffInitialReconnect) { args.SetInt(GRPC_ARG_INITIAL_RECONNECT_BACKOFF_MS, kInitialBackOffMs * grpc_test_slowdown_factor()); const std::vector ports = {grpc_pick_unused_port_or_die()}; - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("pick_first", response_generator, args); auto stub = BuildStub(channel); response_generator.SetNextResolution(ports); @@ -876,7 +860,7 @@ TEST_F(PickFirstTest, BackOffMinReconnect) { args.SetInt(GRPC_ARG_MIN_RECONNECT_BACKOFF_MS, kMinReconnectBackOffMs * grpc_test_slowdown_factor()); const std::vector ports = {grpc_pick_unused_port_or_die()}; - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("pick_first", response_generator, args); auto stub = BuildStub(channel); response_generator.SetNextResolution(ports); @@ -904,7 +888,7 @@ TEST_F(PickFirstTest, ResetConnectionBackoff) { args.SetInt(GRPC_ARG_INITIAL_RECONNECT_BACKOFF_MS, kInitialBackOffMs * grpc_test_slowdown_factor()); const std::vector ports = {grpc_pick_unused_port_or_die()}; - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("pick_first", response_generator, args); auto stub = BuildStub(channel); response_generator.SetNextResolution(ports); @@ -943,7 +927,7 @@ TEST_F(ClientLbEnd2endTest, const int kInitialBackOffMs = 5000; args.SetInt(GRPC_ARG_INITIAL_RECONNECT_BACKOFF_MS, kInitialBackOffMs * grpc_test_slowdown_factor()); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("pick_first", response_generator, args); auto stub = BuildStub(channel); response_generator.SetNextResolution({port}); @@ -983,7 +967,7 @@ TEST_F(PickFirstTest, Updates) { // Start servers and send one RPC per server. const int kNumServers = 3; StartServers(kNumServers); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("pick_first", response_generator); auto stub = BuildStub(channel); // Perform one RPC against the first server. @@ -1012,7 +996,7 @@ TEST_F(PickFirstTest, UpdateSuperset) { // Start servers and send one RPC per server. const int kNumServers = 3; StartServers(kNumServers); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("pick_first", response_generator); auto stub = BuildStub(channel); @@ -1045,7 +1029,7 @@ TEST_F(PickFirstTest, UpdateToUnconnected) { const int kNumServers = 2; CreateServers(kNumServers); StartServer(0); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("pick_first", response_generator); auto stub = BuildStub(channel); @@ -1080,11 +1064,11 @@ TEST_F(PickFirstTest, GlobalSubchannelPool) { StartServers(kNumServers); std::vector ports = GetServersPorts(); // Create two channels that (by default) use the global subchannel pool. - auto response_generator1 = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator1; auto channel1 = BuildChannel("pick_first", response_generator1); auto stub1 = BuildStub(channel1); response_generator1.SetNextResolution(ports); - auto response_generator2 = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator2; auto channel2 = BuildChannel("pick_first", response_generator2); auto stub2 = BuildStub(channel2); response_generator2.SetNextResolution(ports); @@ -1107,11 +1091,11 @@ TEST_F(PickFirstTest, LocalSubchannelPool) { // Create two channels that use local subchannel pool. ChannelArguments args; args.SetInt(GRPC_ARG_USE_LOCAL_SUBCHANNEL_POOL, 1); - auto response_generator1 = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator1; auto channel1 = BuildChannel("pick_first", response_generator1, args); auto stub1 = BuildStub(channel1); response_generator1.SetNextResolution(ports); - auto response_generator2 = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator2; auto channel2 = BuildChannel("pick_first", response_generator2, args); auto stub2 = BuildStub(channel2); response_generator2.SetNextResolution(ports); @@ -1130,7 +1114,7 @@ TEST_F(PickFirstTest, ManyUpdates) { const int kNumUpdates = 1000; const int kNumServers = 3; StartServers(kNumServers); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("pick_first", response_generator); auto stub = BuildStub(channel); std::vector ports = GetServersPorts(); @@ -1159,7 +1143,7 @@ TEST_F(PickFirstTest, ReresolutionNoSelected) { dead_ports.emplace_back(grpc_pick_unused_port_or_die()); } } - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("pick_first", response_generator); auto stub = BuildStub(channel); // The initial resolution only contains dead ports. There won't be any @@ -1190,7 +1174,7 @@ TEST_F(PickFirstTest, ReresolutionNoSelected) { TEST_F(PickFirstTest, ReconnectWithoutNewResolverResult) { std::vector ports = {grpc_pick_unused_port_or_die()}; StartServers(1, ports); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("pick_first", response_generator); auto stub = BuildStub(channel); response_generator.SetNextResolution(ports); @@ -1209,7 +1193,7 @@ TEST_F(PickFirstTest, ReconnectWithoutNewResolverResultStartsFromTopOfList) { grpc_pick_unused_port_or_die()}; CreateServers(2, ports); StartServer(1); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("pick_first", response_generator); auto stub = BuildStub(channel); response_generator.SetNextResolution(ports); @@ -1224,7 +1208,7 @@ TEST_F(PickFirstTest, ReconnectWithoutNewResolverResultStartsFromTopOfList) { } TEST_F(PickFirstTest, FailsEmptyResolverUpdate) { - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("pick_first", response_generator); auto stub = BuildStub(channel); gpr_log(GPR_INFO, "****** SENDING INITIAL RESOLVER RESULT *******"); @@ -1260,7 +1244,7 @@ TEST_F(PickFirstTest, FailsEmptyResolverUpdate) { TEST_F(PickFirstTest, CheckStateBeforeStartWatch) { std::vector ports = {grpc_pick_unused_port_or_die()}; StartServers(1, ports); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel_1 = BuildChannel("pick_first", response_generator); auto stub_1 = BuildStub(channel_1); response_generator.SetNextResolution(ports); @@ -1273,7 +1257,7 @@ TEST_F(PickFirstTest, CheckStateBeforeStartWatch) { // create a new subchannel and hold a ref to it. StartServers(1, ports); gpr_log(GPR_INFO, "****** SERVER RESTARTED *******"); - auto response_generator_2 = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator_2; auto channel_2 = BuildChannel("pick_first", response_generator_2); auto stub_2 = BuildStub(channel_2); response_generator_2.SetNextResolution(ports); @@ -1302,7 +1286,7 @@ TEST_F(PickFirstTest, IdleOnDisconnect) { // Start server, send RPC, and make sure channel is READY. const int kNumServers = 1; StartServers(kNumServers); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("", response_generator); // pick_first is the default. auto stub = BuildStub(channel); @@ -1318,7 +1302,7 @@ TEST_F(PickFirstTest, IdleOnDisconnect) { } TEST_F(PickFirstTest, PendingUpdateAndSelectedSubchannelFails) { - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("", response_generator); // pick_first is the default. auto stub = BuildStub(channel); @@ -1365,7 +1349,7 @@ TEST_F(PickFirstTest, StaysIdleUponEmptyUpdate) { // Start server, send RPC, and make sure channel is READY. const int kNumServers = 1; StartServers(kNumServers); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("", response_generator); // pick_first is the default. auto stub = BuildStub(channel); @@ -1399,7 +1383,7 @@ TEST_F(PickFirstTest, ChannelArguments args; args.SetInt(GRPC_ARG_INITIAL_RECONNECT_BACKOFF_MS, 1000 * grpc_test_slowdown_factor()); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("", response_generator, args); auto stub = BuildStub(channel); response_generator.SetNextResolution(ports); @@ -1429,7 +1413,7 @@ TEST_F(RoundRobinTest, Basic) { // Start servers and send one RPC per server. const int kNumServers = 3; StartServers(kNumServers); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("round_robin", response_generator); auto stub = BuildStub(channel); response_generator.SetNextResolution(GetServersPorts()); @@ -1456,7 +1440,7 @@ TEST_F(RoundRobinTest, Basic) { TEST_F(RoundRobinTest, ProcessPending) { StartServers(1); // Single server - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("round_robin", response_generator); auto stub = BuildStub(channel); response_generator.SetNextResolution({servers_[0]->port_}); @@ -1466,7 +1450,7 @@ TEST_F(RoundRobinTest, ProcessPending) { // target (even if it happened over a different channel, because subchannels // are globally reused). Progress should happen without any transition from // this READY state. - auto second_response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper second_response_generator; auto second_channel = BuildChannel("round_robin", second_response_generator); auto second_stub = BuildStub(second_channel); second_response_generator.SetNextResolution({servers_[0]->port_}); @@ -1477,7 +1461,7 @@ TEST_F(RoundRobinTest, Updates) { // Start servers. const int kNumServers = 3; StartServers(kNumServers); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("round_robin", response_generator); auto stub = BuildStub(channel); // Start with a single server. @@ -1552,7 +1536,7 @@ TEST_F(RoundRobinTest, Updates) { TEST_F(RoundRobinTest, UpdateInError) { StartServers(2); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("round_robin", response_generator); auto stub = BuildStub(channel); // Start with a single server. @@ -1593,7 +1577,7 @@ TEST_F(RoundRobinTest, ManyUpdates) { // Start servers and send one RPC per server. const int kNumServers = 3; StartServers(kNumServers); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("round_robin", response_generator); auto stub = BuildStub(channel); std::vector ports = GetServersPorts(); @@ -1611,7 +1595,7 @@ TEST_F(RoundRobinTest, ReresolveOnSubchannelConnectionFailure) { // Start 3 servers. StartServers(3); // Create channel. - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("round_robin", response_generator); auto stub = BuildStub(channel); // Initially, tell the channel about only the first two servers. @@ -1634,7 +1618,7 @@ TEST_F(RoundRobinTest, ReresolveOnSubchannelConnectionFailure) { } TEST_F(RoundRobinTest, FailsEmptyResolverUpdate) { - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("round_robin", response_generator); auto stub = BuildStub(channel); gpr_log(GPR_INFO, "****** SENDING INITIAL RESOLVER RESULT *******"); @@ -1671,7 +1655,7 @@ TEST_F(RoundRobinTest, TransientFailure) { // Start servers and create channel. Channel should go to READY state. const int kNumServers = 3; StartServers(kNumServers); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("round_robin", response_generator); auto stub = BuildStub(channel); response_generator.SetNextResolution(GetServersPorts()); @@ -1692,7 +1676,7 @@ TEST_F(RoundRobinTest, TransientFailure) { TEST_F(RoundRobinTest, TransientFailureAtStartup) { // Create channel and return servers that don't exist. Channel should // quickly transition into TRANSIENT_FAILURE. - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("round_robin", response_generator); auto stub = BuildStub(channel); response_generator.SetNextResolution({ @@ -1718,7 +1702,7 @@ TEST_F(RoundRobinTest, StaysInTransientFailureInSubsequentConnecting) { // Get port. const int port = grpc_pick_unused_port_or_die(); // Create channel. - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("round_robin", response_generator); auto stub = BuildStub(channel); response_generator.SetNextResolution({port}); @@ -1756,7 +1740,7 @@ TEST_F(RoundRobinTest, ReportsLatestStatusInTransientFailure) { const std::vector ports = {grpc_pick_unused_port_or_die(), grpc_pick_unused_port_or_die()}; // Create channel. - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("round_robin", response_generator); auto stub = BuildStub(channel); response_generator.SetNextResolution(ports); @@ -1801,7 +1785,7 @@ TEST_F(RoundRobinTest, DoesNotFailRpcsUponDisconnection) { // Start server. StartServers(1); // Create channel. - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("round_robin", response_generator); auto stub = BuildStub(channel); response_generator.SetNextResolution(GetServersPorts()); @@ -1858,7 +1842,7 @@ TEST_F(RoundRobinTest, SingleReconnect) { const int kNumServers = 3; StartServers(kNumServers); const auto ports = GetServersPorts(); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("round_robin", response_generator); auto stub = BuildStub(channel); response_generator.SetNextResolution(ports); @@ -1915,7 +1899,7 @@ TEST_F(RoundRobinTest, ServersHealthCheckingUnimplementedTreatedAsHealthy) { args.SetServiceConfigJSON( "{\"healthCheckConfig\": " "{\"serviceName\": \"health_check_service_name\"}}"); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("round_robin", response_generator, args); auto stub = BuildStub(channel); response_generator.SetNextResolution({servers_[0]->port_}); @@ -1932,7 +1916,7 @@ TEST_F(RoundRobinTest, HealthChecking) { args.SetServiceConfigJSON( "{\"healthCheckConfig\": " "{\"serviceName\": \"health_check_service_name\"}}"); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("round_robin", response_generator, args); auto stub = BuildStub(channel); response_generator.SetNextResolution(GetServersPorts()); @@ -2028,7 +2012,7 @@ TEST_F(RoundRobinTest, HealthCheckingHandlesSubchannelFailure) { args.SetServiceConfigJSON( "{\"healthCheckConfig\": " "{\"serviceName\": \"health_check_service_name\"}}"); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("round_robin", response_generator, args); auto stub = BuildStub(channel); response_generator.SetNextResolution(GetServersPorts()); @@ -2053,14 +2037,14 @@ TEST_F(RoundRobinTest, WithHealthCheckingInhibitPerChannel) { args.SetServiceConfigJSON( "{\"healthCheckConfig\": " "{\"serviceName\": \"health_check_service_name\"}}"); - auto response_generator1 = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator1; auto channel1 = BuildChannel("round_robin", response_generator1, args); auto stub1 = BuildStub(channel1); std::vector ports = GetServersPorts(); response_generator1.SetNextResolution(ports); // Create a channel with health checking enabled but inhibited. args.SetInt(GRPC_ARG_INHIBIT_HEALTH_CHECKING, 1); - auto response_generator2 = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator2; auto channel2 = BuildChannel("round_robin", response_generator2, args); auto stub2 = BuildStub(channel2); response_generator2.SetNextResolution(ports); @@ -2098,7 +2082,7 @@ TEST_F(RoundRobinTest, HealthCheckingServiceNamePerChannel) { args.SetServiceConfigJSON( "{\"healthCheckConfig\": " "{\"serviceName\": \"health_check_service_name\"}}"); - auto response_generator1 = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator1; auto channel1 = BuildChannel("round_robin", response_generator1, args); auto stub1 = BuildStub(channel1); std::vector ports = GetServersPorts(); @@ -2109,7 +2093,7 @@ TEST_F(RoundRobinTest, HealthCheckingServiceNamePerChannel) { args2.SetServiceConfigJSON( "{\"healthCheckConfig\": " "{\"serviceName\": \"health_check_service_name2\"}}"); - auto response_generator2 = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator2; auto channel2 = BuildChannel("round_robin", response_generator2, args2); auto stub2 = BuildStub(channel2); response_generator2.SetNextResolution(ports); @@ -2149,7 +2133,7 @@ TEST_F(RoundRobinTest, const char* kServiceConfigJson = "{\"healthCheckConfig\": " "{\"serviceName\": \"health_check_service_name\"}}"; - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("round_robin", response_generator); auto stub = BuildStub(channel); std::vector ports = GetServersPorts(); @@ -2179,7 +2163,7 @@ TEST_F(RoundRobinTest, HealthCheckingRetryOnStreamEnd) { args.SetServiceConfigJSON( "{\"healthCheckConfig\": " "{\"serviceName\": \"health_check_service_name\"}}"); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("round_robin", response_generator, args); response_generator.SetNextResolution(GetServersPorts()); EXPECT_FALSE(WaitForChannelReady(channel.get())); @@ -2250,7 +2234,7 @@ ClientLbPickArgsTest* ClientLbPickArgsTest::current_test_instance_ = nullptr; TEST_F(ClientLbPickArgsTest, Basic) { const int kNumServers = 1; StartServers(kNumServers); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("test_pick_args_lb", response_generator); auto stub = BuildStub(channel); response_generator.SetNextResolution(GetServersPorts()); @@ -2431,7 +2415,7 @@ class ClientLbInterceptTrailingMetadataTest : public ClientLbEnd2endTest { const int kNumServers = 1; const int kNumRpcs = 10; StartServers(kNumServers); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("intercept_trailing_metadata_lb", response_generator); auto stub = BuildStub(channel); @@ -2480,7 +2464,7 @@ ClientLbInterceptTrailingMetadataTest* TEST_F(ClientLbInterceptTrailingMetadataTest, StatusOk) { StartServers(1); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("intercept_trailing_metadata_lb", response_generator); auto stub = BuildStub(channel); @@ -2496,7 +2480,7 @@ TEST_F(ClientLbInterceptTrailingMetadataTest, StatusOk) { TEST_F(ClientLbInterceptTrailingMetadataTest, StatusFailed) { StartServers(1); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("intercept_trailing_metadata_lb", response_generator); auto stub = BuildStub(channel); @@ -2517,7 +2501,7 @@ TEST_F(ClientLbInterceptTrailingMetadataTest, StatusFailed) { TEST_F(ClientLbInterceptTrailingMetadataTest, StatusCancelledWithoutStartingRecvTrailingMetadata) { StartServers(1); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("intercept_trailing_metadata_lb", response_generator); response_generator.SetNextResolution(GetServersPorts()); @@ -2542,7 +2526,7 @@ TEST_F(ClientLbInterceptTrailingMetadataTest, InterceptsRetriesDisabled) { const int kNumServers = 1; const int kNumRpcs = 10; StartServers(kNumServers); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; ChannelArguments channel_args; channel_args.SetInt(GRPC_ARG_ENABLE_RETRIES, 0); auto channel = BuildChannel("intercept_trailing_metadata_lb", @@ -2586,7 +2570,7 @@ TEST_F(ClientLbInterceptTrailingMetadataTest, InterceptsRetriesEnabled) { " }\n" " } ]\n" "}"); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("intercept_trailing_metadata_lb", response_generator, args); auto stub = BuildStub(channel); @@ -2691,7 +2675,7 @@ TEST_F(ClientLbInterceptTrailingMetadataTest, BackendMetricDataMerge) { .SetUtilization("foo", 0.99) .SetUtilization("bar", 0.1) .Build(); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("intercept_trailing_metadata_lb", response_generator); auto stub = BuildStub(channel); @@ -2821,7 +2805,7 @@ ClientLbAddressTest* ClientLbAddressTest::current_test_instance_ = nullptr; TEST_F(ClientLbAddressTest, Basic) { const int kNumServers = 1; StartServers(kNumServers); - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("address_test_lb", response_generator); auto stub = BuildStub(channel); // Addresses returned by the resolver will have attached args. @@ -2834,9 +2818,8 @@ TEST_F(ClientLbAddressTest, Basic) { // Make sure that the attributes wind up on the subchannels. std::vector expected; for (const int port : GetServersPorts()) { - expected.emplace_back( - absl::StrCat("addrs=[", ipv6_only_ ? "[::1]:" : "127.0.0.1:", port, - "] args={test_key=test_value}")); + expected.emplace_back(absl::StrCat("addrs=[", grpc_core::LocalIp(), ":", + port, "] args={test_key=test_value}")); } EXPECT_EQ(addresses_seen(), expected); } @@ -2906,7 +2889,7 @@ TEST_F(OobBackendMetricTest, Basic) { servers_[0]->server_metric_recorder_->SetQps(0.4); servers_[0]->server_metric_recorder_->SetNamedUtilization(kMetricName, 0.4); // Start client. - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("oob_backend_metric_test_lb", response_generator); auto stub = BuildStub(channel); response_generator.SetNextResolution(GetServersPorts()); @@ -2993,7 +2976,7 @@ class ControlPlaneStatusRewritingTest : public ClientLbEnd2endTest { TEST_F(ControlPlaneStatusRewritingTest, RewritesFromLb) { // Start client. - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("fail_lb", response_generator); auto stub = BuildStub(channel); response_generator.SetNextResolution(GetServersPorts()); @@ -3005,7 +2988,7 @@ TEST_F(ControlPlaneStatusRewritingTest, RewritesFromLb) { TEST_F(ControlPlaneStatusRewritingTest, RewritesFromResolver) { // Start client. - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("pick_first", response_generator); auto stub = BuildStub(channel); grpc_core::Resolver::Result result; @@ -3035,7 +3018,7 @@ TEST_F(ControlPlaneStatusRewritingTest, RewritesFromConfigSelector) { absl::Status status_; }; // Start client. - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("pick_first", response_generator); auto stub = BuildStub(channel); auto config_selector = @@ -3150,7 +3133,7 @@ TEST_F(WeightedRoundRobinTest, CallAndServerMetric) { servers_[2]->server_metric_recorder_->SetEps(20); servers_[2]->server_metric_recorder_->SetQps(200); // Create channel. - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("", response_generator); auto stub = BuildStub(channel); response_generator.SetNextResolution(GetServersPorts(), @@ -3197,7 +3180,7 @@ TEST_F(WeightedRoundRobinTest, WithOutlierDetection) { // Create channel. // Initial blackout period is 0, so that we start seeing traffic in // the right proportions right away. - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("", response_generator); auto stub = BuildStub(channel); response_generator.SetNextResolution( @@ -3258,7 +3241,7 @@ TEST_P(WeightedRoundRobinParamTest, Basic) { servers_[2]->server_metric_recorder_->SetEps(5); servers_[2]->server_metric_recorder_->SetQps(200); // Create channel. - auto response_generator = BuildResolverResponseGenerator(); + FakeResolverResponseGeneratorWrapper response_generator; auto channel = BuildChannel("", response_generator); auto stub = BuildStub(channel); response_generator.SetNextResolution(GetServersPorts(), GetParam()); diff --git a/test/cpp/end2end/grpclb_end2end_test.cc b/test/cpp/end2end/grpclb_end2end_test.cc index e55578f9cbc..949ab9f5f1f 100644 --- a/test/cpp/end2end/grpclb_end2end_test.cc +++ b/test/cpp/end2end/grpclb_end2end_test.cc @@ -389,11 +389,6 @@ class GrpclbEnd2endTest : public ::testing::Test { static void TearDownTestSuite() { grpc_shutdown(); } void SetUp() override { - bool localhost_resolves_to_ipv4 = false; - bool localhost_resolves_to_ipv6 = false; - grpc_core::LocalhostResolves(&localhost_resolves_to_ipv4, - &localhost_resolves_to_ipv6); - ipv6_only_ = !localhost_resolves_to_ipv4 && localhost_resolves_to_ipv6; response_generator_ = grpc_core::MakeRefCounted(); // Start the backends. @@ -560,8 +555,7 @@ class GrpclbEnd2endTest : public ::testing::Test { grpc_core::EndpointAddressesList addresses; for (const auto& addr : address_data) { absl::StatusOr lb_uri = - grpc_core::URI::Parse(absl::StrCat( - ipv6_only_ ? "ipv6:[::1]:" : "ipv4:127.0.0.1:", addr.port)); + grpc_core::URI::Parse(grpc_core::LocalIpUri(addr.port)); GPR_ASSERT(lb_uri.ok()); grpc_resolved_address address; GPR_ASSERT(grpc_parse_uri(*lb_uri, &address)); @@ -649,8 +643,9 @@ class GrpclbEnd2endTest : public ::testing::Test { } for (const int& backend_port : backend_ports) { auto* server = response.mutable_server_list()->add_servers(); - server->set_ip_address(ipv6_only_ ? Ip6ToPackedString("::1") - : Ip4ToPackedString("127.0.0.1")); + server->set_ip_address(grpc_core::RunningWithIPv6Only() + ? Ip6ToPackedString("::1") + : Ip4ToPackedString("127.0.0.1")); server->set_port(backend_port); static int token_count = 0; server->set_load_balance_token( @@ -757,7 +752,6 @@ class GrpclbEnd2endTest : public ::testing::Test { const size_t num_backends_; const size_t num_balancers_; const int client_load_reporting_interval_seconds_; - bool ipv6_only_ = false; std::shared_ptr channel_; std::unique_ptr stub_; std::vector>> backends_; diff --git a/test/cpp/end2end/rls_end2end_test.cc b/test/cpp/end2end/rls_end2end_test.cc index b43128a3ea9..7a2c4414457 100644 --- a/test/cpp/end2end/rls_end2end_test.cc +++ b/test/cpp/end2end/rls_end2end_test.cc @@ -174,11 +174,6 @@ class RlsEnd2endTest : public ::testing::Test { } void SetUp() override { - bool localhost_resolves_to_ipv4 = false; - bool localhost_resolves_to_ipv6 = false; - grpc_core::LocalhostResolves(&localhost_resolves_to_ipv4, - &localhost_resolves_to_ipv6); - ipv6_only_ = !localhost_resolves_to_ipv4 && localhost_resolves_to_ipv6; rls_server_ = std::make_unique>( "rls", [](grpc::ServerContext* ctx) { EXPECT_THAT(ctx->client_metadata(), @@ -228,11 +223,6 @@ class RlsEnd2endTest : public ::testing::Test { } } - std::string TargetStringForPort(int port) { - if (ipv6_only_) return absl::StrCat("ipv6:[::1]:", port); - return absl::StrCat("ipv4:127.0.0.1:", port); - } - struct RpcOptions { int timeout_ms = 2000; bool wait_for_ready = false; @@ -465,7 +455,6 @@ class RlsEnd2endTest : public ::testing::Test { bool running_ = false; }; - bool ipv6_only_; std::vector>> backends_; std::unique_ptr> rls_server_; std::unique_ptr @@ -494,7 +483,7 @@ TEST_F(RlsEnd2endTest, Basic) { .Build()); rls_server_->service_.SetResponse( BuildRlsRequest({{kTestKey, kTestValue}}), - BuildRlsResponse({TargetStringForPort(backends_[0]->port_)})); + BuildRlsResponse({grpc_core::LocalIpUri(backends_[0]->port_)})); CheckRpcSendOk(DEBUG_LOCATION, RpcOptions().set_metadata({{"key1", kTestValue}})); EXPECT_EQ(rls_server_->service_.request_count(), 1); @@ -525,7 +514,7 @@ TEST_F(RlsEnd2endTest, DuplicateHeadersAreMerged) { .Build()); rls_server_->service_.SetResponse( BuildRlsRequest({{kTestKey, absl::StrCat(kTestValue, ",", kTestValue2)}}), - BuildRlsResponse({TargetStringForPort(backends_[0]->port_)})); + BuildRlsResponse({grpc_core::LocalIpUri(backends_[0]->port_)})); // Same header present twice in the request. Values should be merged. CheckRpcSendOk( DEBUG_LOCATION, @@ -555,7 +544,7 @@ TEST_F(RlsEnd2endTest, SecondHeaderUsed) { .Build()); rls_server_->service_.SetResponse( BuildRlsRequest({{kTestKey, kTestValue}}), - BuildRlsResponse({TargetStringForPort(backends_[0]->port_)})); + BuildRlsResponse({grpc_core::LocalIpUri(backends_[0]->port_)})); CheckRpcSendOk(DEBUG_LOCATION, RpcOptions().set_metadata({{"key2", kTestValue}})); EXPECT_EQ(rls_server_->service_.request_count(), 1); @@ -594,7 +583,7 @@ TEST_F(RlsEnd2endTest, MultipleHeaderKeys) { {kTestKey, kTestValue}, {kTestKey2, kTestValue2}, }), - BuildRlsResponse({TargetStringForPort(backends_[0]->port_)})); + BuildRlsResponse({grpc_core::LocalIpUri(backends_[0]->port_)})); CheckRpcSendOk( DEBUG_LOCATION, RpcOptions().set_metadata({{"key1", kTestValue}, {"key2", kTestValue2}})); @@ -625,7 +614,7 @@ TEST_F(RlsEnd2endTest, NoHeaderMatch) { .Build()); rls_server_->service_.SetResponse( BuildRlsRequest({}), - BuildRlsResponse({TargetStringForPort(backends_[0]->port_)})); + BuildRlsResponse({grpc_core::LocalIpUri(backends_[0]->port_)})); // Request does not have header "key1", so kTestKey will not be added. CheckRpcSendOk(DEBUG_LOCATION); EXPECT_EQ(rls_server_->service_.request_count(), 1); @@ -651,7 +640,7 @@ TEST_F(RlsEnd2endTest, WildcardMethod) { .Build()); rls_server_->service_.SetResponse( BuildRlsRequest({{kTestKey, kTestValue}}), - BuildRlsResponse({TargetStringForPort(backends_[0]->port_)})); + BuildRlsResponse({grpc_core::LocalIpUri(backends_[0]->port_)})); CheckRpcSendOk(DEBUG_LOCATION, RpcOptions().set_metadata({{"key1", kTestValue}})); EXPECT_EQ(rls_server_->service_.request_count(), 1); @@ -679,7 +668,7 @@ TEST_F(RlsEnd2endTest, NoKeyBuilderForMethod) { .Build()); rls_server_->service_.SetResponse( BuildRlsRequest({}), - BuildRlsResponse({TargetStringForPort(backends_[0]->port_)})); + BuildRlsResponse({grpc_core::LocalIpUri(backends_[0]->port_)})); CheckRpcSendOk(DEBUG_LOCATION); EXPECT_EQ(rls_server_->service_.request_count(), 1); EXPECT_EQ(rls_server_->service_.response_count(), 1); @@ -707,7 +696,7 @@ TEST_F(RlsEnd2endTest, HeaderData) { .Build()); rls_server_->service_.SetResponse( BuildRlsRequest({{kTestKey, kTestValue}}), - BuildRlsResponse({TargetStringForPort(backends_[0]->port_)}, + BuildRlsResponse({grpc_core::LocalIpUri(backends_[0]->port_)}, kHeaderData)); CheckRpcSendOk(DEBUG_LOCATION, RpcOptions().set_metadata({{"key1", kTestValue}})); @@ -754,7 +743,7 @@ TEST_F(RlsEnd2endTest, ExtraKeysAndConstantKeys) { {kMethodKey, kMethodValue}, {kConstantKey, kConstantValue}, }), - BuildRlsResponse({TargetStringForPort(backends_[0]->port_)})); + BuildRlsResponse({grpc_core::LocalIpUri(backends_[0]->port_)})); CheckRpcSendOk(DEBUG_LOCATION, RpcOptions().set_metadata({{"key1", kTestValue}})); EXPECT_EQ(rls_server_->service_.request_count(), 1); @@ -783,10 +772,10 @@ TEST_F(RlsEnd2endTest, TwoCacheEntriesWithSameTarget) { .Build()); rls_server_->service_.SetResponse( BuildRlsRequest({{kTestKey, kTestValue}}), - BuildRlsResponse({TargetStringForPort(backends_[0]->port_)})); + BuildRlsResponse({grpc_core::LocalIpUri(backends_[0]->port_)})); rls_server_->service_.SetResponse( BuildRlsRequest({{kTestKey, kTestValue2}}), - BuildRlsResponse({TargetStringForPort(backends_[0]->port_)})); + BuildRlsResponse({grpc_core::LocalIpUri(backends_[0]->port_)})); CheckRpcSendOk(DEBUG_LOCATION, RpcOptions().set_metadata({{"key1", kTestValue}})); EXPECT_EQ(rls_server_->service_.request_count(), 1); @@ -830,10 +819,10 @@ TEST_F(RlsEnd2endTest, FailedRlsRequestWithoutDefaultTarget) { const char* kTestValue3 = "test_value_3"; rls_server_->service_.SetResponse( BuildRlsRequest({{kTestKey, kTestValue2}}), - BuildRlsResponse({TargetStringForPort(backends_[0]->port_)})); + BuildRlsResponse({grpc_core::LocalIpUri(backends_[0]->port_)})); rls_server_->service_.SetResponse( BuildRlsRequest({{kTestKey, kTestValue3}}), - BuildRlsResponse({TargetStringForPort(backends_[0]->port_)})); + BuildRlsResponse({grpc_core::LocalIpUri(backends_[0]->port_)})); CheckRpcSendOk(DEBUG_LOCATION, RpcOptions().set_metadata({{"key1", kTestValue2}})); CheckRpcSendOk(DEBUG_LOCATION, @@ -855,7 +844,7 @@ TEST_F(RlsEnd2endTest, FailedRlsRequestWithoutDefaultTarget) { // Now give the RLS server the right response. rls_server_->service_.SetResponse( BuildRlsRequest({{kTestKey, kTestValue}}), - BuildRlsResponse({TargetStringForPort(backends_[0]->port_)})); + BuildRlsResponse({grpc_core::LocalIpUri(backends_[0]->port_)})); // Sleep long enough for backoff to elapse, then try another RPC. gpr_sleep_until(grpc_timeout_seconds_to_deadline(3)); CheckRpcSendOk(DEBUG_LOCATION, @@ -882,7 +871,7 @@ TEST_F(RlsEnd2endTest, FailedRlsRequestWithDefaultTarget) { " }" "]", kServiceValue, kMethodValue, kTestKey)) - .set_default_target(TargetStringForPort(backends_[0]->port_)) + .set_default_target(grpc_core::LocalIpUri(backends_[0]->port_)) .Build()); // Don't give the RLS server a response, so the RLS request will fail. // The data plane RPC should be sent to the default target. @@ -918,13 +907,13 @@ TEST_F(RlsEnd2endTest, RlsRequestTimeout) { " }" "]", kServiceValue, kMethodValue, kTestKey)) - .set_default_target(TargetStringForPort(backends_[1]->port_)) + .set_default_target(grpc_core::LocalIpUri(backends_[1]->port_)) .set_lookup_service_timeout(grpc_core::Duration::Seconds(2)) .Build()); // RLS server will send a response, but it's longer than the timeout. rls_server_->service_.SetResponse( BuildRlsRequest({{kTestKey, kTestValue}}), - BuildRlsResponse({TargetStringForPort(backends_[0]->port_)}), + BuildRlsResponse({grpc_core::LocalIpUri(backends_[0]->port_)}), /*response_delay=*/grpc_core::Duration::Seconds(3)); // The data plane RPC should be sent to the default target. CheckRpcSendOk(DEBUG_LOCATION, RpcOptions().set_timeout_ms(4000).set_metadata( @@ -951,7 +940,7 @@ TEST_F(RlsEnd2endTest, UpdateConfig) { " }" "]", kServiceValue, kMethodValue, kTestKey)) - .set_default_target(TargetStringForPort(backends_[0]->port_)); + .set_default_target(grpc_core::LocalIpUri(backends_[0]->port_)); SetNextResolution(service_config_builder.Build()); // Don't give the RLS server a response, so the RLS request will fail. // The data plane RPC should be sent to the default target. @@ -971,7 +960,7 @@ TEST_F(RlsEnd2endTest, UpdateConfig) { EXPECT_EQ(backends_[1]->service_.request_count(), 0); // Now update the config to point to a new default target. service_config_builder.set_default_target( - TargetStringForPort(backends_[1]->port_)); + grpc_core::LocalIpUri(backends_[1]->port_)); SetNextResolution(service_config_builder.Build()); // Send another RPC, which should go to the new default target. // The RLS server will *not* see another request, because the cache @@ -1004,7 +993,7 @@ TEST_F(RlsEnd2endTest, CachedResponse) { .Build()); rls_server_->service_.SetResponse( BuildRlsRequest({{kTestKey, kTestValue}}), - BuildRlsResponse({TargetStringForPort(backends_[0]->port_)})); + BuildRlsResponse({grpc_core::LocalIpUri(backends_[0]->port_)})); // Send two RPCs. CheckRpcSendOk(DEBUG_LOCATION, RpcOptions().set_metadata({{"key1", kTestValue}})); @@ -1038,7 +1027,7 @@ TEST_F(RlsEnd2endTest, StaleCacheEntry) { .Build()); rls_server_->service_.SetResponse( BuildRlsRequest({{kTestKey, kTestValue}}), - BuildRlsResponse({TargetStringForPort(backends_[0]->port_)})); + BuildRlsResponse({grpc_core::LocalIpUri(backends_[0]->port_)})); // Send one RPC. RLS server gets a request, and RPC goes to backend. CheckRpcSendOk(DEBUG_LOCATION, RpcOptions().set_metadata({{"key1", kTestValue}})); @@ -1051,7 +1040,7 @@ TEST_F(RlsEnd2endTest, StaleCacheEntry) { rls_server_->service_.SetResponse( BuildRlsRequest({{kTestKey, kTestValue}}, RouteLookupRequest::REASON_STALE), - BuildRlsResponse({TargetStringForPort(backends_[0]->port_)})); + BuildRlsResponse({grpc_core::LocalIpUri(backends_[0]->port_)})); // Wait longer than stale age. gpr_sleep_until(grpc_timeout_seconds_to_deadline(2)); // Send another RPC. This should use the stale value but should @@ -1088,7 +1077,7 @@ TEST_F(RlsEnd2endTest, StaleCacheEntryWithHeaderData) { .Build()); rls_server_->service_.SetResponse( BuildRlsRequest({{kTestKey, kTestValue}}), - BuildRlsResponse({TargetStringForPort(backends_[0]->port_)}, + BuildRlsResponse({grpc_core::LocalIpUri(backends_[0]->port_)}, kHeaderData)); // Send one RPC. RLS server gets a request, and RPC goes to backend. CheckRpcSendOk(DEBUG_LOCATION, @@ -1102,7 +1091,7 @@ TEST_F(RlsEnd2endTest, StaleCacheEntryWithHeaderData) { rls_server_->service_.SetResponse( BuildRlsRequest({{kTestKey, kTestValue}}, RouteLookupRequest::REASON_STALE, kHeaderData), - BuildRlsResponse({TargetStringForPort(backends_[0]->port_)}, + BuildRlsResponse({grpc_core::LocalIpUri(backends_[0]->port_)}, kHeaderData)); // Wait longer than stale age. gpr_sleep_until(grpc_timeout_seconds_to_deadline(2)); @@ -1139,7 +1128,7 @@ TEST_F(RlsEnd2endTest, ExpiredCacheEntry) { .Build()); rls_server_->service_.SetResponse( BuildRlsRequest({{kTestKey, kTestValue}}), - BuildRlsResponse({TargetStringForPort(backends_[0]->port_)})); + BuildRlsResponse({grpc_core::LocalIpUri(backends_[0]->port_)})); // Send one RPC. RLS server gets a request, and RPC goes to backend. CheckRpcSendOk(DEBUG_LOCATION, RpcOptions().set_metadata({{"key1", kTestValue}})); @@ -1185,10 +1174,10 @@ TEST_F(RlsEnd2endTest, CacheSizeLimit) { // Set RLS responses for both kTestValue and kTestValue2. rls_server_->service_.SetResponse( BuildRlsRequest({{kTestKey, kTestValue}}), - BuildRlsResponse({TargetStringForPort(backends_[0]->port_)})); + BuildRlsResponse({grpc_core::LocalIpUri(backends_[0]->port_)})); rls_server_->service_.SetResponse( BuildRlsRequest({{kTestKey, kTestValue2}}), - BuildRlsResponse({TargetStringForPort(backends_[1]->port_)})); + BuildRlsResponse({grpc_core::LocalIpUri(backends_[1]->port_)})); // Send an RPC for kTestValue. // RLS server gets a request, and RPC goes to backend. CheckRpcSendOk(DEBUG_LOCATION, @@ -1256,7 +1245,7 @@ TEST_F(RlsEnd2endTest, MultipleTargets) { BuildRlsResponse( // Second target will report TRANSIENT_FAILURE, but should // never be used. - {TargetStringForPort(backends_[0]->port_), "invalid_target"})); + {grpc_core::LocalIpUri(backends_[0]->port_), "invalid_target"})); CheckRpcSendOk(DEBUG_LOCATION, RpcOptions().set_metadata({{"key1", kTestValue}})); EXPECT_EQ(rls_server_->service_.request_count(), 1); @@ -1286,7 +1275,7 @@ TEST_F(RlsEnd2endTest, MultipleTargetsFirstInTransientFailure) { BuildRlsRequest({{kTestKey, kTestValue}}), BuildRlsResponse( // First target will report TRANSIENT_FAILURE. - {"invalid_target", TargetStringForPort(backends_[0]->port_)})); + {"invalid_target", grpc_core::LocalIpUri(backends_[0]->port_)})); CheckRpcSendOk(DEBUG_LOCATION, RpcOptions().set_metadata({{"key1", kTestValue}})); EXPECT_EQ(rls_server_->service_.request_count(), 1); @@ -1317,7 +1306,7 @@ TEST_F(RlsEnd2endTest, ConnectivityStateReady) { BuildRlsRequest({{kTestKey, kTestValue}}), BuildRlsResponse( // One target in TRANSIENT_FAILURE, the other in READY. - {"invalid_target", TargetStringForPort(backends_[0]->port_)})); + {"invalid_target", grpc_core::LocalIpUri(backends_[0]->port_)})); CheckRpcSendOk(DEBUG_LOCATION, RpcOptions().set_metadata({{"key1", kTestValue}})); EXPECT_EQ(rls_server_->service_.request_count(), 1); diff --git a/test/cpp/end2end/service_config_end2end_test.cc b/test/cpp/end2end/service_config_end2end_test.cc index bb60f6fe66d..3f8cb8f3758 100644 --- a/test/cpp/end2end/service_config_end2end_test.cc +++ b/test/cpp/end2end/service_config_end2end_test.cc @@ -134,11 +134,6 @@ class ServiceConfigEnd2endTest : public ::testing::Test { grpc_init(); response_generator_ = grpc_core::MakeRefCounted(); - bool localhost_resolves_to_ipv4 = false; - bool localhost_resolves_to_ipv6 = false; - grpc_core::LocalhostResolves(&localhost_resolves_to_ipv4, - &localhost_resolves_to_ipv6); - ipv6_only_ = !localhost_resolves_to_ipv4 && localhost_resolves_to_ipv6; } void TearDown() override { @@ -178,9 +173,8 @@ class ServiceConfigEnd2endTest : public ::testing::Test { grpc_core::Resolver::Result result; result.addresses = grpc_core::EndpointAddressesList(); for (const int& port : ports) { - std::string lb_uri_str = - absl::StrCat(ipv6_only_ ? "ipv6:[::1]:" : "ipv4:127.0.0.1:", port); - absl::StatusOr lb_uri = grpc_core::URI::Parse(lb_uri_str); + absl::StatusOr lb_uri = + grpc_core::URI::Parse(grpc_core::LocalIpUri(port)); GPR_ASSERT(lb_uri.ok()); grpc_resolved_address address; GPR_ASSERT(grpc_parse_uri(*lb_uri, &address)); @@ -433,7 +427,6 @@ class ServiceConfigEnd2endTest : public ::testing::Test { return "{\"version\": \"invalid_default\""; } - bool ipv6_only_ = false; const std::string server_host_; std::unique_ptr stub_; std::vector> servers_; diff --git a/test/cpp/end2end/tls_key_export_test.cc b/test/cpp/end2end/tls_key_export_test.cc index 68724b07c56..67e3e9de900 100644 --- a/test/cpp/end2end/tls_key_export_test.cc +++ b/test/cpp/end2end/tls_key_export_test.cc @@ -195,16 +195,9 @@ class TlsKeyLoggingEnd2EndTest : public ::testing::TestWithParam { server_thread_ = std::thread(&TlsKeyLoggingEnd2EndTest::RunServerLoop, this); - bool localhost_resolves_to_ipv4 = false; - bool localhost_resolves_to_ipv6 = false; - grpc_core::LocalhostResolves(&localhost_resolves_to_ipv4, - &localhost_resolves_to_ipv6); - bool ipv6_only = !localhost_resolves_to_ipv4 && localhost_resolves_to_ipv6; - absl::string_view local_ip = ipv6_only ? "[::1]" : "127.0.0.1"; - for (int i = 0; i < GetParam().num_listening_ports(); i++) { ASSERT_NE(0, ports_[i]); - server_addresses_.push_back(absl::StrCat(local_ip, ":", ports_[i])); + server_addresses_.push_back(grpc_core::LocalIpAndPort(ports_[i])); // Configure tls credential options for each stub. Each stub connects to // a separate port on the server. diff --git a/test/cpp/end2end/xds/xds_cluster_type_end2end_test.cc b/test/cpp/end2end/xds/xds_cluster_type_end2end_test.cc index df8cb012652..3b601e59a8a 100644 --- a/test/cpp/end2end/xds/xds_cluster_type_end2end_test.cc +++ b/test/cpp/end2end/xds/xds_cluster_type_end2end_test.cc @@ -31,6 +31,7 @@ #include "src/core/lib/gprpp/env.h" #include "src/core/lib/resolver/endpoint_addresses.h" #include "src/proto/grpc/testing/xds/v3/aggregate_cluster.grpc.pb.h" +#include "test/core/util/resolve_localhost_ip46.h" #include "test/cpp/end2end/connection_attempt_injector.h" #include "test/cpp/end2end/xds/xds_end2end_test_lib.h" @@ -59,8 +60,8 @@ class ClusterTypeTest : public XdsEnd2endTest { const std::vector& ports) { grpc_core::EndpointAddressesList addresses; for (int port : ports) { - absl::StatusOr lb_uri = grpc_core::URI::Parse( - absl::StrCat(ipv6_only_ ? "ipv6:[::1]:" : "ipv4:127.0.0.1:", port)); + absl::StatusOr lb_uri = + grpc_core::URI::Parse(grpc_core::LocalIpUri(port)); GPR_ASSERT(lb_uri.ok()); grpc_resolved_address address; GPR_ASSERT(grpc_parse_uri(*lb_uri, &address)); diff --git a/test/cpp/end2end/xds/xds_core_end2end_test.cc b/test/cpp/end2end/xds/xds_core_end2end_test.cc index cd97b92dccc..1142b2f0216 100644 --- a/test/cpp/end2end/xds/xds_core_end2end_test.cc +++ b/test/cpp/end2end/xds/xds_core_end2end_test.cc @@ -24,6 +24,7 @@ #include "src/core/ext/filters/client_channel/backup_poller.h" #include "src/core/lib/config/config_vars.h" +#include "test/core/util/resolve_localhost_ip46.h" #include "test/core/util/scoped_env_var.h" #include "test/cpp/end2end/xds/xds_end2end_test_lib.h" @@ -1045,8 +1046,7 @@ TEST_P(XdsFederationTest, FederationServer) { Listener server_listener = default_server_listener_; server_listener.set_name(absl::StrCat( "xdstp://xds.example.com/envoy.config.listener.v3.Listener/server/", - ipv6_only_ ? "%5B::1%5D:" : "127.0.0.1:", port, - "?psm_project_id=1234")); + grpc_core::LocalIp(), ":", port, "?psm_project_id=1234")); server_listener.mutable_address()->mutable_socket_address()->set_port_value( port); SetListenerAndRouteConfiguration(authority_balancer_.get(), server_listener, diff --git a/test/cpp/end2end/xds/xds_csds_end2end_test.cc b/test/cpp/end2end/xds/xds_csds_end2end_test.cc index 540f64cb901..c616dfcc4d1 100644 --- a/test/cpp/end2end/xds/xds_csds_end2end_test.cc +++ b/test/cpp/end2end/xds/xds_csds_end2end_test.cc @@ -34,6 +34,7 @@ #include "src/proto/grpc/testing/xds/v3/http_connection_manager.grpc.pb.h" #include "src/proto/grpc/testing/xds/v3/listener.grpc.pb.h" #include "src/proto/grpc/testing/xds/v3/route.grpc.pb.h" +#include "test/core/util/resolve_localhost_ip46.h" #include "test/core/util/test_config.h" #include "test/cpp/end2end/xds/xds_end2end_test_lib.h" @@ -240,8 +241,8 @@ class ClientStatusDiscoveryServiceTest : public XdsEnd2endTest { ClientStatusDiscoveryServiceTest() { admin_server_thread_ = std::make_unique(this); admin_server_thread_->Start(); - std::string admin_server_address = absl::StrCat( - ipv6_only_ ? "[::1]:" : "127.0.0.1:", admin_server_thread_->port()); + std::string admin_server_address = + grpc_core::LocalIpAndPort(admin_server_thread_->port()); admin_channel_ = grpc::CreateChannel( admin_server_address, std::make_shared( diff --git a/test/cpp/end2end/xds/xds_end2end_test.cc b/test/cpp/end2end/xds/xds_end2end_test.cc index 9a79801978a..9eb8380fcfa 100644 --- a/test/cpp/end2end/xds/xds_end2end_test.cc +++ b/test/cpp/end2end/xds/xds_end2end_test.cc @@ -107,6 +107,7 @@ #include "src/proto/grpc/testing/xds/v3/typed_struct.pb.h" #include "test/core/util/audit_logging_utils.h" #include "test/core/util/port.h" +#include "test/core/util/resolve_localhost_ip46.h" #include "test/core/util/scoped_env_var.h" #include "test/core/util/test_config.h" #include "test/cpp/end2end/xds/xds_end2end_test_lib.h" @@ -818,7 +819,7 @@ TEST_P(XdsEnabledServerTest, NonTcpListener) { balancer_->ads_service()->SetLdsResource(listener); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::FAILED_PRECONDITION); } @@ -835,7 +836,7 @@ TEST_P(XdsEnabledServerTest, ListenerAddressMismatch) { default_server_route_config_); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::FAILED_PRECONDITION); } @@ -916,10 +917,9 @@ class XdsServerSecurityTest : public XdsEnd2endTest { ChannelArguments args; // Override target name for host name check args.SetString(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG, - ipv6_only_ ? "::1" : "127.0.0.1"); + std::string(grpc_core::LocalIp())); args.SetInt(GRPC_ARG_USE_LOCAL_SUBCHANNEL_POOL, 1); - std::string uri = absl::StrCat( - ipv6_only_ ? "ipv6:[::1]:" : "ipv4:127.0.0.1:", backends_[0]->port()); + std::string uri = grpc_core::LocalIpUri(backends_[0]->port()); IdentityKeyCertPair key_cert_pair; key_cert_pair.private_key = ReadFile(kServerKeyPath); key_cert_pair.certificate_chain = ReadFile(kServerCertPath); @@ -944,10 +944,9 @@ class XdsServerSecurityTest : public XdsEnd2endTest { ChannelArguments args; // Override target name for host name check args.SetString(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG, - ipv6_only_ ? "::1" : "127.0.0.1"); + std::string(grpc_core::LocalIp())); args.SetInt(GRPC_ARG_USE_LOCAL_SUBCHANNEL_POOL, 1); - std::string uri = absl::StrCat( - ipv6_only_ ? "ipv6:[::1]:" : "ipv4:127.0.0.1:", backends_[0]->port()); + std::string uri = grpc_core::LocalIpUri(backends_[0]->port()); auto certificate_provider = std::make_shared(ReadFile(kCaCertPath)); grpc::experimental::TlsChannelCredentialsOptions options; @@ -967,13 +966,12 @@ class XdsServerSecurityTest : public XdsEnd2endTest { ChannelArguments args; // Override target name for host name check args.SetString(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG, - ipv6_only_ ? "::1" : "127.0.0.1"); + std::string(grpc_core::LocalIp())); args.SetInt(GRPC_ARG_USE_LOCAL_SUBCHANNEL_POOL, 1); if (use_put_requests) { args.SetInt(GRPC_ARG_TEST_ONLY_USE_PUT_REQUESTS, 1); } - std::string uri = absl::StrCat( - ipv6_only_ ? "ipv6:[::1]:" : "ipv4:127.0.0.1:", backends_[0]->port()); + std::string uri = grpc_core::LocalIpUri(backends_[0]->port()); return CreateCustomChannel(uri, InsecureChannelCredentials(), args); } @@ -1301,16 +1299,16 @@ class XdsEnabledServerStatusNotificationTest : public XdsServerSecurityTest { Listener listener = default_server_listener_; listener.clear_address(); listener.set_name(absl::StrCat( - "grpc/server?xds.resource.listening_address=", - ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port())); + "grpc/server?xds.resource.listening_address=", grpc_core::LocalIp(), + ":", backends_[0]->port())); balancer_->ads_service()->SetLdsResource(listener); } void UnsetLdsUpdate() { balancer_->ads_service()->UnsetResource( - kLdsTypeUrl, absl::StrCat("grpc/server?xds.resource.listening_address=", - ipv6_only_ ? "[::1]:" : "127.0.0.1:", - backends_[0]->port())); + kLdsTypeUrl, + absl::StrCat("grpc/server?xds.resource.listening_address=", + grpc_core::LocalIp(), ":", backends_[0]->port())); } }; @@ -1318,8 +1316,7 @@ TEST_P(XdsEnabledServerStatusNotificationTest, ServingStatus) { SetValidLdsUpdate(); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}); } @@ -1327,7 +1324,7 @@ TEST_P(XdsEnabledServerStatusNotificationTest, NotServingStatus) { SetInvalidLdsUpdate(); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::UNAVAILABLE); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, true /* test_expects_failure */); @@ -1337,8 +1334,7 @@ TEST_P(XdsEnabledServerStatusNotificationTest, ErrorUpdateWhenAlreadyServing) { SetValidLdsUpdate(); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}); // Invalid update does not lead to a change in the serving status. SetInvalidLdsUpdate(); @@ -1346,8 +1342,7 @@ TEST_P(XdsEnabledServerStatusNotificationTest, ErrorUpdateWhenAlreadyServing) { SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}); } while (!balancer_->ads_service()->lds_response_state().has_value()); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}); } @@ -1356,15 +1351,14 @@ TEST_P(XdsEnabledServerStatusNotificationTest, SetInvalidLdsUpdate(); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::UNAVAILABLE); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, true /* test_expects_failure */); // Send a valid LDS update to change to serving status SetValidLdsUpdate(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}); } @@ -1375,13 +1369,12 @@ TEST_P(XdsEnabledServerStatusNotificationTest, SetValidLdsUpdate(); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}); // Deleting the resource should result in a non-serving status. UnsetLdsUpdate(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::NOT_FOUND); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, true /* test_expects_failure */); @@ -1393,15 +1386,12 @@ TEST_P(XdsEnabledServerStatusNotificationTest, RepeatedServingStatusChanges) { // Send a valid LDS update to get the server to start listening SetValidLdsUpdate(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", - backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}); // Deleting the resource will make the server start rejecting connections UnsetLdsUpdate(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", - backends_[0]->port()), + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::NOT_FOUND); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, true /* test_expects_failure */); @@ -1413,8 +1403,7 @@ TEST_P(XdsEnabledServerStatusNotificationTest, ExistingRpcsOnResourceDeletion) { SetValidLdsUpdate(); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); constexpr int kNumChannels = 10; struct StreamingRpc { std::shared_ptr channel; @@ -1439,7 +1428,7 @@ TEST_P(XdsEnabledServerStatusNotificationTest, ExistingRpcsOnResourceDeletion) { // Deleting the resource will make the server start rejecting connections UnsetLdsUpdate(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::NOT_FOUND); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, true /* test_expects_failure */); @@ -1469,8 +1458,7 @@ TEST_P(XdsEnabledServerStatusNotificationTest, SetValidLdsUpdate(); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); constexpr int kNumChannels = 10; struct StreamingRpc { std::shared_ptr channel; @@ -1654,11 +1642,11 @@ TEST_P(XdsServerFilterChainMatchTest, GetHttpConnectionManager(listener)); auto* prefix_range = filter_chain->mutable_filter_chain_match()->add_prefix_ranges(); - prefix_range->set_address_prefix(ipv6_only_ ? "::1" : "127.0.0.1"); + prefix_range->set_address_prefix(grpc_core::LocalIp()); prefix_range->mutable_prefix_len()->set_value(4); prefix_range = filter_chain->mutable_filter_chain_match()->add_prefix_ranges(); - prefix_range->set_address_prefix(ipv6_only_ ? "::1" : "127.0.0.1"); + prefix_range->set_address_prefix(grpc_core::LocalIp()); prefix_range->mutable_prefix_len()->set_value(16); filter_chain->mutable_filter_chain_match()->add_server_names("server_name"); // Add filter chain with two prefix ranges (length 8 and 24). Since 24 is @@ -1668,11 +1656,11 @@ TEST_P(XdsServerFilterChainMatchTest, GetHttpConnectionManager(listener)); prefix_range = filter_chain->mutable_filter_chain_match()->add_prefix_ranges(); - prefix_range->set_address_prefix(ipv6_only_ ? "::1" : "127.0.0.1"); + prefix_range->set_address_prefix(grpc_core::LocalIp()); prefix_range->mutable_prefix_len()->set_value(8); prefix_range = filter_chain->mutable_filter_chain_match()->add_prefix_ranges(); - prefix_range->set_address_prefix(ipv6_only_ ? "::1" : "127.0.0.1"); + prefix_range->set_address_prefix(grpc_core::LocalIp()); prefix_range->mutable_prefix_len()->set_value(24); // Add another filter chain with a non-matching prefix range (with length // 30) @@ -1744,11 +1732,11 @@ TEST_P(XdsServerFilterChainMatchTest, GetHttpConnectionManager(listener)); auto* source_prefix_range = filter_chain->mutable_filter_chain_match()->add_source_prefix_ranges(); - source_prefix_range->set_address_prefix(ipv6_only_ ? "::1" : "127.0.0.1"); + source_prefix_range->set_address_prefix(grpc_core::LocalIp()); source_prefix_range->mutable_prefix_len()->set_value(4); source_prefix_range = filter_chain->mutable_filter_chain_match()->add_source_prefix_ranges(); - source_prefix_range->set_address_prefix(ipv6_only_ ? "::1" : "127.0.0.1"); + source_prefix_range->set_address_prefix(grpc_core::LocalIp()); source_prefix_range->mutable_prefix_len()->set_value(16); filter_chain->mutable_filter_chain_match()->add_source_ports( backends_[0]->port()); @@ -1759,11 +1747,11 @@ TEST_P(XdsServerFilterChainMatchTest, GetHttpConnectionManager(listener)); source_prefix_range = filter_chain->mutable_filter_chain_match()->add_source_prefix_ranges(); - source_prefix_range->set_address_prefix(ipv6_only_ ? "::1" : "127.0.0.1"); + source_prefix_range->set_address_prefix(grpc_core::LocalIp()); source_prefix_range->mutable_prefix_len()->set_value(8); source_prefix_range = filter_chain->mutable_filter_chain_match()->add_source_prefix_ranges(); - source_prefix_range->set_address_prefix(ipv6_only_ ? "::1" : "127.0.0.1"); + source_prefix_range->set_address_prefix(grpc_core::LocalIp()); source_prefix_range->mutable_prefix_len()->set_value(24); // Add another filter chain with a non-matching source prefix range (with // length 30) and bad source port @@ -1829,8 +1817,7 @@ using XdsServerRdsTest = XdsEnabledServerStatusNotificationTest; TEST_P(XdsServerRdsTest, Basic) { backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}); } @@ -1841,8 +1828,7 @@ TEST_P(XdsServerRdsTest, FailsRouteMatchesOtherThanNonForwardingAction) { backends_[0]->Start(); // The server should be ready to serve but RPCs should fail. backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, true /* test_expects_failure */); } @@ -1867,8 +1853,7 @@ TEST_P(XdsServerRdsTest, NonInlineRouteConfigurationNonDefaultFilterChain) { default_server_route_config_); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}); } @@ -1890,8 +1875,7 @@ TEST_P(XdsServerRdsTest, NonInlineRouteConfigurationNotAvailable) { default_server_route_config_); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, true /* test_expects_failure */); } @@ -1943,8 +1927,7 @@ TEST_P(XdsServerRdsTest, MultipleRouteConfigurations) { default_server_route_config_); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}); } @@ -2010,8 +1993,7 @@ TEST_P(XdsRbacTest, AbsentRbacPolicy) { SetServerRbacPolicy(RBAC()); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); // An absent RBAC policy leads to all RPCs being accepted. SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}); } @@ -2023,8 +2005,7 @@ TEST_P(XdsRbacTest, LogAction) { SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); // A Log action is identical to no rbac policy being configured. SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}); } @@ -2065,8 +2046,7 @@ TEST_P(XdsRbacTestWithRouteOverrideAlwaysPresent, EmptyRBACPerRouteOverride) { balancer_.get(), listener, backends_[0]->port(), route_config); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}); } @@ -2107,8 +2087,7 @@ TEST_P(XdsRbacTestWithRouteOverrideAlwaysPresent, balancer_.get(), listener, backends_[0]->port(), route_config); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}); } @@ -2121,8 +2100,7 @@ TEST_P(XdsRbacTestWithActionPermutations, EmptyRbacPolicy) { SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); // An empty RBAC policy leads to all RPCs being rejected. SendRpc( [this]() { return CreateInsecureChannel(); }, {}, {}, @@ -2141,8 +2119,7 @@ TEST_P(XdsRbacTestWithActionPermutations, AnyPermissionAnyPrincipal) { SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_DENY, grpc::StatusCode::PERMISSION_DENIED); @@ -2164,8 +2141,7 @@ TEST_P(XdsRbacTestWithActionPermutations, MultipleRbacPolicies) { {always_allow, rbac, always_allow}); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_DENY, grpc::StatusCode::PERMISSION_DENIED); @@ -2185,8 +2161,7 @@ TEST_P(XdsRbacTestWithActionPermutations, MethodPostPermissionAnyPrincipal) { backends_[0]->set_allow_put_requests(true); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); // All RPCs use POST method by default SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_DENY, @@ -2211,8 +2186,7 @@ TEST_P(XdsRbacTestWithActionPermutations, MethodGetPermissionAnyPrincipal) { SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); // Test that an RPC with a POST method gets rejected SendRpc( [this]() { return CreateInsecureChannel(); }, {}, {}, @@ -2236,8 +2210,7 @@ TEST_P(XdsRbacTestWithActionPermutations, MethodPutPermissionAnyPrincipal) { backends_[0]->set_allow_put_requests(true); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); // Test that an RPC with a POST method gets rejected SendRpc( [this]() { return CreateInsecureChannel(); }, {}, {}, @@ -2263,8 +2236,7 @@ TEST_P(XdsRbacTestWithActionPermutations, UrlPathPermissionAnyPrincipal) { SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_DENY, grpc::StatusCode::PERMISSION_DENIED); @@ -2289,23 +2261,25 @@ TEST_P(XdsRbacTestWithActionPermutations, DestinationIpPermissionAnyPrincipal) { rules->set_action(GetParam().rbac_action()); Policy policy; auto* range = policy.add_permissions()->mutable_destination_ip(); - range->set_address_prefix(ipv6_only_ ? "::1" : "127.0.0.1"); - range->mutable_prefix_len()->set_value(ipv6_only_ ? 128 : 32); + range->set_address_prefix(grpc_core::LocalIp()); + range->mutable_prefix_len()->set_value(grpc_core::RunningWithIPv6Only() ? 128 + : 32); policy.add_principals()->set_any(true); (*rules->mutable_policies())["policy"] = policy; SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_DENY, grpc::StatusCode::PERMISSION_DENIED); // Change the policy itself for a negative test where there is no match. policy.clear_permissions(); range = policy.add_permissions()->mutable_destination_ip(); - range->set_address_prefix(ipv6_only_ ? "::2" : "127.0.0.2"); - range->mutable_prefix_len()->set_value(ipv6_only_ ? 128 : 32); + range->set_address_prefix(grpc_core::RunningWithIPv6Only() ? "::2" + : "127.0.0.2"); + range->mutable_prefix_len()->set_value(grpc_core::RunningWithIPv6Only() ? 128 + : 32); (*rules->mutable_policies())["policy"] = policy; SetServerRbacPolicy(rbac); SendRpc( @@ -2326,8 +2300,7 @@ TEST_P(XdsRbacTestWithActionPermutations, SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_DENY, grpc::StatusCode::PERMISSION_DENIED); @@ -2353,8 +2326,7 @@ TEST_P(XdsRbacTestWithActionPermutations, MetadataPermissionAnyPrincipal) { SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc( [this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_ALLOW, @@ -2381,8 +2353,7 @@ TEST_P(XdsRbacTestWithActionPermutations, ReqServerNamePermissionAnyPrincipal) { SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc( [this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_ALLOW, @@ -2410,8 +2381,7 @@ TEST_P(XdsRbacTestWithActionPermutations, NotRulePermissionAnyPrincipal) { SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_DENY, grpc::StatusCode::PERMISSION_DENIED); @@ -2439,8 +2409,7 @@ TEST_P(XdsRbacTestWithActionPermutations, AndRulePermissionAnyPrincipal) { SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_DENY, grpc::StatusCode::PERMISSION_DENIED); @@ -2468,8 +2437,7 @@ TEST_P(XdsRbacTestWithActionPermutations, OrRulePermissionAnyPrincipal) { SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_DENY, grpc::StatusCode::PERMISSION_DENIED); @@ -2498,8 +2466,7 @@ TEST_P(XdsRbacTestWithActionPermutations, AnyPermissionMethodPostPrincipal) { backends_[0]->set_allow_put_requests(true); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); // All RPCs use POST method by default SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_DENY, @@ -2524,8 +2491,7 @@ TEST_P(XdsRbacTestWithActionPermutations, AnyPermissionMethodGetPrincipal) { SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); // Test that an RPC with a POST method gets rejected SendRpc( [this]() { return CreateInsecureChannel(); }, {}, {}, @@ -2549,8 +2515,7 @@ TEST_P(XdsRbacTestWithActionPermutations, AnyPermissionMethodPutPrincipal) { backends_[0]->set_allow_put_requests(true); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); // Test that an RPC with a PUT method gets accepted SendRpc( [this]() { return CreateInsecureChannel(/*use_put_requests=*/true); }, {}, @@ -2576,8 +2541,7 @@ TEST_P(XdsRbacTestWithActionPermutations, AnyPermissionUrlPathPrincipal) { SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_DENY, grpc::StatusCode::PERMISSION_DENIED); @@ -2603,23 +2567,25 @@ TEST_P(XdsRbacTestWithActionPermutations, rules->set_action(GetParam().rbac_action()); Policy policy; auto* range = policy.add_principals()->mutable_direct_remote_ip(); - range->set_address_prefix(ipv6_only_ ? "::1" : "127.0.0.1"); - range->mutable_prefix_len()->set_value(ipv6_only_ ? 128 : 32); + range->set_address_prefix(grpc_core::LocalIp()); + range->mutable_prefix_len()->set_value(grpc_core::RunningWithIPv6Only() ? 128 + : 32); policy.add_permissions()->set_any(true); (*rules->mutable_policies())["policy"] = policy; SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_DENY, grpc::StatusCode::PERMISSION_DENIED); // Change the policy itself for a negative test where there is no match. policy.clear_principals(); range = policy.add_principals()->mutable_direct_remote_ip(); - range->set_address_prefix(ipv6_only_ ? "::2" : "127.0.0.2"); - range->mutable_prefix_len()->set_value(ipv6_only_ ? 128 : 32); + range->set_address_prefix(grpc_core::RunningWithIPv6Only() ? "::2" + : "127.0.0.2"); + range->mutable_prefix_len()->set_value(grpc_core::RunningWithIPv6Only() ? 128 + : 32); (*rules->mutable_policies())["policy"] = policy; SetServerRbacPolicy(rbac); SendRpc( @@ -2634,23 +2600,25 @@ TEST_P(XdsRbacTestWithActionPermutations, AnyPermissionRemoteIpPrincipal) { rules->set_action(GetParam().rbac_action()); Policy policy; auto* range = policy.add_principals()->mutable_remote_ip(); - range->set_address_prefix(ipv6_only_ ? "::1" : "127.0.0.1"); - range->mutable_prefix_len()->set_value(ipv6_only_ ? 128 : 32); + range->set_address_prefix(grpc_core::LocalIp()); + range->mutable_prefix_len()->set_value(grpc_core::RunningWithIPv6Only() ? 128 + : 32); policy.add_permissions()->set_any(true); (*rules->mutable_policies())["policy"] = policy; SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_DENY, grpc::StatusCode::PERMISSION_DENIED); // Change the policy itself for a negative test where there is no match. policy.clear_principals(); range = policy.add_principals()->mutable_remote_ip(); - range->set_address_prefix(ipv6_only_ ? "::2" : "127.0.0.2"); - range->mutable_prefix_len()->set_value(ipv6_only_ ? 128 : 32); + range->set_address_prefix(grpc_core::RunningWithIPv6Only() ? "::2" + : "127.0.0.2"); + range->mutable_prefix_len()->set_value(grpc_core::RunningWithIPv6Only() ? 128 + : 32); (*rules->mutable_policies())["policy"] = policy; SetServerRbacPolicy(rbac); SendRpc( @@ -2688,8 +2656,7 @@ TEST_P(XdsRbacTestWithActionPermutations, AnyPermissionAuthenticatedPrincipal) { SetServerRbacPolicy(listener, rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateMtlsChannel(); }, server_authenticated_identity_, client_authenticated_identity_, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_DENY, @@ -2707,8 +2674,7 @@ TEST_P(XdsRbacTestWithActionPermutations, AnyPermissionMetadataPrincipal) { SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc( [this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_ALLOW, @@ -2738,8 +2704,7 @@ TEST_P(XdsRbacTestWithActionPermutations, AnyPermissionNotIdPrincipal) { SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_DENY, grpc::StatusCode::PERMISSION_DENIED); @@ -2768,8 +2733,7 @@ TEST_P(XdsRbacTestWithActionPermutations, AnyPermissionAndIdPrincipal) { SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_DENY, grpc::StatusCode::PERMISSION_DENIED); @@ -2799,8 +2763,7 @@ TEST_P(XdsRbacTestWithActionPermutations, AnyPermissionOrIdPrincipal) { SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_DENY, grpc::StatusCode::PERMISSION_DENIED); @@ -2832,8 +2795,7 @@ TEST_P(XdsRbacTestWithActionPermutations, SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); // An empty RBAC policy leads to all RPCs being rejected. SendRpc( [this]() { return CreateInsecureChannel(); }, {}, {}, @@ -2875,8 +2837,7 @@ TEST_P(XdsRbacTestWithActionPermutations, {always_allow, rbac, always_allow}); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_DENY, grpc::StatusCode::PERMISSION_DENIED); @@ -2922,8 +2883,7 @@ TEST_P(XdsRbacTestWithActionPermutations, MultipleRbacPoliciesWithAuditOnDeny) { {always_allow, rbac, always_allow}); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_DENY, grpc::StatusCode::PERMISSION_DENIED); @@ -2971,8 +2931,7 @@ TEST_P(XdsRbacTestWithActionPermutations, {always_allow, rbac, always_allow}); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_DENY, grpc::StatusCode::PERMISSION_DENIED); @@ -3021,8 +2980,7 @@ TEST_P(XdsRbacTestWithActionAndAuditConditionPermutations, SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/GetParam().rbac_action() == RBAC_Action_DENY, grpc::StatusCode::PERMISSION_DENIED); @@ -3054,8 +3012,7 @@ TEST_P(XdsRbacTestWithActionAndAuditConditionPermutations, MultipleLoggers) { SetServerRbacPolicy(rbac); backends_[0]->Start(); backends_[0]->notifier()->WaitOnServingStatusChange( - absl::StrCat(ipv6_only_ ? "[::1]:" : "127.0.0.1:", backends_[0]->port()), - grpc::StatusCode::OK); + grpc_core::LocalIpAndPort(backends_[0]->port()), grpc::StatusCode::OK); auto action = GetParam().rbac_action(); SendRpc([this]() { return CreateInsecureChannel(); }, {}, {}, /*test_expects_failure=*/action == RBAC_Action_DENY, diff --git a/test/cpp/end2end/xds/xds_end2end_test_lib.cc b/test/cpp/end2end/xds/xds_end2end_test_lib.cc index 80e08596e58..b24a813c566 100644 --- a/test/cpp/end2end/xds/xds_end2end_test_lib.cc +++ b/test/cpp/end2end/xds/xds_end2end_test_lib.cc @@ -464,11 +464,6 @@ const char XdsEnd2endTest::kServerKeyPath[] = const char XdsEnd2endTest::kRequestMessage[] = "Live long and prosper."; XdsEnd2endTest::XdsEnd2endTest() : balancer_(CreateAndStartBalancer()) { - bool localhost_resolves_to_ipv4 = false; - bool localhost_resolves_to_ipv6 = false; - grpc_core::LocalhostResolves(&localhost_resolves_to_ipv4, - &localhost_resolves_to_ipv6); - ipv6_only_ = !localhost_resolves_to_ipv4 && localhost_resolves_to_ipv6; // Initialize default xDS resources. // Construct LDS resource. default_listener_.set_name(kServerName); @@ -510,7 +505,7 @@ XdsEnd2endTest::XdsEnd2endTest() : balancer_(CreateAndStartBalancer()) { // Construct a default server-side Listener resource default_server_listener_.mutable_address() ->mutable_socket_address() - ->set_address(ipv6_only_ ? "::1" : "127.0.0.1"); + ->set_address(grpc_core::LocalIp()); default_server_listener_.mutable_default_filter_chain() ->add_filters() ->mutable_typed_config() @@ -541,7 +536,7 @@ XdsEnd2endTest::CreateAndStartBalancer() { std::string XdsEnd2endTest::GetServerListenerName(int port) { return absl::StrCat("grpc/server?xds.resource.listening_address=", - ipv6_only_ ? "[::1]:" : "127.0.0.1:", port); + grpc_core::LocalIp(), ":", port); } Listener XdsEnd2endTest::PopulateServerListenerNameAndPort( @@ -654,13 +649,13 @@ ClusterLoadAssignment XdsEnd2endTest::BuildEdsResource( auto* endpoint_proto = lb_endpoints->mutable_endpoint(); auto* socket_address = endpoint_proto->mutable_address()->mutable_socket_address(); - socket_address->set_address(ipv6_only_ ? "::1" : "127.0.0.1"); + socket_address->set_address(grpc_core::LocalIp()); socket_address->set_port_value(endpoint.port); for (int port : endpoint.additional_ports) { socket_address = endpoint_proto->add_additional_addresses() ->mutable_address() ->mutable_socket_address(); - socket_address->set_address(ipv6_only_ ? "::1" : "127.0.0.1"); + socket_address->set_address(grpc_core::LocalIp()); socket_address->set_port_value(port); } } diff --git a/test/cpp/end2end/xds/xds_end2end_test_lib.h b/test/cpp/end2end/xds/xds_end2end_test_lib.h index 683b133bd60..34dec7d8821 100644 --- a/test/cpp/end2end/xds/xds_end2end_test_lib.h +++ b/test/cpp/end2end/xds/xds_end2end_test_lib.h @@ -1107,8 +1107,6 @@ class XdsEnd2endTest : public ::testing::TestWithParam { // credentials for XdsCredentials. static std::shared_ptr CreateTlsFallbackCredentials(); - bool ipv6_only_ = false; - std::unique_ptr balancer_; std::shared_ptr channel_; diff --git a/test/cpp/end2end/xds/xds_outlier_detection_end2end_test.cc b/test/cpp/end2end/xds/xds_outlier_detection_end2end_test.cc index a1228a116ad..5194fbfd152 100644 --- a/test/cpp/end2end/xds/xds_outlier_detection_end2end_test.cc +++ b/test/cpp/end2end/xds/xds_outlier_detection_end2end_test.cc @@ -26,6 +26,7 @@ #include "src/proto/grpc/testing/xds/v3/fault.grpc.pb.h" #include "src/proto/grpc/testing/xds/v3/outlier_detection.grpc.pb.h" #include "src/proto/grpc/testing/xds/v3/router.grpc.pb.h" +#include "test/core/util/resolve_localhost_ip46.h" #include "test/cpp/end2end/xds/xds_end2end_test_lib.h" namespace grpc { @@ -35,8 +36,8 @@ namespace { class OutlierDetectionTest : public XdsEnd2endTest { protected: std::string CreateMetadataValueThatHashesToBackend(int index) { - return absl::StrCat(ipv6_only_ ? "[::1]" : "127.0.0.1", ":", - backends_[index]->port(), "_0"); + return absl::StrCat(grpc_core::LocalIp(), ":", backends_[index]->port(), + "_0"); } }; diff --git a/test/cpp/end2end/xds/xds_ring_hash_end2end_test.cc b/test/cpp/end2end/xds/xds_ring_hash_end2end_test.cc index fc16f95a30f..adc24e8010b 100644 --- a/test/cpp/end2end/xds/xds_ring_hash_end2end_test.cc +++ b/test/cpp/end2end/xds/xds_ring_hash_end2end_test.cc @@ -32,6 +32,7 @@ #include "src/core/lib/gprpp/env.h" #include "src/proto/grpc/testing/xds/v3/aggregate_cluster.grpc.pb.h" #include "src/proto/grpc/testing/xds/v3/cluster.grpc.pb.h" +#include "test/core/util/resolve_localhost_ip46.h" #include "test/cpp/end2end/connection_attempt_injector.h" #include "test/cpp/end2end/xds/xds_end2end_test_lib.h" @@ -66,8 +67,8 @@ class RingHashTest : public XdsEnd2endTest { const std::vector& ports) { grpc_core::EndpointAddressesList addresses; for (int port : ports) { - absl::StatusOr lb_uri = grpc_core::URI::Parse( - absl::StrCat(ipv6_only_ ? "ipv6:[::1]:" : "ipv4:127.0.0.1:", port)); + absl::StatusOr lb_uri = + grpc_core::URI::Parse(grpc_core::LocalIpUri(port)); GPR_ASSERT(lb_uri.ok()); grpc_resolved_address address; GPR_ASSERT(grpc_parse_uri(*lb_uri, &address)); @@ -77,7 +78,7 @@ class RingHashTest : public XdsEnd2endTest { } std::string CreateMetadataValueThatHashesToBackendPort(int port) { - return absl::StrCat(ipv6_only_ ? "[::1]" : "127.0.0.1", ":", port, "_0"); + return absl::StrCat(grpc_core::LocalIp(), ":", port, "_0"); } std::string CreateMetadataValueThatHashesToBackend(int index) {