Minor changes to the async DNS query API CTS tests.
1. Test that android_res_nresult closes the fd.
2. Use "0" instead of ResNsendFlags(0) since
the type of flags is changed.
Test: build
atest CtsNativeNetDnsTestCases
Change-Id: I772fb3f70f52b84802bb352215a1639efeab1629
diff --git a/tests/cts/net/native/dns/NativeDnsAsyncTest.cpp b/tests/cts/net/native/dns/NativeDnsAsyncTest.cpp
index 6ce89a0..2fc9ff8 100644
--- a/tests/cts/net/native/dns/NativeDnsAsyncTest.cpp
+++ b/tests/cts/net/native/dns/NativeDnsAsyncTest.cpp
@@ -44,6 +44,10 @@
revents = wait_fd[0].revents;
if (revents & POLLIN) {
int n = android_res_nresult(fd, rcode, buf, bufLen);
+ // Verify that android_res_nresult() closed the fd
+ char dummy;
+ EXPECT_EQ(-1, read(fd, &dummy, sizeof dummy));
+ EXPECT_EQ(EBADF, errno);
return n;
}
@@ -78,7 +82,6 @@
EXPECT_GE(res, 0);
EXPECT_EQ(rcode, expectedRcode);
-
if (expectedRcode == ns_r_noerror) {
auto answers = extractIpAddressAnswers(buf, res, ipType);
EXPECT_GE(answers.size(), 0U);
@@ -101,20 +104,20 @@
TEST (NativeDnsAsyncTest, Async_Query) {
// V4
int fd1 = android_res_nquery(
- NETWORK_UNSPECIFIED, "www.google.com", ns_c_in, ns_t_a, ResNsendFlags(0));
+ NETWORK_UNSPECIFIED, "www.google.com", ns_c_in, ns_t_a, 0);
EXPECT_GE(fd1, 0);
int fd2 = android_res_nquery(
- NETWORK_UNSPECIFIED, "www.youtube.com", ns_c_in, ns_t_a, ResNsendFlags(0));
+ NETWORK_UNSPECIFIED, "www.youtube.com", ns_c_in, ns_t_a, 0);
EXPECT_GE(fd2, 0);
expectAnswersValid(fd2, AF_INET, ns_r_noerror);
expectAnswersValid(fd1, AF_INET, ns_r_noerror);
// V6
fd1 = android_res_nquery(
- NETWORK_UNSPECIFIED, "www.google.com", ns_c_in, ns_t_aaaa, ResNsendFlags(0));
+ NETWORK_UNSPECIFIED, "www.google.com", ns_c_in, ns_t_aaaa, 0);
EXPECT_GE(fd1, 0);
fd2 = android_res_nquery(
- NETWORK_UNSPECIFIED, "www.youtube.com", ns_c_in, ns_t_aaaa, ResNsendFlags(0));
+ NETWORK_UNSPECIFIED, "www.youtube.com", ns_c_in, ns_t_aaaa, 0);
EXPECT_GE(fd2, 0);
expectAnswersValid(fd2, AF_INET6, ns_r_noerror);
expectAnswersValid(fd1, AF_INET6, ns_r_noerror);
@@ -132,9 +135,9 @@
ns_c_in, ns_t_a, nullptr, 0, nullptr, buf2, sizeof(buf2));
EXPECT_GT(len2, 0);
- int fd1 = android_res_nsend(NETWORK_UNSPECIFIED, buf1, len1, ResNsendFlags(0));
+ int fd1 = android_res_nsend(NETWORK_UNSPECIFIED, buf1, len1, 0);
EXPECT_GE(fd1, 0);
- int fd2 = android_res_nsend(NETWORK_UNSPECIFIED, buf2, len2, ResNsendFlags(0));
+ int fd2 = android_res_nsend(NETWORK_UNSPECIFIED, buf2, len2, 0);
EXPECT_GE(fd2, 0);
expectAnswersValid(fd2, AF_INET, ns_r_noerror);
@@ -150,9 +153,9 @@
ns_c_in, ns_t_aaaa, nullptr, 0, nullptr, buf2, sizeof(buf2));
EXPECT_GT(len2, 0);
- fd1 = android_res_nsend(NETWORK_UNSPECIFIED, buf1, len1, ResNsendFlags(0));
+ fd1 = android_res_nsend(NETWORK_UNSPECIFIED, buf1, len1, 0);
EXPECT_GE(fd1, 0);
- fd2 = android_res_nsend(NETWORK_UNSPECIFIED, buf2, len2, ResNsendFlags(0));
+ fd2 = android_res_nsend(NETWORK_UNSPECIFIED, buf2, len2, 0);
EXPECT_GE(fd2, 0);
expectAnswersValid(fd2, AF_INET6, ns_r_noerror);
@@ -190,7 +193,7 @@
TEST (NativeDnsAsyncTest, Async_Cancel) {
int fd = android_res_nquery(
- NETWORK_UNSPECIFIED, "www.google.com", ns_c_in, ns_t_a, ResNsendFlags(0));
+ NETWORK_UNSPECIFIED, "www.google.com", ns_c_in, ns_t_a, 0);
int rcode = -1;
uint8_t buf[MAXPACKET] = {};
android_res_cancel(fd);
@@ -204,7 +207,7 @@
// Empty string to create BLOB and query, we will get empty result and rcode = 0
// on DNSTLS.
int fd = android_res_nquery(
- NETWORK_UNSPECIFIED, "", ns_c_in, ns_t_a, ResNsendFlags(0));
+ NETWORK_UNSPECIFIED, "", ns_c_in, ns_t_a, 0);
EXPECT_GE(fd, 0);
expectAnswersValid(fd, AF_INET, ns_r_noerror);
@@ -212,44 +215,44 @@
std::string exceedingDomainQuery = "www." + std::string(255, 'g') + ".com";
fd = android_res_nquery(NETWORK_UNSPECIFIED,
- exceedingLabelQuery.c_str(), ns_c_in, ns_t_a, ResNsendFlags(0));
+ exceedingLabelQuery.c_str(), ns_c_in, ns_t_a, 0);
EXPECT_EQ(-EMSGSIZE, fd);
fd = android_res_nquery(NETWORK_UNSPECIFIED,
- exceedingDomainQuery.c_str(), ns_c_in, ns_t_a, ResNsendFlags(0));
+ exceedingDomainQuery.c_str(), ns_c_in, ns_t_a, 0);
EXPECT_EQ(-EMSGSIZE, fd);
}
TEST (NativeDnsAsyncTest, Async_Send_MALFORMED) {
uint8_t buf[10] = {};
// empty BLOB
- int fd = android_res_nsend(NETWORK_UNSPECIFIED, buf, 10, ResNsendFlags(0));
+ int fd = android_res_nsend(NETWORK_UNSPECIFIED, buf, 10, 0);
EXPECT_GE(fd, 0);
expectAnswersNotValid(fd, -EINVAL);
std::vector<uint8_t> largeBuf(2 * MAXPACKET, 0);
// A buffer larger than 8KB
fd = android_res_nsend(
- NETWORK_UNSPECIFIED, largeBuf.data(), largeBuf.size(), ResNsendFlags(0));
+ NETWORK_UNSPECIFIED, largeBuf.data(), largeBuf.size(), 0);
EXPECT_EQ(-EMSGSIZE, fd);
// 1000 bytes filled with 0. This returns EMSGSIZE because FrameworkListener limits the size of
// commands to 1024 bytes. TODO: fix this.
- fd = android_res_nsend(NETWORK_UNSPECIFIED, largeBuf.data(), 1000, ResNsendFlags(0));
+ fd = android_res_nsend(NETWORK_UNSPECIFIED, largeBuf.data(), 1000, 0);
EXPECT_EQ(-EMSGSIZE, fd);
// 500 bytes filled with 0
- fd = android_res_nsend(NETWORK_UNSPECIFIED, largeBuf.data(), 500, ResNsendFlags(0));
+ fd = android_res_nsend(NETWORK_UNSPECIFIED, largeBuf.data(), 500, 0);
EXPECT_GE(fd, 0);
expectAnswersNotValid(fd, -EINVAL);
// 1000 bytes filled with 0xFF
- std::vector<uint8_t> ffBuf(1000, 255);
+ std::vector<uint8_t> ffBuf(1000, 0xFF);
fd = android_res_nsend(
- NETWORK_UNSPECIFIED, ffBuf.data(), ffBuf.size(), ResNsendFlags(0));
+ NETWORK_UNSPECIFIED, ffBuf.data(), ffBuf.size(), 0);
EXPECT_EQ(-EMSGSIZE, fd);
// 500 bytes filled with 0xFF
- fd = android_res_nsend(NETWORK_UNSPECIFIED, ffBuf.data(), 500, ResNsendFlags(0));
+ fd = android_res_nsend(NETWORK_UNSPECIFIED, ffBuf.data(), 500, 0);
EXPECT_GE(fd, 0);
expectAnswersNotValid(fd, -EINVAL);
-}
\ No newline at end of file
+}