Test the resolving of multiple hostnames at the same time

This commit is contained in:
louiz’
2016-07-25 14:59:25 +02:00
parent db503b23e8
commit c7e4fc1386
+28 -14
View File
@@ -9,6 +9,8 @@
TEST_CASE("DNS resolver") TEST_CASE("DNS resolver")
{ {
Resolver resolver; Resolver resolver;
Resolver resolver2;
Resolver resolver3;
/** /**
* If we are using cares, we need to run a poller loop until each * If we are using cares, we need to run a poller loop until each
@@ -36,38 +38,50 @@ TEST_CASE("DNS resolver")
bool success = true; bool success = true;
auto error_cb = [&success, &hostname, &port](const char* msg) const auto error_cb = [&success](const std::string& hostname)
{ {
INFO("Failed to resolve " << hostname << ":" << port << ": " << msg); return [&success, hostname](const char *msg)
success = false; {
}; INFO("Failed to resolve " << hostname << ":" << msg);
auto success_cb = [&success, &hostname, &port](const struct addrinfo* addr) success = false;
{ };
INFO("Successfully resolved " << hostname << ":" << port << ": " << addr_to_string(addr)); };
success = true; const auto success_cb = [&success](const std::string& hostname)
}; {
return [&success, hostname](const struct addrinfo *addr)
{
INFO("Successfully resolved " << hostname << ": " << addr_to_string(addr));
success = true;
};
};
hostname = "example.com"; hostname = "example.com";
resolver.resolve(hostname, port, resolver.resolve(hostname, port,
success_cb, error_cb); success_cb(hostname), error_cb(hostname));
hostname = "poez.io";
resolver2.resolve(hostname, port,
success_cb(hostname), error_cb(hostname));
hostname = "louiz.org";
resolver3.resolve(hostname, port,
success_cb(hostname), error_cb(hostname));
loop(); loop();
CHECK(success); CHECK(success);
hostname = "this.should.fail.because.it.is..misformatted"; hostname = "this.should.fail.because.it.is..misformatted";
resolver.resolve(hostname, port, resolver.resolve(hostname, port,
success_cb, error_cb); success_cb(hostname), error_cb(hostname));
loop(); loop();
CHECK(!success); CHECK(!success);
hostname = "this.should.fail.because.it.is.does.not.exist.invalid"; hostname = "this.should.fail.because.it.is.does.not.exist.invalid";
resolver.resolve(hostname, port, resolver.resolve(hostname, port,
success_cb, error_cb); success_cb(hostname), error_cb(hostname));
loop(); loop();
CHECK(!success); CHECK(!success);
hostname = "localhost"; hostname = "localhost";
resolver.resolve(hostname, port, resolver.resolve(hostname, port,
success_cb, error_cb); success_cb(hostname), error_cb(hostname));
loop(); loop();
CHECK(success); CHECK(success);