llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-lldb Author: John Harrison (ashgti) <details> <summary>Changes</summary> The test `SocketTest::TCPListen0MultiListenerGetListeningConnectionURI` is failing on hosts that do not map `localhost` to both an ipv4 and ipv6 address. For example this build https://lab.llvm.org/buildbot/#/builders/195/builds/1909. To fix this, I added a helper to validate if the host has an /etc/hosts entry for both ipv4 and ipv6, otherwise we skip the test. --- Full diff: https://github.com/llvm/llvm-project/pull/118673.diff 3 Files Affected: - (modified) lldb/unittests/Host/SocketTest.cpp (+1-1) - (modified) lldb/unittests/TestingSupport/Host/SocketTestUtilities.cpp (+18) - (modified) lldb/unittests/TestingSupport/Host/SocketTestUtilities.h (+5) ``````````diff diff --git a/lldb/unittests/Host/SocketTest.cpp b/lldb/unittests/Host/SocketTest.cpp index 689ef4019c618c..9cbf3e26b0883f 100644 --- a/lldb/unittests/Host/SocketTest.cpp +++ b/lldb/unittests/Host/SocketTest.cpp @@ -271,7 +271,7 @@ TEST_P(SocketTest, TCPListen0GetListeningConnectionURI) { } TEST_F(SocketTest, TCPListen0MultiListenerGetListeningConnectionURI) { - if (!HostSupportsIPv6() || !HostSupportsIPv4()) + if (!HostSupportsLocalhostToIPv4() || !HostSupportsLocalhostToIPv6()) return; llvm::Expected<std::unique_ptr<TCPSocket>> sock = diff --git a/lldb/unittests/TestingSupport/Host/SocketTestUtilities.cpp b/lldb/unittests/TestingSupport/Host/SocketTestUtilities.cpp index eb5bda0fabc770..86349351b0c3a4 100644 --- a/lldb/unittests/TestingSupport/Host/SocketTestUtilities.cpp +++ b/lldb/unittests/TestingSupport/Host/SocketTestUtilities.cpp @@ -116,6 +116,24 @@ bool lldb_private::HostSupportsIPv6() { return CheckIPSupport("IPv6", "[::1]:0"); } +bool lldb_private::HostSupportsLocalhostToIPv4() { + if (!HostSupportsIPv4()) + return false; + + auto addresses = SocketAddress::GetAddressInfo("localhost", nullptr, AF_INET, + SOCK_STREAM, IPPROTO_TCP); + return !addresses.empty(); +} + +bool lldb_private::HostSupportsLocalhostToIPv6() { + if (!HostSupportsIPv6()) + return false; + + auto addresses = SocketAddress::GetAddressInfo("localhost", nullptr, AF_INET6, + SOCK_STREAM, IPPROTO_TCP); + return !addresses.empty(); +} + llvm::Expected<std::string> lldb_private::GetLocalhostIP() { if (HostSupportsIPv4()) return "127.0.0.1"; diff --git a/lldb/unittests/TestingSupport/Host/SocketTestUtilities.h b/lldb/unittests/TestingSupport/Host/SocketTestUtilities.h index efd17428ceefb6..e5bab163cf82eb 100644 --- a/lldb/unittests/TestingSupport/Host/SocketTestUtilities.h +++ b/lldb/unittests/TestingSupport/Host/SocketTestUtilities.h @@ -43,6 +43,11 @@ void CreateDomainConnectedSockets(llvm::StringRef path, bool HostSupportsIPv6(); bool HostSupportsIPv4(); +/// Returns true if the name `localhost` maps to a loopback IPv4 address. +bool HostSupportsLocalhostToIPv4(); +/// Returns true if the name `localhost` maps to a loopback IPv6 address. +bool HostSupportsLocalhostToIPv6(); + /// Return an IP for localhost based on host support. /// /// This will return either "127.0.0.1" if IPv4 is detected, or "[::1]" if IPv6 `````````` </details> https://github.com/llvm/llvm-project/pull/118673 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits