libstdc++: Fix ip::tcp::resolver test failure on Solaris

Solaris 11 does not have "http" in /etc/services, which causes this test
to fail. Try some other services until we find one that works.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:

	* testsuite/experimental/net/internet/resolver/ops/lookup.cc:
	Try other service if "http" fails.
This commit is contained in:
Jonathan Wakely 2021-08-31 13:08:23 +01:00
parent 863d6524f3
commit 48b20d46f9

View File

@ -30,13 +30,27 @@ test01()
std::error_code ec;
io_context ctx;
ip::tcp::resolver resolv(ctx);
auto addrs = resolv.resolve("localhost", "http", ec);
auto hostname = "localhost", service = "http";
auto addrs = resolv.resolve(hostname, service, ec);
if (ec == ip::resolver_errc::service_not_found)
{
// Solaris doesn't have http in /etc/services, try some others.
for (auto serv : {"ftp", "telnet", "smtp"})
{
addrs = resolv.resolve(hostname, serv, ec);
if (!ec)
{
service = serv;
break;
}
}
}
VERIFY( !ec );
VERIFY( addrs.size() > 0 );
VERIFY( addrs.begin() != addrs.end() );
VERIFY( ! addrs.empty() );
auto addrs2 = resolv.resolve("localhost", "http");
auto addrs2 = resolv.resolve(hostname, service);
VERIFY( addrs == addrs2 );
}
@ -68,7 +82,7 @@ test02()
#if __cpp_exceptions
bool caught = false;
try {
resolv.resolve("localhost", "http", flags);
resolv.resolve("localhost", "42", flags);
} catch (const std::system_error& e) {
caught = true;
VERIFY( e.code() == ec );