aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2024-11-30 12:56:07 -0500
committerGarrett D'Amore <garrett@damore.org>2024-11-30 12:56:07 -0500
commit4f5a5fb842bcb6e6917d1d37b3530a7020222082 (patch)
treee96592ee5b3bac114f6aba9237a1ba099495f335 /src
parent25873b4fad8a5afbf5c539a9b9bb9659ce43c02e (diff)
downloadnng-4f5a5fb842bcb6e6917d1d37b3530a7020222082.tar.gz
nng-4f5a5fb842bcb6e6917d1d37b3530a7020222082.tar.bz2
nng-4f5a5fb842bcb6e6917d1d37b3530a7020222082.zip
tests: add a couple more transport specific tests
Diffstat (limited to 'src')
-rw-r--r--src/testing/nuts.h24
-rw-r--r--src/testing/util.c62
2 files changed, 86 insertions, 0 deletions
diff --git a/src/testing/nuts.h b/src/testing/nuts.h
index a2e850a3..0d3d4f7c 100644
--- a/src/testing/nuts.h
+++ b/src/testing/nuts.h
@@ -109,7 +109,11 @@ extern int nuts_stream_wait(void *);
// nuts_tran_ functions are implementation of tesets
// for transports, to improve code reuse.
extern void nuts_tran_conn_refused(const char *scheme);
+extern void nuts_tran_dialer_cancel(const char *scheme);
+extern void nuts_tran_dialer_closed(const char *scheme);
extern void nuts_tran_duplicate_listen(const char *scheme);
+extern void nuts_tran_listener_cancel(const char *scheme);
+extern void nuts_tran_listener_closed(const char *scheme);
extern void nuts_tran_listen_accept(const char *scheme);
extern void nuts_tran_exchange(const char *scheme);
extern void nuts_tran_pipe_id(const char *scheme);
@@ -126,10 +130,26 @@ extern void nuts_tran_perf(const char *scheme);
{ \
nuts_tran_conn_refused(#scheme); \
} \
+ void test_##scheme##_dialer_cancel(void) \
+ { \
+ nuts_tran_dialer_cancel(#scheme); \
+ } \
+ void test_##scheme##_dialer_closed(void) \
+ { \
+ nuts_tran_dialer_closed(#scheme); \
+ } \
void test_##scheme##_duplicate_listen(void) \
{ \
nuts_tran_duplicate_listen(#scheme); \
} \
+ void test_##scheme##_listener_cancel(void) \
+ { \
+ nuts_tran_listener_cancel(#scheme); \
+ } \
+ void test_##scheme##_listener_closed(void) \
+ { \
+ nuts_tran_listener_closed(#scheme); \
+ } \
void test_##scheme##_listen_accept(void) \
{ \
nuts_tran_listen_accept(#scheme); \
@@ -154,7 +174,11 @@ extern void nuts_tran_perf(const char *scheme);
// clang-format off
#define NUTS_INSERT_TRAN_TESTS(scheme) \
{ #scheme " conn refused", test_##scheme##_conn_refused }, \
+ { #scheme " dialer cancel", test_##scheme##_dialer_cancel }, \
+ { #scheme " dialer closed", test_##scheme##_dialer_closed }, \
{ #scheme " duplicate listen", test_##scheme##_duplicate_listen }, \
+ { #scheme " listener cancel", test_##scheme##_listener_cancel }, \
+ { #scheme " listener closed", test_##scheme##_listener_closed }, \
{ #scheme " listen accept", test_##scheme##_listen_accept }, \
{ #scheme " exchange", test_##scheme##_exchange }, \
{ #scheme " pipe id", test_##scheme##_pipe_id }, \
diff --git a/src/testing/util.c b/src/testing/util.c
index 4b487e2d..79b48337 100644
--- a/src/testing/util.c
+++ b/src/testing/util.c
@@ -230,6 +230,37 @@ nuts_tran_conn_refused(const char *scheme)
}
void
+nuts_tran_dialer_cancel(const char *scheme)
+{
+ nng_socket s = NNG_SOCKET_INITIALIZER;
+ nng_dialer d = NNG_DIALER_INITIALIZER;
+ const char *addr;
+
+ NUTS_ADDR(addr, scheme);
+ NUTS_OPEN(s);
+ NUTS_PASS(nng_dial(s, addr, &d, NNG_FLAG_NONBLOCK));
+ NUTS_TRUE(nng_dialer_id(d) > 0);
+ NUTS_PASS(nng_dialer_close(d));
+ NUTS_CLOSE(s);
+}
+
+void
+nuts_tran_dialer_closed(const char *scheme)
+{
+ nng_socket s = NNG_SOCKET_INITIALIZER;
+ nng_dialer d = NNG_DIALER_INITIALIZER;
+ const char *addr;
+
+ NUTS_ADDR(addr, scheme);
+ NUTS_OPEN(s);
+ NUTS_PASS(nng_dialer_create(&d, s, addr));
+ NUTS_TRUE(nng_dialer_id(d) > 0);
+ NUTS_PASS(nng_dialer_close(d));
+ NUTS_FAIL(nng_dialer_start(d, 0), NNG_ENOENT);
+ NUTS_CLOSE(s);
+}
+
+void
nuts_tran_duplicate_listen(const char *scheme)
{
nng_socket s = NNG_SOCKET_INITIALIZER;
@@ -247,6 +278,37 @@ nuts_tran_duplicate_listen(const char *scheme)
}
void
+nuts_tran_listener_cancel(const char *scheme)
+{
+ nng_socket s = NNG_SOCKET_INITIALIZER;
+ nng_listener l = NNG_LISTENER_INITIALIZER;
+ const char *addr;
+
+ NUTS_ADDR(addr, scheme);
+ NUTS_OPEN(s);
+ NUTS_PASS(nng_listen(s, addr, &l, 0));
+ NUTS_TRUE(nng_listener_id(l) > 0);
+ NUTS_PASS(nng_listener_close(l));
+ NUTS_CLOSE(s);
+}
+
+void
+nuts_tran_listener_closed(const char *scheme)
+{
+ nng_socket s = NNG_SOCKET_INITIALIZER;
+ nng_listener l = NNG_LISTENER_INITIALIZER;
+ const char *addr;
+
+ NUTS_ADDR(addr, scheme);
+ NUTS_OPEN(s);
+ NUTS_PASS(nng_listener_create(&l, s, addr));
+ NUTS_TRUE(nng_listener_id(l) > 0);
+ NUTS_PASS(nng_listener_close(l));
+ NUTS_FAIL(nng_listener_start(l, 0), NNG_ENOENT);
+ NUTS_CLOSE(s);
+}
+
+void
nuts_tran_listen_accept(const char *scheme)
{
nng_socket s1 = NNG_SOCKET_INITIALIZER;