diff options
| author | Garrett D'Amore <garrett@damore.org> | 2024-11-30 12:56:07 -0500 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2024-11-30 12:56:07 -0500 |
| commit | 4f5a5fb842bcb6e6917d1d37b3530a7020222082 (patch) | |
| tree | e96592ee5b3bac114f6aba9237a1ba099495f335 /src | |
| parent | 25873b4fad8a5afbf5c539a9b9bb9659ce43c02e (diff) | |
| download | nng-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.h | 24 | ||||
| -rw-r--r-- | src/testing/util.c | 62 |
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; |
