diff --git a/backport-tests-Convert-some-live-tests-to-Mock-tests-954.patch b/backport-tests-Convert-some-live-tests-to-Mock-tests-954.patch deleted file mode 100644 index 41de8f894f4c93ad9b011f2317584c59e14ea96d..0000000000000000000000000000000000000000 --- a/backport-tests-Convert-some-live-tests-to-Mock-tests-954.patch +++ /dev/null @@ -1,326 +0,0 @@ -From a531524a3d085fcd9a5e25d5f6cbdb953082c2b9 Mon Sep 17 00:00:00 2001 -From: Brad House -Date: Fri, 3 Jan 2025 12:55:54 -0500 -Subject: [PATCH] tests: Convert some live tests to Mock tests (#954) - -In Issue #953 `GetTCPSock` and `VerifySocketFunctionCallback` tests -might rely on the fact that `connect()` doesn't return an immediate -failure. If `connect()` returned `EWOULDBLOCK`/`EAGAIN` the test would -succeed, but on systems that check on the call for available routes or -listening servers on localhost the `connect()` function would return an -immediate failure. - -These functions were not actually tagged with a `Live` prefix so they -would run even callers exclude Live tests. These are testing functions -that shouldn't be limited to live scenarios so we need to move them to -the Mock frameworks and test appropriately. - -Fixes #953 -Signed-off-by: Brad House (@bradh352) - -Conflict: NA -Reference: https://github.com/c-ares/c-ares/commit/a531524a3d085fcd9a5e25d5f6cbdb953082c2b9 ---- - test/ares-test-live.cc | 108 ---------------------------------- - test/ares-test-mock.cc | 129 +++++++++++++++++++++++++++++++++++++++++ - test/ares-test.cc | 8 ++- - test/ares-test.h | 1 + - 4 files changed, 136 insertions(+), 110 deletions(-) - -diff --git a/test/ares-test-live.cc b/test/ares-test-live.cc -index e23dadfe23..557c485e36 100644 ---- a/test/ares-test-live.cc -+++ b/test/ares-test-live.cc -@@ -669,115 +669,7 @@ VIRT_NONVIRT_TEST_F(DefaultChannelTest, LiveGetNameInfoAllocFail) { - EXPECT_EQ(ARES_ENOMEM, result.status_); - } - --VIRT_NONVIRT_TEST_F(DefaultChannelTest, GetSock) { -- ares_socket_t socks[3] = {ARES_SOCKET_BAD, ARES_SOCKET_BAD, ARES_SOCKET_BAD}; -- int bitmask = ares_getsock(channel_, socks, 3); -- EXPECT_EQ(0, bitmask); -- bitmask = ares_getsock(channel_, nullptr, 0); -- EXPECT_EQ(0, bitmask); -- -- // Ask again with a pending query. -- HostResult result; -- ares_gethostbyname(channel_, "www.google.com.", AF_INET, HostCallback, &result); -- bitmask = ares_getsock(channel_, socks, 3); -- EXPECT_NE(0, bitmask); -- -- size_t sock_cnt = 0; -- for (size_t i=0; i<3; i++) { -- if (ARES_GETSOCK_READABLE(bitmask, i) || ARES_GETSOCK_WRITABLE(bitmask, i)) { -- EXPECT_NE(ARES_SOCKET_BAD, socks[i]); -- if (socks[i] != ARES_SOCKET_BAD) -- sock_cnt++; -- } -- } -- EXPECT_NE((size_t)0, sock_cnt); -- -- bitmask = ares_getsock(channel_, nullptr, 0); -- EXPECT_EQ(0, bitmask); -- -- Process(); --} -- --TEST_F(LibraryTest, GetTCPSock) { -- ares_channel_t *channel; -- struct ares_options opts; -- memset(&opts, 0, sizeof(opts)); -- opts.tcp_port = 53; -- opts.flags = ARES_FLAG_USEVC; -- int optmask = ARES_OPT_TCP_PORT | ARES_OPT_FLAGS; -- EXPECT_EQ(ARES_SUCCESS, ares_init_options(&channel, &opts, optmask)); -- EXPECT_NE(nullptr, channel); -- -- ares_socket_t socks[3] = {ARES_SOCKET_BAD, ARES_SOCKET_BAD, ARES_SOCKET_BAD}; -- int bitmask = ares_getsock(channel, socks, 3); -- EXPECT_EQ(0, bitmask); -- bitmask = ares_getsock(channel, nullptr, 0); -- EXPECT_EQ(0, bitmask); -- -- // Ask again with a pending query. -- HostResult result; -- ares_gethostbyname(channel, "www.google.com.", AF_INET, HostCallback, &result); -- bitmask = ares_getsock(channel, socks, 3); -- EXPECT_NE(0, bitmask); -- -- size_t sock_cnt = 0; -- for (size_t i=0; i<3; i++) { -- if (ARES_GETSOCK_READABLE(bitmask, i) || ARES_GETSOCK_WRITABLE(bitmask, i)) { -- EXPECT_NE(ARES_SOCKET_BAD, socks[i]); -- if (socks[i] != ARES_SOCKET_BAD) -- sock_cnt++; -- } -- } -- EXPECT_NE((size_t)0, sock_cnt); -- -- bitmask = ares_getsock(channel, nullptr, 0); -- EXPECT_EQ(0, bitmask); -- -- ProcessWork(channel, NoExtraFDs, nullptr); - -- ares_destroy(channel); --} -- --TEST_F(DefaultChannelTest, VerifySocketFunctionCallback) { -- VirtualizeIO vio(channel_); -- -- auto my_functions = VirtualizeIO::default_functions; -- size_t count = 0; -- -- my_functions.asocket = [](int af, int type, int protocol, void * p) -> ares_socket_t { -- EXPECT_NE(nullptr, p); -- (*reinterpret_cast(p))++; -- return ::socket(af, type, protocol); -- }; -- -- ares_set_socket_functions(channel_, &my_functions, &count); -- -- { -- count = 0; -- HostResult result; -- ares_gethostbyname(channel_, "www.google.com.", AF_INET, HostCallback, &result); -- Process(); -- -- EXPECT_TRUE(result.done_); -- EXPECT_NE((size_t)0, count); -- } -- -- { -- count = 0; -- ares_channel_t *copy; -- EXPECT_EQ(ARES_SUCCESS, ares_dup(©, channel_)); -- -- HostResult result; -- ares_gethostbyname(copy, "www.google.com.", AF_INET, HostCallback, &result); -- -- ProcessWork(copy, NoExtraFDs, nullptr); -- -- EXPECT_TRUE(result.done_); -- ares_destroy(copy); -- EXPECT_NE((size_t)0, count); -- } -- --} - - TEST_F(DefaultChannelTest, LiveSetServers) { - struct ares_addr_node server1; -diff --git a/test/ares-test-mock.cc b/test/ares-test-mock.cc -index 8c74c05f33..ebae7140aa 100644 ---- a/test/ares-test-mock.cc -+++ b/test/ares-test-mock.cc -@@ -1662,6 +1662,135 @@ TEST_P(MockChannelTest, GetHostByAddrDestroy) { - EXPECT_EQ(0, result.timeouts_); - } - -+TEST_P(MockUDPChannelTest, GetSock) { -+ DNSPacket reply; -+ reply.set_response().set_aa() -+ .add_question(new DNSQuestion("www.google.com", T_A)) -+ .add_answer(new DNSARR("www.google.com", 0x0100, {0x01, 0x02, 0x03, 0x04})); -+ ON_CALL(server_, OnRequest("www.google.com", T_A)) -+ .WillByDefault(SetReply(&server_, &reply)); -+ -+ ares_socket_t socks[3] = {ARES_SOCKET_BAD, ARES_SOCKET_BAD, ARES_SOCKET_BAD}; -+ int bitmask; -+ -+ bitmask = ares_getsock(channel_, socks, 3); -+ EXPECT_EQ(0, bitmask); -+ bitmask = ares_getsock(channel_, nullptr, 0); -+ EXPECT_EQ(0, bitmask); -+ -+ // Ask again with a pending query. -+ HostResult result; -+ ares_gethostbyname(channel_, "www.google.com.", AF_INET, HostCallback, &result); -+ bitmask = ares_getsock(channel_, socks, 3); -+ EXPECT_NE(0, bitmask); -+ -+ size_t sock_cnt = 0; -+ for (size_t i=0; i<3; i++) { -+ if (ARES_GETSOCK_READABLE(bitmask, i) || ARES_GETSOCK_WRITABLE(bitmask, i)) { -+ EXPECT_NE(ARES_SOCKET_BAD, socks[i]); -+ if (socks[i] != ARES_SOCKET_BAD) -+ sock_cnt++; -+ } -+ } -+ EXPECT_NE((size_t)0, sock_cnt); -+ -+ Process(); -+ -+ bitmask = ares_getsock(channel_, nullptr, 0); -+ EXPECT_EQ(0, bitmask); -+} -+ -+TEST_P(MockTCPChannelTest, GetSock) { -+ DNSPacket reply; -+ reply.set_response().set_aa() -+ .add_question(new DNSQuestion("www.google.com", T_A)) -+ .add_answer(new DNSARR("www.google.com", 0x0100, {0x01, 0x02, 0x03, 0x04})); -+ ON_CALL(server_, OnRequest("www.google.com", T_A)) -+ .WillByDefault(SetReply(&server_, &reply)); -+ -+ ares_socket_t socks[3] = {ARES_SOCKET_BAD, ARES_SOCKET_BAD, ARES_SOCKET_BAD}; -+ int bitmask; -+ -+ bitmask = ares_getsock(channel_, socks, 3); -+ EXPECT_EQ(0, bitmask); -+ bitmask = ares_getsock(channel_, nullptr, 0); -+ EXPECT_EQ(0, bitmask); -+ -+ // Ask again with a pending query. -+ HostResult result; -+ ares_gethostbyname(channel_, "www.google.com.", AF_INET, HostCallback, &result); -+ bitmask = ares_getsock(channel_, socks, 3); -+ EXPECT_NE(0, bitmask); -+ -+ size_t sock_cnt = 0; -+ for (size_t i=0; i<3; i++) { -+ if (ARES_GETSOCK_READABLE(bitmask, i) || ARES_GETSOCK_WRITABLE(bitmask, i)) { -+ EXPECT_NE(ARES_SOCKET_BAD, socks[i]); -+ if (socks[i] != ARES_SOCKET_BAD) -+ sock_cnt++; -+ } -+ } -+ EXPECT_NE((size_t)0, sock_cnt); -+ -+ Process(); -+ -+ bitmask = ares_getsock(channel_, nullptr, 0); -+ EXPECT_EQ(0, bitmask); -+} -+ -+ -+TEST_P(MockChannelTest, VerifySocketFunctionCallback) { -+ ares_socket_functions sock_funcs; -+ memset(&sock_funcs, 0, sizeof(sock_funcs)); -+ -+ DNSPacket reply; -+ reply.set_response().set_aa() -+ .add_question(new DNSQuestion("www.google.com", T_A)) -+ .add_answer(new DNSARR("www.google.com", 0x0100, {0x01, 0x02, 0x03, 0x04})); -+ ON_CALL(server_, OnRequest("www.google.com", T_A)) -+ .WillByDefault(SetReply(&server_, &reply)); -+ -+ size_t count = 0; -+ -+ sock_funcs.asocket = [](int af, int type, int protocol, void * p) -> ares_socket_t { -+ EXPECT_NE(nullptr, p); -+ (*reinterpret_cast(p))++; -+ return ::socket(af, type, protocol); -+ }; -+ -+ ares_set_socket_functions(channel_, &sock_funcs, &count); -+ -+ { -+ count = 0; -+ HostResult result; -+ ares_gethostbyname(channel_, "www.google.com.", AF_INET, HostCallback, &result); -+ Process(); -+ -+ EXPECT_TRUE(result.done_); -+ EXPECT_EQ(ARES_SUCCESS, result.status_); -+ EXPECT_EQ(0, result.timeouts_); -+ EXPECT_NE((size_t)0, count); -+ } -+ -+ { -+ count = 0; -+ ares_channel_t *copy; -+ EXPECT_EQ(ARES_SUCCESS, ares_dup(©, channel_)); -+ -+ HostResult result; -+ ares_gethostbyname(copy, "www.google.com.", AF_INET, HostCallback, &result); -+ -+ ProcessAltChannel(copy); -+ -+ EXPECT_TRUE(result.done_); -+ ares_destroy(copy); -+ EXPECT_NE((size_t)0, count); -+ EXPECT_EQ(ARES_SUCCESS, result.status_); -+ EXPECT_EQ(0, result.timeouts_); -+ } -+ -+} -+ - static const unsigned char * - fetch_server_cookie(const ares_dns_record_t *dnsrec, size_t *len) - { -diff --git a/test/ares-test.cc b/test/ares-test.cc -index 99ab0a0085..f383ecbe13 100644 ---- a/test/ares-test.cc -+++ b/test/ares-test.cc -@@ -888,14 +888,18 @@ void MockChannelOptsTest::ProcessFD(ares_socket_t fd) { - } - } - --void MockChannelOptsTest::Process(unsigned int cancel_ms) { -+void MockChannelOptsTest::ProcessAltChannel(ares_channel_t *chan, unsigned int cancel_ms) { - using namespace std::placeholders; -- ProcessWork(channel_, -+ ProcessWork(chan, - std::bind(&MockChannelOptsTest::fds, this), - std::bind(&MockChannelOptsTest::ProcessFD, this, _1), - cancel_ms); - } - -+void MockChannelOptsTest::Process(unsigned int cancel_ms) { -+ ProcessAltChannel(channel_, cancel_ms); -+} -+ - void MockEventThreadOptsTest::Process(unsigned int cancel_ms) { - std::set fds; - -diff --git a/test/ares-test.h b/test/ares-test.h -index 612759212a..77baa902ad 100644 ---- a/test/ares-test.h -+++ b/test/ares-test.h -@@ -328,6 +328,7 @@ class MockChannelOptsTest : public LibraryTest { - - // Process all pending work on ares-owned and mock-server-owned file - // descriptors. -+ void ProcessAltChannel(ares_channel_t *chan, unsigned int cancel_ms = 0); - void Process(unsigned int cancel_ms = 0); - - protected: diff --git a/c-ares-1.34.4.tar.gz b/c-ares-1.34.4.tar.gz deleted file mode 100644 index d63c4fc444f6bdab781aef66af593c9dd4f1e852..0000000000000000000000000000000000000000 Binary files a/c-ares-1.34.4.tar.gz and /dev/null differ diff --git a/c-ares-1.34.5.tar.gz b/c-ares-1.34.5.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..f45bd613d33634d44c5559b809a676e0a10dfba6 Binary files /dev/null and b/c-ares-1.34.5.tar.gz differ diff --git a/c-ares.spec b/c-ares.spec index 94914d6b0fd63d960e491f4913146fe3ed98c23d..b1e55fed50b39126c3edc5922a5726385deb24ae 100644 --- a/c-ares.spec +++ b/c-ares.spec @@ -1,5 +1,5 @@ Name: c-ares -Version: 1.34.4 +Version: 1.34.5 Release: 1 Summary: A C library for asynchronous DNS requests @@ -9,15 +9,13 @@ Source0: https://github.com/%{name}/%{name}/releases/download/v%{version} BuildRequires: gcc autoconf automake libtool g++ gmock-devel -Patch0: backport-tests-Convert-some-live-tests-to-Mock-tests-954.patch - %description This is c-ares, an asynchronous resolver library. It is intended for applications which need to perform DNS queries without blocking, or need to perform multiple %package devel Summary: C-ares development files -Requires: %{name} = %{version}-%{release} pkgconfig +Requires: %{name} = %{version}-%{release} %description devel The headers and libraries files that c-ares required to compile applications or @@ -34,12 +32,11 @@ autoreconf -if %global conf_opts --enable-debug %endif %configure --enable-shared --disable-static --disable-dependency-tracking %{?conf_opts} -make %{?_smp_mflags} +%make_build %install %make_install %delete_la -%ldconfig_scriptlets %check ./test/arestest --gtest_filter=-*.Live* @@ -59,6 +56,9 @@ make %{?_smp_mflags} %{_mandir}/man3/* %changelog +* Wed Apr 09 2025 Funda Wang - 1.34.5-1 +- update to 1.34.5 + * Fri Feb 21 2025 xinghe - 1.34.4-1 - Type:requirements - ID:NA diff --git a/c-ares.yaml b/c-ares.yaml index f4cbc5224519ef67a1620d3e5d88dcb48752909d..1217a852d3cf26ffed8a064b64b1b1fbdbea99ae 100644 --- a/c-ares.yaml +++ b/c-ares.yaml @@ -1,4 +1,4 @@ version_control: github src_repo: c-ares/c-ares tag_prefix: cares- -seperator: _ +separator: _