From: Michał Kępień Date: Wed, 8 Jan 2020 17:30:54 +0000 (+0100) Subject: Bind to random port numbers in unit tests X-Git-Tag: v9.15.8~22^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ea7bddb4ca24a9ca4d12f8ecd8fa186699f0f5ab;p=thirdparty%2Fbind9.git Bind to random port numbers in unit tests Some unit tests need various managers to be created before they are run. The interface manager spawned during libns tests listens on a fixed port number, which causes intermittent issues when multiple tests using an interface manager are run concurrently. Make the interface manager listen on a randomized port number to greatly reduce the risk of multiple unit tests using the same port concurrently. --- diff --git a/lib/ns/tests/listenlist_test.c b/lib/ns/tests/listenlist_test.c index 78ca786d8fd..55fcc457416 100644 --- a/lib/ns/tests/listenlist_test.c +++ b/lib/ns/tests/listenlist_test.c @@ -28,6 +28,7 @@ #include #include +#include #include @@ -60,13 +61,14 @@ _teardown(void **state) { static void ns_listenlist_default_test(void **state) { isc_result_t result; + in_port_t port = 5300 + isc_random8(); ns_listenlist_t *list = NULL; ns_listenelt_t *elt; int count; UNUSED(state); - result = ns_listenlist_default(mctx, 5300, -1, false, &list); + result = ns_listenlist_default(mctx, port, -1, false, &list); assert_int_equal(result, ISC_R_SUCCESS); assert_non_null(list); @@ -93,7 +95,7 @@ ns_listenlist_default_test(void **state) { ns_listenlist_detach(&list); - result = ns_listenlist_default(mctx, 5300, -1, true, &list); + result = ns_listenlist_default(mctx, port, -1, true, &list); assert_int_equal(result, ISC_R_SUCCESS); assert_false(ISC_LIST_EMPTY(list->elts)); diff --git a/lib/ns/tests/nstest.c b/lib/ns/tests/nstest.c index 6a6bd45e720..d4314693d2f 100644 --- a/lib/ns/tests/nstest.c +++ b/lib/ns/tests/nstest.c @@ -215,6 +215,7 @@ scan_interfaces(isc_task_t *task, isc_event_t *event) { static isc_result_t create_managers(void) { isc_result_t result; + in_port_t port = 5300 + isc_random8(); ns_listenlist_t *listenon = NULL; isc_event_t *event = NULL; ncpus = isc_os_ncpus(); @@ -238,7 +239,7 @@ create_managers(void) { socketmgr, nm, dispatchmgr, maintask, ncpus, NULL, &interfacemgr)); - CHECK(ns_listenlist_default(mctx, 5300, -1, true, &listenon)); + CHECK(ns_listenlist_default(mctx, port, -1, true, &listenon)); ns_interfacemgr_setlistenon4(interfacemgr, listenon); ns_listenlist_detach(&listenon);