fix test building with symbol hiding

New test cases depend on internal symbols for calculating timeouts.
Disable those test features if symbol hiding is enabled.

Fixes Bug: #664
Fix By: Brad House (@bradh352)
pull/666/head
Brad House 1 year ago
parent 972f456f28
commit 7dd384a99c
  1. 2
      test/ares-test-mock-ai.cc
  2. 4
      test/ares-test-mock.cc
  3. 12
      test/ares-test.cc

@ -442,6 +442,7 @@ TEST_P(MockChannelTestAI, FamilyV6) {
EXPECT_THAT(result.ai_, IncludesV6Address("2121:0000:0000:0000:0000:0000:0000:0303"));
}
#ifndef CARES_SYMBOL_HIDING
// Test case for Issue #662
TEST_P(MockChannelTestAI, PartialQueryCancel) {
std::vector<byte> nothing;
@ -469,6 +470,7 @@ TEST_P(MockChannelTestAI, PartialQueryCancel) {
EXPECT_TRUE(result.done_);
EXPECT_EQ(ARES_ECANCELLED, result.status_);
}
#endif
TEST_P(MockChannelTestAI, FamilyV4) {
DNSPacket rsp4;

@ -826,7 +826,7 @@ TEST_P(MockChannelTest, V4WorksV6Timeout) {
EXPECT_EQ("{'www.google.com' aliases=[] addrs=[1.2.3.4]}", ss.str());
}
#ifndef CARES_SYMBOL_HIDING
// Test case for Issue #662
TEST_P(MockChannelTest, PartialQueryCancel) {
std::vector<byte> nothing;
@ -849,7 +849,7 @@ TEST_P(MockChannelTest, PartialQueryCancel) {
EXPECT_TRUE(result.done_);
EXPECT_EQ(ARES_ECANCELLED, result.status_);
}
#endif
TEST_P(MockChannelTest, UnspecifiedFamilyV6) {
DNSPacket rsp6;

12
test/ares-test.cc vendored

@ -105,6 +105,8 @@ void ProcessWork(ares_channel_t *channel,
unsigned int cancel_ms) {
int nfds, count;
fd_set readers, writers;
#ifndef CARES_SYMBOL_HIDING
struct timeval tv_begin = ares__tvnow();
struct timeval tv_cancel = tv_begin;
@ -113,10 +115,18 @@ void ProcessWork(ares_channel_t *channel,
tv_cancel.tv_sec += (cancel_ms / 1000);
tv_cancel.tv_usec += ((cancel_ms % 1000) * 1000);
}
#else
if (cancel_ms) {
std::cerr << "library built with symbol hiding, can't test with cancel support" << std::endl;
return;
}
#endif
while (true) {
#ifndef CARES_SYMBOL_HIDING
struct timeval tv_now = ares__tvnow();
struct timeval tv_remaining;
#endif
struct timeval tv;
struct timeval *tv_select;
@ -142,6 +152,7 @@ void ProcessWork(ares_channel_t *channel,
if (tv_select == NULL)
return;
#ifndef CARES_SYMBOL_HIDING
if (cancel_ms) {
unsigned int remaining_ms;
ares__timeval_remaining(&tv_remaining,
@ -157,6 +168,7 @@ void ProcessWork(ares_channel_t *channel,
tv_select = ares_timeout(channel, &tv_remaining, &tv);
}
}
#endif
count = select(nfds, &readers, &writers, nullptr, tv_select);
if (count < 0) {

Loading…
Cancel
Save