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 ea7bddb4ca)
This commit is contained in:
@@ -28,6 +28,7 @@
|
||||
|
||||
#include <isc/list.h>
|
||||
#include <isc/print.h>
|
||||
#include <isc/random.h>
|
||||
#include <isc/util.h>
|
||||
|
||||
#include <dns/acl.h>
|
||||
@@ -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));
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user