resolved: refactor DNS answer construction for cache tests
This commit is contained in:
@@ -33,12 +33,12 @@ typedef struct PutArgs {
|
||||
} PutArgs;
|
||||
|
||||
static PutArgs mk_put_args(void) {
|
||||
return (PutArgs) {
|
||||
PutArgs put_args = {
|
||||
.cache_mode = DNS_CACHE_MODE_YES,
|
||||
.protocol = DNS_PROTOCOL_DNS,
|
||||
.key = NULL,
|
||||
.rcode = DNS_RCODE_SUCCESS,
|
||||
.answer = NULL,
|
||||
.answer = dns_answer_new(0),
|
||||
.full_packet = NULL,
|
||||
.query_flags = SD_RESOLVED_AUTHENTICATED | SD_RESOLVED_CONFIDENTIAL,
|
||||
.dnssec_result = DNSSEC_UNSIGNED,
|
||||
@@ -47,6 +47,9 @@ static PutArgs mk_put_args(void) {
|
||||
.owner_address = { .in.s_addr = htobe32(0x01020304) },
|
||||
.stale_retention_usec = 0
|
||||
};
|
||||
|
||||
ASSERT_NOT_NULL(put_args.answer);
|
||||
return put_args;
|
||||
}
|
||||
|
||||
static int cache_put(DnsCache *cache, PutArgs *args) {
|
||||
@@ -80,25 +83,24 @@ static void put_args_unrefp(PutArgs *args) {
|
||||
dns_packet_unref(args->full_packet);
|
||||
}
|
||||
|
||||
static void answer_add_a(PutArgs *args, DnsResourceKey *key, int addr, int ttl, DnsAnswerFlags flags) {
|
||||
_cleanup_(dns_resource_record_unrefp) DnsResourceRecord *rr = NULL;
|
||||
|
||||
rr = dns_resource_record_new(key);
|
||||
ASSERT_NOT_NULL(rr);
|
||||
rr->a.in_addr.s_addr = htobe32(addr);
|
||||
rr->ttl = ttl;
|
||||
dns_answer_add(args->answer, rr, 1, flags, NULL);
|
||||
}
|
||||
|
||||
TEST(dns_a_success_is_cached) {
|
||||
_cleanup_(dns_cache_unrefp) DnsCache cache = new_cache();
|
||||
_cleanup_(put_args_unrefp) PutArgs put_args = mk_put_args();
|
||||
_cleanup_(dns_resource_record_unrefp) DnsResourceRecord *rr = NULL;
|
||||
DnsAnswerFlags flags;
|
||||
|
||||
put_args.key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, "www.example.com");
|
||||
ASSERT_NOT_NULL(put_args.key);
|
||||
put_args.rcode = DNS_RCODE_SUCCESS;
|
||||
|
||||
put_args.answer = dns_answer_new(1);
|
||||
ASSERT_NOT_NULL(put_args.answer);
|
||||
|
||||
rr = dns_resource_record_new(put_args.key);
|
||||
ASSERT_NOT_NULL(rr);
|
||||
rr->a.in_addr.s_addr = htobe32(0xc0a8017f);
|
||||
rr->ttl = 3600;
|
||||
flags = DNS_ANSWER_CACHEABLE;
|
||||
dns_answer_add(put_args.answer, rr, 1, flags, NULL);
|
||||
answer_add_a(&put_args, put_args.key, 0xc0a8017f, 3600, DNS_ANSWER_CACHEABLE);
|
||||
|
||||
ASSERT_OK(cache_put(&cache, &put_args));
|
||||
ASSERT_FALSE(dns_cache_is_empty(&cache));
|
||||
@@ -111,8 +113,6 @@ TEST(dns_a_success_empty_answer_is_not_cached) {
|
||||
put_args.key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, "www.example.com");
|
||||
ASSERT_NOT_NULL(put_args.key);
|
||||
put_args.rcode = DNS_RCODE_SUCCESS;
|
||||
put_args.answer = dns_answer_new(0);
|
||||
ASSERT_NOT_NULL(put_args.answer);
|
||||
|
||||
ASSERT_OK(cache_put(&cache, &put_args));
|
||||
ASSERT_TRUE(dns_cache_is_empty(&cache));
|
||||
@@ -125,9 +125,6 @@ TEST(dns_a_nxdomain_is_cached) {
|
||||
put_args.key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, "www.example.com");
|
||||
ASSERT_NOT_NULL(put_args.key);
|
||||
put_args.rcode = DNS_RCODE_NXDOMAIN;
|
||||
|
||||
put_args.answer = dns_answer_new(1);
|
||||
ASSERT_NOT_NULL(put_args.answer);
|
||||
dns_answer_add_soa(put_args.answer, "example.com", 3600, 0);
|
||||
|
||||
ASSERT_OK(cache_put(&cache, &put_args));
|
||||
@@ -141,8 +138,6 @@ TEST(dns_a_servfail_is_cached) {
|
||||
put_args.key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, "www.example.com");
|
||||
ASSERT_NOT_NULL(put_args.key);
|
||||
put_args.rcode = DNS_RCODE_SERVFAIL;
|
||||
put_args.answer = dns_answer_new(0);
|
||||
ASSERT_NOT_NULL(put_args.answer);
|
||||
|
||||
ASSERT_OK(cache_put(&cache, &put_args));
|
||||
ASSERT_FALSE(dns_cache_is_empty(&cache));
|
||||
@@ -155,8 +150,6 @@ TEST(dns_a_refused_is_not_cached) {
|
||||
put_args.key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, "www.example.com");
|
||||
ASSERT_NOT_NULL(put_args.key);
|
||||
put_args.rcode = DNS_RCODE_REFUSED;
|
||||
put_args.answer = dns_answer_new(0);
|
||||
ASSERT_NOT_NULL(put_args.answer);
|
||||
|
||||
ASSERT_OK(cache_put(&cache, &put_args));
|
||||
ASSERT_TRUE(dns_cache_is_empty(&cache));
|
||||
@@ -165,22 +158,11 @@ TEST(dns_a_refused_is_not_cached) {
|
||||
TEST(dns_a_success_zero_ttl_is_not_cached) {
|
||||
_cleanup_(dns_cache_unrefp) DnsCache cache = new_cache();
|
||||
_cleanup_(put_args_unrefp) PutArgs put_args = mk_put_args();
|
||||
_cleanup_(dns_resource_record_unrefp) DnsResourceRecord *rr = NULL;
|
||||
DnsAnswerFlags flags;
|
||||
|
||||
put_args.key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, "www.example.com");
|
||||
ASSERT_NOT_NULL(put_args.key);
|
||||
put_args.rcode = DNS_RCODE_SUCCESS;
|
||||
|
||||
put_args.answer = dns_answer_new(1);
|
||||
ASSERT_NOT_NULL(put_args.answer);
|
||||
|
||||
rr = dns_resource_record_new(put_args.key);
|
||||
ASSERT_NOT_NULL(rr);
|
||||
rr->a.in_addr.s_addr = htobe32(0xc0a8017f);
|
||||
rr->ttl = 0;
|
||||
flags = DNS_ANSWER_CACHEABLE;
|
||||
dns_answer_add(put_args.answer, rr, 1, flags, NULL);
|
||||
answer_add_a(&put_args, put_args.key, 0xc0a8017f, 0, DNS_ANSWER_CACHEABLE);
|
||||
|
||||
ASSERT_OK(cache_put(&cache, &put_args));
|
||||
ASSERT_TRUE(dns_cache_is_empty(&cache));
|
||||
@@ -189,22 +171,11 @@ TEST(dns_a_success_zero_ttl_is_not_cached) {
|
||||
TEST(dns_a_success_not_cacheable_is_not_cached) {
|
||||
_cleanup_(dns_cache_unrefp) DnsCache cache = new_cache();
|
||||
_cleanup_(put_args_unrefp) PutArgs put_args = mk_put_args();
|
||||
_cleanup_(dns_resource_record_unrefp) DnsResourceRecord *rr = NULL;
|
||||
DnsAnswerFlags flags;
|
||||
|
||||
put_args.key = dns_resource_key_new(DNS_CLASS_IN, DNS_TYPE_A, "www.example.com");
|
||||
ASSERT_NOT_NULL(put_args.key);
|
||||
put_args.rcode = DNS_RCODE_SUCCESS;
|
||||
|
||||
put_args.answer = dns_answer_new(1);
|
||||
ASSERT_NOT_NULL(put_args.answer);
|
||||
|
||||
rr = dns_resource_record_new(put_args.key);
|
||||
ASSERT_NOT_NULL(rr);
|
||||
rr->a.in_addr.s_addr = htobe32(0xc0a8017f);
|
||||
rr->ttl = 3600;
|
||||
flags = 0;
|
||||
dns_answer_add(put_args.answer, rr, 1, flags, NULL);
|
||||
answer_add_a(&put_args, put_args.key, 0xc0a8017f, 3600, 0);
|
||||
|
||||
ASSERT_OK(cache_put(&cache, &put_args));
|
||||
ASSERT_TRUE(dns_cache_is_empty(&cache));
|
||||
|
||||
Reference in New Issue
Block a user