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.14.10~25^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=11ff0537e1a1cff1be7fc06fe89e8eb058a53d10;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. (cherry picked from commit ea7bddb4ca24a9ca4d12f8ecd8fa186699f0f5ab) --- diff --git a/lib/ns/tests/listenlist_test.c b/lib/ns/tests/listenlist_test.c index c79542b9b0a..5da470c8076 100644 --- a/lib/ns/tests/listenlist_test.c +++ b/lib/ns/tests/listenlist_test.c @@ -28,6 +28,7 @@ #include #include +#include #include #include @@ -61,13 +62,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); @@ -94,7 +96,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 b5e13c6ee12..64804bef3ed 100644 --- a/lib/ns/tests/nstest.c +++ b/lib/ns/tests/nstest.c @@ -175,6 +175,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(); @@ -199,7 +200,7 @@ create_managers(void) { CHECK(ns_clientmgr_create(mctx, sctx, taskmgr, timermgr, &clientmgr)); - 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);