From 11ff0537e1a1cff1be7fc06fe89e8eb058a53d10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20K=C4=99pie=C5=84?= Date: Wed, 8 Jan 2020 18:30:54 +0100 Subject: [PATCH] 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) --- lib/ns/tests/listenlist_test.c | 6 ++++-- lib/ns/tests/nstest.c | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/ns/tests/listenlist_test.c b/lib/ns/tests/listenlist_test.c index c79542b9b0..5da470c807 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 b5e13c6ee1..64804bef3e 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);