xref: /netbsd-src/external/mpl/bind/dist/tests/dns/rdataset_test.c (revision bcda20f65a8566e103791ec395f7f499ef322704)
1 /*	$NetBSD: rdataset_test.c,v 1.3 2025/01/26 16:25:48 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