summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2021-01-03 10:58:38 -0800
committerGarrett D'Amore <garrett@damore.org>2021-01-03 15:03:15 -0800
commit6a9bd051c439ef66cf00795b3829ca3ceece0497 (patch)
treef0c30c7c3d9c6ceb38ea3bd2175f07217df1f24c
parentf82096d39f21f30ac11fcf1c65a5b25e85691eae (diff)
downloadnng-6a9bd051c439ef66cf00795b3829ca3ceece0497.tar.gz
nng-6a9bd051c439ef66cf00795b3829ca3ceece0497.tar.bz2
nng-6a9bd051c439ef66cf00795b3829ca3ceece0497.zip
fixes #1401 valgrind reports leaks in all tests
This arranges for nng_fini to be called via atexit in the test version of the library. It also cleans up some of the actual tests to reduce extraneous (and in some cases incorrect) calls to nng_fini.
-rw-r--r--src/core/init.c9
-rw-r--r--tests/CMakeLists.txt2
-rw-r--r--tests/bus.c4
-rw-r--r--tests/compat_testutil.c (renamed from tests/nuts_compat.c)0
-rw-r--r--tests/device.c4
-rw-r--r--tests/httpclient.c4
-rw-r--r--tests/httpserver.c9
-rw-r--r--tests/inproc.c3
-rw-r--r--tests/ipc.c3
-rw-r--r--tests/ipcsupp.c3
-rw-r--r--tests/ipcwinsec.c5
-rw-r--r--tests/multistress.c4
-rw-r--r--tests/nonblock.c4
-rw-r--r--tests/pipe.c3
-rw-r--r--tests/reqctx.c8
-rw-r--r--tests/reqstress.c4
-rw-r--r--tests/scalability.c15
-rw-r--r--tests/stats.c3
-rw-r--r--tests/tcp.c4
-rw-r--r--tests/tcp6.c4
-rw-r--r--tests/tcpsupp.c3
-rw-r--r--tests/tls.c3
-rw-r--r--tests/udp.c3
-rw-r--r--tests/ws.c4
-rw-r--r--tests/wss.c4
-rw-r--r--tests/zt.c3
26 files changed, 37 insertions, 78 deletions
diff --git a/src/core/init.c b/src/core/init.c
index 7be879f5..5454385d 100644
--- a/src/core/init.c
+++ b/src/core/init.c
@@ -1,5 +1,5 @@
//
-// Copyright 2020 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -29,6 +29,13 @@ nni_init_helper(void)
nni_mtx_init(&nni_init_mtx);
NNI_LIST_INIT(&nni_init_list, nni_initializer, i_node);
nni_inited = true;
+#ifdef NNG_TEST_LIB
+ static bool cleanup = false;
+ if (!cleanup) {
+ atexit(nng_fini);
+ cleanup = true;
+ }
+#endif
if (((rv = nni_stat_sys_init()) != 0) ||
((rv = nni_taskq_sys_init()) != 0) ||
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 9ff9adfa..5fcd4323 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -64,7 +64,7 @@ if (NNG_TESTS)
# are present. It's not worth trying to figure out which of these
# should work and which shouldn't.
macro(add_nng_compat_test NAME TIMEOUT)
- add_executable(${NAME} ${NAME}.c nuts_compat.c)
+ add_executable(${NAME} ${NAME}.c compat_testutil.c)
target_link_libraries(${NAME} nng_testing)
target_include_directories(${NAME} PRIVATE
${PROJECT_SOURCE_DIR}/src/compat
diff --git a/tests/bus.c b/tests/bus.c
index 96e7ede3..ccd48167 100644
--- a/tests/bus.c
+++ b/tests/bus.c
@@ -1,5 +1,5 @@
//
-// Copyright 2018 Garrett D'Amore <garrett@damore.org>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -24,8 +24,6 @@
TestMain("BUS pattern", {
const char *addr = "inproc://test";
- Reset({ nng_fini(); });
-
Convey("We can create a BUS socket", {
nng_socket bus;
diff --git a/tests/nuts_compat.c b/tests/compat_testutil.c
index 7db03bf0..7db03bf0 100644
--- a/tests/nuts_compat.c
+++ b/tests/compat_testutil.c
diff --git a/tests/device.c b/tests/device.c
index 0ff784cc..7d10cbf1 100644
--- a/tests/device.c
+++ b/tests/device.c
@@ -1,5 +1,5 @@
//
-// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -106,6 +106,4 @@ Main({
});
});
});
-
- nng_fini();
})
diff --git a/tests/httpclient.c b/tests/httpclient.c
index 29239ddb..e153a987 100644
--- a/tests/httpclient.c
+++ b/tests/httpclient.c
@@ -1,5 +1,5 @@
//
-// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -35,8 +35,6 @@ const uint8_t chunked_sum[20] = { 0x9b, 0x06, 0xfb, 0xee, 0x51, 0xc6, 0x42,
0x68 };
TestMain("HTTP Client", {
- atexit(nng_fini);
-
Convey("Given a TCP connection to example.com", {
nng_aio * aio;
nng_http_client *cli;
diff --git a/tests/httpserver.c b/tests/httpserver.c
index a509638e..445aad0e 100644
--- a/tests/httpserver.c
+++ b/tests/httpserver.c
@@ -1,5 +1,5 @@
//
-// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
// Copyright 2020 Dirac Research <robert.bielik@dirac.com>
//
@@ -30,12 +30,6 @@ const char *doc2 = "This is a text file.";
const char *doc3 = "<html><body>This is doc number 3.</body></html>";
const char *doc4 = "<html><body>Whoops, Errored!</body></html>";
-void
-cleanup(void)
-{
- nng_fini();
-}
-
static int
httpdo(nng_url *url, nng_http_req *req, nng_http_res *res, void **datap,
size_t *sizep)
@@ -190,7 +184,6 @@ TestMain("HTTP Server", {
nng_http_handler *h;
nni_init();
- atexit(cleanup);
Convey("We can start an HTTP server", {
nng_aio *aio;
diff --git a/tests/inproc.c b/tests/inproc.c
index 3a3a2b60..11a6f118 100644
--- a/tests/inproc.c
+++ b/tests/inproc.c
@@ -1,5 +1,5 @@
//
-// Copyright 2017 Garrett D'Amore <garrett@damore.org>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2017 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -17,5 +17,4 @@
TestMain("Inproc Transport", {
trantest_test_all("inproc://TEST_%u");
- nng_fini();
})
diff --git a/tests/ipc.c b/tests/ipc.c
index 590b10df..d910e0af 100644
--- a/tests/ipc.c
+++ b/tests/ipc.c
@@ -1,5 +1,5 @@
//
-// Copyright 2020 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
// Copyright 2018 Devolutions <info@devolutions.net>
//
@@ -85,5 +85,4 @@ check_props(nng_msg *msg)
TestMain("IPC Transport", {
trantest_test_extended("ipc:///tmp/nng_ipc_test_%u", check_props);
- nng_fini();
})
diff --git a/tests/ipcsupp.c b/tests/ipcsupp.c
index d5128098..bd751885 100644
--- a/tests/ipcsupp.c
+++ b/tests/ipcsupp.c
@@ -1,5 +1,5 @@
//
-// Copyright 2019 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
// Copyright 2018 Devolutions <info@devolutions.net>
//
@@ -19,7 +19,6 @@
static int num = 0;
TestMain("Supplemental IPC", {
- atexit(nng_fini);
Convey("We can create a dialer and listener", {
nng_stream_dialer * d;
nng_stream_listener *l;
diff --git a/tests/ipcwinsec.c b/tests/ipcwinsec.c
index d6b28c1b..533dfe37 100644
--- a/tests/ipcwinsec.c
+++ b/tests/ipcwinsec.c
@@ -1,5 +1,5 @@
//
-// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -23,7 +23,6 @@
#ifndef _WIN32
TestMain("IPC Security Descriptor", {
- atexit(nng_fini);
Convey("Given a socket and an IPC listener", {
nng_socket s;
nng_listener l;
@@ -80,8 +79,6 @@ sdescAuthUsers(PSID sid, PACL *aclp)
}
TestMain("IPC Security Descriptor", {
- atexit(nng_fini);
-
Convey("Given a socket and an IPC listener", {
nng_socket s;
nng_listener l;
diff --git a/tests/multistress.c b/tests/multistress.c
index 9264e6bc..fee40503 100644
--- a/tests/multistress.c
+++ b/tests/multistress.c
@@ -1,5 +1,5 @@
//
-// Copyright 2019 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -770,8 +770,6 @@ Main({
char *str;
int tmo;
- atexit(nng_fini);
-
// Each run should truly be random.
srand((int) time(NULL));
diff --git a/tests/nonblock.c b/tests/nonblock.c
index c8cce901..3ad22889 100644
--- a/tests/nonblock.c
+++ b/tests/nonblock.c
@@ -1,5 +1,5 @@
//
-// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -94,8 +94,6 @@ nng_socket reqs[NCLIENTS];
nng_socket rep;
TestMain("Nonblocking Works", {
- atexit(nng_fini);
-
Convey("Running for 15 sec", {
nng_thread *server;
nng_thread *clients[NCLIENTS];
diff --git a/tests/pipe.c b/tests/pipe.c
index 71e9be67..617337b0 100644
--- a/tests/pipe.c
+++ b/tests/pipe.c
@@ -1,5 +1,5 @@
//
-// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -114,7 +114,6 @@ char addr[64];
static int cnt;
TestMain("Pipe notify works", {
- atexit(nng_fini);
Convey("We can create a pipeline", {
struct testcase push;
diff --git a/tests/reqctx.c b/tests/reqctx.c
index e937b995..c727b91c 100644
--- a/tests/reqctx.c
+++ b/tests/reqctx.c
@@ -1,5 +1,5 @@
//
-// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -28,10 +28,10 @@ static struct {
} rep_state;
void
-rep_cb(void *notused)
+rep_cb(void *unused)
{
int rv;
- (void) notused;
+ (void) unused;
nng_mtx_lock(rep_state.mtx);
if (rep_state.state == START) {
@@ -96,8 +96,6 @@ TestMain("REQ concurrent contexts", {
memset(recv_order, 0, NCTX * sizeof(int));
- atexit(nng_fini);
-
Convey("We can use REQ contexts concurrently", {
nng_socket req;
diff --git a/tests/reqstress.c b/tests/reqstress.c
index 481e4e92..18eac37a 100644
--- a/tests/reqstress.c
+++ b/tests/reqstress.c
@@ -1,5 +1,5 @@
//
-// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -270,8 +270,6 @@ Main({
int tmo;
char *str;
- atexit(nng_fini);
-
if (((str = ConveyGetEnv("STRESSTIME")) == NULL) ||
((tmo = atoi(str)) < 1)) {
tmo = 30;
diff --git a/tests/scalability.c b/tests/scalability.c
index 1cbbd961..0cff2243 100644
--- a/tests/scalability.c
+++ b/tests/scalability.c
@@ -1,5 +1,5 @@
//
-// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -43,14 +43,6 @@ serve(void *arg)
nng_close(rep);
}
-void
-stop(void)
-{
- nng_closeall();
- nng_thread_destroy(server);
- nng_fini();
-}
-
int
openclients(nng_socket *clients, int num)
{
@@ -97,8 +89,6 @@ Main({
nng_socket *clients;
int * results;
- atexit(stop);
-
clients = calloc(nclients, sizeof(nng_socket));
results = calloc(nclients, sizeof(int));
@@ -122,6 +112,9 @@ Main({
});
});
+ nng_close(rep);
+ nng_thread_destroy(server);
+
free(clients);
free(results);
})
diff --git a/tests/stats.c b/tests/stats.c
index 68a5ab62..fb731275 100644
--- a/tests/stats.c
+++ b/tests/stats.c
@@ -1,5 +1,5 @@
//
-// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -22,7 +22,6 @@
#define SECONDS(x) ((x) *1000)
TestMain("Stats Test", {
- atexit(nng_fini);
Convey("We are able to open a PAIR socket", {
nng_socket s1;
diff --git a/tests/tcp.c b/tests/tcp.c
index eecc148a..afc92f19 100644
--- a/tests/tcp.c
+++ b/tests/tcp.c
@@ -1,5 +1,5 @@
//
-// Copyright 2020 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
// Copyright 2018 Devolutions <info@devolutions.net>
//
@@ -62,6 +62,4 @@ check_props_v4(nng_msg *msg)
TestMain("TCP Transport", {
trantest_test_extended("tcp://127.0.0.1:%u", check_props_v4);
-
- nng_fini();
})
diff --git a/tests/tcp6.c b/tests/tcp6.c
index 9b3b0d4b..ecc55a46 100644
--- a/tests/tcp6.c
+++ b/tests/tcp6.c
@@ -1,5 +1,5 @@
//
-// Copyright 2018 Staysail Systems, Inc. <info@staystail.tech>
+// Copyright 2021 Staysail Systems, Inc. <info@staystail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -92,6 +92,4 @@ TestMain("TCP (IPv6) Transport", {
So(nng_dial(s1, "tcp://::1:5055", NULL, 0) == NNG_EADDRINVAL);
So(nng_dial(s1, "tcp://[::1]", NULL, 0) == NNG_EADDRINVAL);
});
-
- nng_fini();
})
diff --git a/tests/tcpsupp.c b/tests/tcpsupp.c
index 39558f58..9117c15b 100644
--- a/tests/tcpsupp.c
+++ b/tests/tcpsupp.c
@@ -1,5 +1,5 @@
//
-// Copyright 2019 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -16,7 +16,6 @@
#include "stubs.h"
TestMain("Supplemental TCP", {
- atexit(nng_fini);
Convey("We can create a dialer and listener", {
nng_stream_dialer * d = NULL;
nng_stream_listener *l = NULL;
diff --git a/tests/tls.c b/tests/tls.c
index 59525089..c6d5da6e 100644
--- a/tests/tls.c
+++ b/tests/tls.c
@@ -1,6 +1,6 @@
//
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
-// Copyright 2020 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
//
// This software is supplied under the terms of the MIT License, a
// copy of which should be located in the distribution where this
@@ -266,7 +266,6 @@ TestMain("TLS Transport", {
tt.listener_init = init_listener_tls;
tt.tmpl = "tls+tcp://127.0.0.1:%u";
tt.proptest = check_props_v4;
- atexit(nng_fini);
trantest_test(&tt);
diff --git a/tests/udp.c b/tests/udp.c
index af7b2807..c2772048 100644
--- a/tests/udp.c
+++ b/tests/udp.c
@@ -1,5 +1,5 @@
//
-// Copyright 2020 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -20,7 +20,6 @@
TestMain("UDP support", {
nni_init();
- atexit(nng_fini);
trantest_port = trantest_port ? trantest_port : 5555;
diff --git a/tests/ws.c b/tests/ws.c
index 70d2e8da..548521bd 100644
--- a/tests/ws.c
+++ b/tests/ws.c
@@ -1,5 +1,5 @@
//
-// Copyright 2020 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -83,6 +83,4 @@ check_props_v4(nng_msg *msg)
TestMain("WebSocket Transport", {
trantest_test_extended("ws://127.0.0.1:%u/test", check_props_v4);
-
- nng_fini();
})
diff --git a/tests/wss.c b/tests/wss.c
index ca33a542..0f570b81 100644
--- a/tests/wss.c
+++ b/tests/wss.c
@@ -1,5 +1,5 @@
//
-// Copyright 2020 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -245,6 +245,4 @@ TestMain("WebSocket Secure (TLS) Transport", {
tt.proptest = check_props;
trantest_test(&tt);
-
- nng_fini();
})
diff --git a/tests/zt.c b/tests/zt.c
index 186586c2..091fa841 100644
--- a/tests/zt.c
+++ b/tests/zt.c
@@ -1,5 +1,5 @@
//
-// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
//
// This software is supplied under the terms of the MIT License, a
@@ -130,7 +130,6 @@ TestMain("ZeroTier Transport", {
unsigned port;
port = 5555;
- atexit(nng_fini);
Convey("We can register the zero tier transport",
{ So(nng_zt_register() == 0); });