Home | History | Annotate | Line # | Download | only in dns
rdataset_test.c revision 1.2
      1 /*	$NetBSD: rdataset_test.c,v 1.2 2024/02/21 22:52:50 christos Exp $	*/
      2 
      3 /*
      4  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
      5  *
      6  * SPDX-License-Identifier: MPL-2.0
      7  *
      8  * This Source Code Form is subject to the terms of the Mozilla Public
      9  * License, v. 2.0. If a copy of the MPL was not distributed with this
     10  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
     11  *
     12  * See the COPYRIGHT file distributed with this work for additional
     13  * information regarding copyright ownership.
     14  */
     15 
     16 #include <inttypes.h>
     17 #include <sched.h> /* IWYU pragma: keep */
     18 #include <setjmp.h>
     19 #include <stdarg.h>
     20 #include <stddef.h>
     21 #include <stdlib.h>
     22 #include <string.h>
     23 #include <unistd.h>
     24 
     25 #define UNIT_TESTING
     26 #include <cmocka.h>
     27 
     28 #include <isc/util.h>
     29 
     30 #include <dns/rdataset.h>
     31 #include <dns/rdatastruct.h>
     32 
     33 #include <tests/dns.h>
     34 
     35 /* test trimming of rdataset TTLs */
     36 ISC_RUN_TEST_IMPL(trimttl) {
     37 	dns_rdataset_t rdataset, sigrdataset;
     38 	dns_rdata_rrsig_t rrsig;
     39 	isc_stdtime_t ttltimenow, ttltimeexpire;
     40 
     41 	ttltimenow = 10000000;
     42 	ttltimeexpire = ttltimenow + 800;
     43 
     44 	UNUSED(state);
     45 
     46 	dns_rdataset_init(&rdataset);
     47 	dns_rdataset_init(&sigrdataset);
     48 
     49 	rdataset.ttl = 900;
     50 	sigrdataset.ttl = 1000;
     51 	rrsig.timeexpire = ttltimeexpire;
     52 	rrsig.originalttl = 1000;
     53 
     54 	dns_rdataset_trimttl(&rdataset, &sigrdataset, &rrsig, ttltimenow, true);
     55 	assert_int_equal(rdataset.ttl, 800);
     56 	assert_int_equal(sigrdataset.ttl, 800);
     57 
     58 	rdataset.ttl = 900;
     59 	sigrdataset.ttl = 1000;
     60 	rrsig.timeexpire = ttltimenow - 200;
     61 	rrsig.originalttl = 1000;
     62 
     63 	dns_rdataset_trimttl(&rdataset, &sigrdataset, &rrsig, ttltimenow, true);
     64 	assert_int_equal(rdataset.ttl, 120);
     65 	assert_int_equal(sigrdataset.ttl, 120);
     66 
     67 	rdataset.ttl = 900;
     68 	sigrdataset.ttl = 1000;
     69 	rrsig.timeexpire = ttltimenow - 200;
     70 	rrsig.originalttl = 1000;
     71 
     72 	dns_rdataset_trimttl(&rdataset, &sigrdataset, &rrsig, ttltimenow,
     73 			     false);
     74 	assert_int_equal(rdataset.ttl, 0);
     75 	assert_int_equal(sigrdataset.ttl, 0);
     76 
     77 	sigrdataset.ttl = 900;
     78 	rdataset.ttl = 1000;
     79 	rrsig.timeexpire = ttltimeexpire;
     80 	rrsig.originalttl = 1000;
     81 
     82 	dns_rdataset_trimttl(&rdataset, &sigrdataset, &rrsig, ttltimenow, true);
     83 	assert_int_equal(rdataset.ttl, 800);
     84 	assert_int_equal(sigrdataset.ttl, 800);
     85 
     86 	sigrdataset.ttl = 900;
     87 	rdataset.ttl = 1000;
     88 	rrsig.timeexpire = ttltimenow - 200;
     89 	rrsig.originalttl = 1000;
     90 
     91 	dns_rdataset_trimttl(&rdataset, &sigrdataset, &rrsig, ttltimenow, true);
     92 	assert_int_equal(rdataset.ttl, 120);
     93 	assert_int_equal(sigrdataset.ttl, 120);
     94 
     95 	sigrdataset.ttl = 900;
     96 	rdataset.ttl = 1000;
     97 	rrsig.timeexpire = ttltimenow - 200;
     98 	rrsig.originalttl = 1000;
     99 
    100 	dns_rdataset_trimttl(&rdataset, &sigrdataset, &rrsig, ttltimenow,
    101 			     false);
    102 	assert_int_equal(rdataset.ttl, 0);
    103 	assert_int_equal(sigrdataset.ttl, 0);
    104 }
    105 
    106 ISC_TEST_LIST_START
    107 ISC_TEST_ENTRY(trimttl)
    108 ISC_TEST_LIST_END
    109 
    110 ISC_TEST_MAIN
    111