rdataset_test.c revision 1.2.2.2 1 /* $NetBSD: rdataset_test.c,v 1.2.2.2 2024/02/25 15:47:40 martin 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