test: Make failure tests more robust

Different platforms will do different numbers of allocations
in the processing of a given API call; just check that the
return code is either success or ENOMEM, and free off any
returned state in the former case.

Also cope with ECONNREFUSED as well as ENOTFOUND.
pull/34/head
David Drysdale 9 years ago
parent 3478963873
commit 78f9ec5515
  1. 13
      test/ares-test-init.cc
  2. 2
      test/ares-test-live.cc
  3. 9
      test/ares-test-parse-ptr.cc

@ -44,7 +44,7 @@ TEST(LibraryInit, Nested) {
EXPECT_EQ(EXPECTED_NONINIT, ares_library_initialized());
}
TEST_F(LibraryTest, BasicChannelInit) {
TEST(LibraryInit, BasicChannelInit) {
EXPECT_EQ(ARES_SUCCESS, ares_library_init(ARES_LIB_INIT_ALL));
ares_channel channel = nullptr;
EXPECT_EQ(ARES_SUCCESS, ares_init(&channel));
@ -175,9 +175,16 @@ TEST_F(LibraryTest, OptionsChannelAllocFail) {
for (int ii = 1; ii <= 8; ii++) {
ClearFails();
SetAllocFail(ii);
EXPECT_EQ(ARES_ENOMEM, ares_init_options(&channel, &opts, optmask)) << ii;
EXPECT_EQ(nullptr, channel);
int rc = ares_init_options(&channel, &opts, optmask);
if (rc == ARES_ENOMEM) {
EXPECT_EQ(nullptr, channel);
} else {
EXPECT_EQ(ARES_SUCCESS, rc);
ares_destroy(channel);
channel = nullptr;
}
}
ClearFails();
EXPECT_EQ(ARES_SUCCESS, ares_init_options(&channel, &opts, optmask));
EXPECT_NE(nullptr, channel);

@ -81,7 +81,7 @@ TEST_P(DefaultChannelModeTest, LiveGetLocalhostByNameV4) {
ares_gethostbyname(channel_, "localhost", AF_INET, HostCallback, &result);
Process();
EXPECT_TRUE(result.done_);
if (result.status_ != ARES_ENOTFOUND) {
if ((result.status_ != ARES_ENOTFOUND) && (result.status_ != ARES_ECONNREFUSED)) {
EXPECT_EQ(ARES_SUCCESS, result.status_);
EXPECT_EQ(1, (int)result.host_.addrs_.size());
EXPECT_EQ(AF_INET, result.host_.addrtype_);

@ -234,8 +234,13 @@ TEST_F(LibraryTest, ParsePtrReplyAllocFailMany) {
for (int ii = 1; ii <= 63; ii++) {
ClearFails();
SetAllocFail(ii);
EXPECT_EQ(ARES_ENOMEM, ares_parse_ptr_reply(data.data(), data.size(),
addrv4, sizeof(addrv4), AF_INET, &host)) << ii;
int rc = ares_parse_ptr_reply(data.data(), data.size(),
addrv4, sizeof(addrv4), AF_INET, &host);
if (rc != ARES_ENOMEM) {
EXPECT_EQ(ARES_SUCCESS, rc);
ares_free_hostent(host);
host = nullptr;
}
}
}

Loading…
Cancel
Save