Test the resolving of multiple hostnames at the same time
This commit is contained in:
+22
-8
@@ -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)
|
||||||
|
{
|
||||||
|
INFO("Failed to resolve " << hostname << ":" << msg);
|
||||||
success = false;
|
success = false;
|
||||||
};
|
};
|
||||||
auto success_cb = [&success, &hostname, &port](const struct addrinfo* addr)
|
};
|
||||||
|
const auto success_cb = [&success](const std::string& hostname)
|
||||||
{
|
{
|
||||||
INFO("Successfully resolved " << hostname << ":" << port << ": " << addr_to_string(addr));
|
return [&success, hostname](const struct addrinfo *addr)
|
||||||
|
{
|
||||||
|
INFO("Successfully resolved " << hostname << ": " << addr_to_string(addr));
|
||||||
success = true;
|
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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user