Annotation of src/external/mpl/bind/dist/lib/dns/tests/resolver_test.c, Revision 1.6
1.1 christos 1: /* $NetBSD$ */
2:
3: /*
4: * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
5: *
6: * This Source Code Form is subject to the terms of the Mozilla Public
7: * License, v. 2.0. If a copy of the MPL was not distributed with this
1.6 ! christos 8: * file, you can obtain one at https://mozilla.org/MPL/2.0/.
1.1 christos 9: *
10: * See the COPYRIGHT file distributed with this work for additional
11: * information regarding copyright ownership.
12: */
13:
1.3 christos 14: #if HAVE_CMOCKA
1.1 christos 15:
1.5 christos 16: #include <sched.h> /* IWYU pragma: keep */
17: #include <setjmp.h>
1.3 christos 18: #include <stdarg.h>
19: #include <stddef.h>
20: #include <stdlib.h>
1.1 christos 21: #include <unistd.h>
22:
1.3 christos 23: #define UNIT_TESTING
24: #include <cmocka.h>
25:
1.1 christos 26: #include <isc/app.h>
27: #include <isc/buffer.h>
1.3 christos 28: #include <isc/print.h>
1.1 christos 29: #include <isc/socket.h>
30: #include <isc/task.h>
31: #include <isc/timer.h>
1.4 christos 32: #include <isc/util.h>
1.1 christos 33:
34: #include <dns/dispatch.h>
35: #include <dns/name.h>
36: #include <dns/resolver.h>
37: #include <dns/view.h>
38:
39: #include "dnstest.h"
40:
41: static dns_dispatchmgr_t *dispatchmgr = NULL;
42: static dns_dispatch_t *dispatch = NULL;
43: static dns_view_t *view = NULL;
44:
1.3 christos 45: static int
46: _setup(void **state) {
1.1 christos 47: isc_result_t result;
48: isc_sockaddr_t local;
49:
1.3 christos 50: UNUSED(state);
1.1 christos 51:
1.3 christos 52: result = dns_test_begin(NULL, true);
53: assert_int_equal(result, ISC_R_SUCCESS);
54:
1.5 christos 55: result = dns_dispatchmgr_create(dt_mctx, &dispatchmgr);
1.3 christos 56: assert_int_equal(result, ISC_R_SUCCESS);
1.1 christos 57:
58: result = dns_test_makeview("view", &view);
1.3 christos 59: assert_int_equal(result, ISC_R_SUCCESS);
1.1 christos 60:
61: isc_sockaddr_any(&local);
62: result = dns_dispatch_getudp(dispatchmgr, socketmgr, taskmgr, &local,
1.5 christos 63: 4096, 100, 100, 100, 500, 0, 0, &dispatch);
1.3 christos 64: assert_int_equal(result, ISC_R_SUCCESS);
65:
66: return (0);
1.1 christos 67: }
68:
1.3 christos 69: static int
70: _teardown(void **state) {
71: UNUSED(state);
72:
1.1 christos 73: dns_dispatch_detach(&dispatch);
74: dns_view_detach(&view);
75: dns_dispatchmgr_destroy(&dispatchmgr);
76: dns_test_end();
1.3 christos 77:
78: return (0);
1.1 christos 79: }
80:
81: static void
82: mkres(dns_resolver_t **resolverp) {
83: isc_result_t result;
84:
1.5 christos 85: result = dns_resolver_create(view, taskmgr, 1, 1, socketmgr, timermgr,
86: 0, dispatchmgr, dispatch, NULL, resolverp);
1.3 christos 87: assert_int_equal(result, ISC_R_SUCCESS);
1.1 christos 88: }
89:
90: static void
91: destroy_resolver(dns_resolver_t **resolverp) {
92: dns_resolver_shutdown(*resolverp);
93: dns_resolver_detach(resolverp);
94: }
95:
1.3 christos 96: /* dns_resolver_create */
97: static void
98: create_test(void **state) {
1.1 christos 99: dns_resolver_t *resolver = NULL;
100:
1.3 christos 101: UNUSED(state);
1.1 christos 102:
103: mkres(&resolver);
104: destroy_resolver(&resolver);
105: }
106:
1.3 christos 107: /* dns_resolver_gettimeout */
108: static void
109: gettimeout_test(void **state) {
1.1 christos 110: dns_resolver_t *resolver = NULL;
111: unsigned int timeout;
112:
1.3 christos 113: UNUSED(state);
1.1 christos 114:
115: mkres(&resolver);
116:
117: timeout = dns_resolver_gettimeout(resolver);
1.3 christos 118: assert_true(timeout > 0);
1.1 christos 119:
120: destroy_resolver(&resolver);
121: }
122:
1.3 christos 123: /* dns_resolver_settimeout */
124: static void
125: settimeout_test(void **state) {
1.1 christos 126: dns_resolver_t *resolver = NULL;
127: unsigned int default_timeout, timeout;
128:
1.3 christos 129: UNUSED(state);
1.1 christos 130:
131: mkres(&resolver);
132:
133: default_timeout = dns_resolver_gettimeout(resolver);
134: dns_resolver_settimeout(resolver, default_timeout + 1);
135: timeout = dns_resolver_gettimeout(resolver);
1.3 christos 136: assert_true(timeout == default_timeout + 1);
1.1 christos 137:
138: destroy_resolver(&resolver);
139: }
140:
1.3 christos 141: /* dns_resolver_settimeout */
142: static void
143: settimeout_default_test(void **state) {
1.1 christos 144: dns_resolver_t *resolver = NULL;
145: unsigned int default_timeout, timeout;
146:
1.3 christos 147: UNUSED(state);
1.1 christos 148:
149: mkres(&resolver);
150:
151: default_timeout = dns_resolver_gettimeout(resolver);
152: dns_resolver_settimeout(resolver, default_timeout + 100);
153:
154: timeout = dns_resolver_gettimeout(resolver);
1.3 christos 155: assert_int_equal(timeout, default_timeout + 100);
1.1 christos 156:
157: dns_resolver_settimeout(resolver, 0);
158: timeout = dns_resolver_gettimeout(resolver);
1.3 christos 159: assert_int_equal(timeout, default_timeout);
1.1 christos 160:
161: destroy_resolver(&resolver);
162: }
163:
1.3 christos 164: /* dns_resolver_settimeout below minimum */
165: static void
166: settimeout_belowmin_test(void **state) {
1.1 christos 167: dns_resolver_t *resolver = NULL;
168: unsigned int default_timeout, timeout;
169:
1.3 christos 170: UNUSED(state);
1.1 christos 171:
172: mkres(&resolver);
173:
174: default_timeout = dns_resolver_gettimeout(resolver);
175: dns_resolver_settimeout(resolver, 9000);
176:
177: timeout = dns_resolver_gettimeout(resolver);
1.3 christos 178: assert_int_equal(timeout, default_timeout);
1.1 christos 179:
180: destroy_resolver(&resolver);
181: }
182:
1.3 christos 183: /* dns_resolver_settimeout over maximum */
184: static void
185: settimeout_overmax_test(void **state) {
1.1 christos 186: dns_resolver_t *resolver = NULL;
187: unsigned int timeout;
188:
1.3 christos 189: UNUSED(state);
1.1 christos 190:
191: mkres(&resolver);
192:
193: dns_resolver_settimeout(resolver, 4000000);
194: timeout = dns_resolver_gettimeout(resolver);
1.3 christos 195: assert_in_range(timeout, 0, 3999999);
1.1 christos 196: destroy_resolver(&resolver);
197: }
198:
1.3 christos 199: int
200: main(void) {
201: const struct CMUnitTest tests[] = {
1.5 christos 202: cmocka_unit_test_setup_teardown(create_test, _setup, _teardown),
203: cmocka_unit_test_setup_teardown(gettimeout_test, _setup,
204: _teardown),
205: cmocka_unit_test_setup_teardown(settimeout_test, _setup,
206: _teardown),
207: cmocka_unit_test_setup_teardown(settimeout_default_test, _setup,
208: _teardown),
1.3 christos 209: cmocka_unit_test_setup_teardown(settimeout_belowmin_test,
210: _setup, _teardown),
1.5 christos 211: cmocka_unit_test_setup_teardown(settimeout_overmax_test, _setup,
212: _teardown),
1.3 christos 213: };
214:
215: return (cmocka_run_group_tests(tests, NULL, NULL));
1.1 christos 216: }
1.3 christos 217:
218: #else /* HAVE_CMOCKA */
219:
220: #include <stdio.h>
221:
222: int
223: main(void) {
224: printf("1..0 # Skipped: cmocka not available\n");
225: return (0);
226: }
227:
1.5 christos 228: #endif /* if HAVE_CMOCKA */
CVSweb <webmaster@jp.NetBSD.org>