[BACK]Return to resolver_test.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / external / mpl / bind / dist / lib / dns / tests

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>