diff options
Diffstat (limited to 'test/cpp/naming/address_sorting_test.cc')
-rw-r--r-- | test/cpp/naming/address_sorting_test.cc | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/test/cpp/naming/address_sorting_test.cc b/test/cpp/naming/address_sorting_test.cc index df93ff6f8d..a92e9e3b3e 100644 --- a/test/cpp/naming/address_sorting_test.cc +++ b/test/cpp/naming/address_sorting_test.cc @@ -298,6 +298,29 @@ TEST(AddressSortingTest, TestUsesLabelFromDefaultTable) { }); } +/* Flip the input on the test above to reorder the sort function's + * comparator's inputs. */ +TEST(AddressSortingTest, TestUsesLabelFromDefaultTableInputFlipped) { + bool ipv4_supported = true; + bool ipv6_supported = true; + OverrideAddressSortingSourceAddrFactory( + ipv4_supported, ipv6_supported, + { + {"[2002::5001]:443", {"[2001::5002]:0", AF_INET6}}, + {"[2001::5001]:443", + {"[2001::5002]:0", AF_INET6}}, // matching labels + }); + grpc_lb_addresses* lb_addrs = BuildLbAddrInputs({ + {"[2001::5001]:443", AF_INET6}, + {"[2002::5001]:443", AF_INET6}, + }); + grpc_cares_wrapper_test_only_address_sorting_sort(lb_addrs); + VerifyLbAddrOutputs(lb_addrs, { + "[2001::5001]:443", + "[2002::5001]:443", + }); +} + /* Tests for rule 6 */ TEST(AddressSortingTest, @@ -722,16 +745,24 @@ TEST(AddressSortingTest, TestStableSortV4CompatAndSiteLocalAddresses) { } int main(int argc, char** argv) { - const char* resolver = gpr_getenv("GRPC_DNS_RESOLVER"); + char* resolver = gpr_getenv("GRPC_DNS_RESOLVER"); if (resolver == nullptr || strlen(resolver) == 0) { gpr_setenv("GRPC_DNS_RESOLVER", "ares"); } else if (strcmp("ares", resolver)) { gpr_log(GPR_INFO, "GRPC_DNS_RESOLVER != ares: %s.", resolver); } + gpr_free(resolver); grpc_test_init(argc, argv); ::testing::InitGoogleTest(&argc, argv); grpc_init(); auto result = RUN_ALL_TESTS(); grpc_shutdown(); + // Test sequential and nested inits and shutdowns. + grpc_init(); + grpc_init(); + grpc_shutdown(); + grpc_shutdown(); + grpc_init(); + grpc_shutdown(); return result; } |