Skip to content
Snippets Groups Projects
fix-tests-symbol-hiding.patch 3.3 KiB
Newer Older
Patch-Source: https://github.com/c-ares/c-ares/commit/7dd384a99cc385e408e64c3e0af4e0e2136ed034.patch
--
From 7dd384a99cc385e408e64c3e0af4e0e2136ed034 Mon Sep 17 00:00:00 2001
From: Brad House <brad@brad-house.com>
Date: Sun, 17 Dec 2023 08:16:24 -0500
Subject: [PATCH] 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)
---
 test/ares-test-mock-ai.cc |  2 ++
 test/ares-test-mock.cc    |  4 ++--
 test/ares-test.cc         | 12 ++++++++++++
 3 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/test/ares-test-mock-ai.cc b/test/ares-test-mock-ai.cc
index c55676f6c..57b9d5ee2 100644
--- a/test/ares-test-mock-ai.cc
+++ b/test/ares-test-mock-ai.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;
diff --git a/test/ares-test-mock.cc b/test/ares-test-mock.cc
index 6afa8f989..849eb6980 100644
--- a/test/ares-test-mock.cc
+++ b/test/ares-test-mock.cc
@@ -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;
diff --git a/test/ares-test.cc b/test/ares-test.cc
index faad01486..3a55b73d3 100644
--- a/test/ares-test.cc
+++ b/test/ares-test.cc
@@ -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) {