mirror of https://github.com/c-ares/c-ares.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
3.6 KiB
122 lines
3.6 KiB
9 years ago
|
// This file includes tests that attempt to do real lookups
|
||
|
// of DNS names using the local machine's live infrastructure.
|
||
|
|
||
|
#include "ares-test.h"
|
||
|
|
||
|
#include <netdb.h>
|
||
|
|
||
|
namespace ares {
|
||
|
namespace test {
|
||
|
|
||
|
TEST_F(DefaultChannelTest, LiveGetHostByNameV4) {
|
||
|
HostResult result;
|
||
|
ares_gethostbyname(channel_, "www.google.com.", AF_INET, HostCallback, &result);
|
||
|
Process();
|
||
|
EXPECT_TRUE(result.done_);
|
||
|
EXPECT_LT(0, (int)result.host_.addrs_.size());
|
||
|
EXPECT_EQ(AF_INET, result.host_.addrtype_);
|
||
|
}
|
||
|
|
||
|
TEST_F(DefaultChannelTest, LiveGetHostByNameV6) {
|
||
|
HostResult result;
|
||
|
ares_gethostbyname(channel_, "www.google.com.", AF_INET6, HostCallback, &result);
|
||
|
Process();
|
||
|
EXPECT_TRUE(result.done_);
|
||
|
EXPECT_LT(0, (int)result.host_.addrs_.size());
|
||
|
EXPECT_EQ(AF_INET6, result.host_.addrtype_);
|
||
|
}
|
||
|
|
||
|
TEST_F(DefaultChannelTest, LiveGetHostByAddrV4) {
|
||
|
HostResult result;
|
||
|
unsigned char addr[4] = {8, 8, 8, 8};
|
||
|
ares_gethostbyaddr(channel_, addr, sizeof(addr), AF_INET, HostCallback, &result);
|
||
|
Process();
|
||
|
EXPECT_TRUE(result.done_);
|
||
|
EXPECT_LT(0, (int)result.host_.addrs_.size());
|
||
|
EXPECT_EQ(AF_INET, result.host_.addrtype_);
|
||
|
}
|
||
|
|
||
|
TEST_F(DefaultChannelTest, LiveGetHostByAddrV6) {
|
||
|
HostResult result;
|
||
|
unsigned char addr[16] = {0x20, 0x01, 0x48, 0x60, 0x48, 0x60, 0x00, 0x00,
|
||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88};
|
||
|
ares_gethostbyaddr(channel_, addr, sizeof(addr), AF_INET6, HostCallback, &result);
|
||
|
Process();
|
||
|
EXPECT_TRUE(result.done_);
|
||
|
EXPECT_LT(0, (int)result.host_.addrs_.size());
|
||
|
EXPECT_EQ(AF_INET6, result.host_.addrtype_);
|
||
|
}
|
||
|
|
||
|
TEST_F(DefaultChannelTest, LiveSearchA) {
|
||
|
SearchResult result;
|
||
|
ares_search(channel_, "www.facebook.com.", ns_c_in, ns_t_a,
|
||
|
SearchCallback, &result);
|
||
|
Process();
|
||
|
EXPECT_TRUE(result.done_);
|
||
|
}
|
||
|
|
||
|
TEST_F(DefaultChannelTest, LiveSearchNS) {
|
||
|
SearchResult result;
|
||
|
ares_search(channel_, "google.com.", ns_c_in, ns_t_ns,
|
||
|
SearchCallback, &result);
|
||
|
Process();
|
||
|
EXPECT_TRUE(result.done_);
|
||
|
}
|
||
|
|
||
|
TEST_F(DefaultChannelTest, LiveSearchMX) {
|
||
|
SearchResult result;
|
||
|
ares_search(channel_, "google.com.", ns_c_in, ns_t_mx,
|
||
|
SearchCallback, &result);
|
||
|
Process();
|
||
|
EXPECT_TRUE(result.done_);
|
||
|
}
|
||
|
|
||
|
TEST_F(DefaultChannelTest, LiveSearchTXT) {
|
||
|
SearchResult result;
|
||
|
ares_search(channel_, "google.com.", ns_c_in, ns_t_txt,
|
||
|
SearchCallback, &result);
|
||
|
Process();
|
||
|
EXPECT_TRUE(result.done_);
|
||
|
}
|
||
|
|
||
|
TEST_F(DefaultChannelTest, LiveSearchSOA) {
|
||
|
SearchResult result;
|
||
|
ares_search(channel_, "google.com.", ns_c_in, ns_t_soa,
|
||
|
SearchCallback, &result);
|
||
|
Process();
|
||
|
EXPECT_TRUE(result.done_);
|
||
|
}
|
||
|
|
||
|
TEST_F(DefaultChannelTest, LiveSearchANY) {
|
||
|
SearchResult result;
|
||
|
ares_search(channel_, "facebook.com.", ns_c_in, ns_t_any,
|
||
|
SearchCallback, &result);
|
||
|
Process();
|
||
|
EXPECT_TRUE(result.done_);
|
||
|
}
|
||
|
|
||
|
TEST_F(DefaultChannelTest, LiveGetNameInfo) {
|
||
|
NameInfoResult result;
|
||
|
struct sockaddr_in sockaddr;
|
||
|
memset(&sockaddr, 0, sizeof(sockaddr));
|
||
|
sockaddr.sin_family = AF_INET;
|
||
|
sockaddr.sin_port = htons(53);
|
||
|
sockaddr.sin_addr.s_addr = htonl(0x08080808);
|
||
|
ares_getnameinfo(channel_, (const struct sockaddr*)&sockaddr, sizeof(sockaddr),
|
||
|
ARES_NI_LOOKUPHOST|ARES_NI_LOOKUPSERVICE|ARES_NI_UDP,
|
||
|
NameInfoCallback, &result);
|
||
|
Process();
|
||
|
EXPECT_TRUE(result.done_);
|
||
|
|
||
|
CARES_EXTERN void ares_getnameinfo(ares_channel channel,
|
||
|
const struct sockaddr *sa,
|
||
|
ares_socklen_t salen,
|
||
|
int flags,
|
||
|
ares_nameinfo_callback callback,
|
||
|
void *arg);
|
||
|
|
||
|
}
|
||
|
|
||
|
} // namespace test
|
||
|
} // namespace ares
|