diff options
| author | Garrett D'Amore <garrett@damore.org> | 2024-12-07 21:33:53 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2024-12-07 21:36:10 -0800 |
| commit | c85cc03c60a1e98f190b6c20bb99b5c513c43027 (patch) | |
| tree | e408ec4f73a8608ab7fe5e2fd86cec79bb048d99 /src | |
| parent | 3ca7bcc0edd0f26c33264d32e7b6f07276e72e3c (diff) | |
| download | nng-c85cc03c60a1e98f190b6c20bb99b5c513c43027.tar.gz nng-c85cc03c60a1e98f190b6c20bb99b5c513c43027.tar.bz2 nng-c85cc03c60a1e98f190b6c20bb99b5c513c43027.zip | |
tests: add sockfd test for multiple accepts
While here initialize the message to avoid valgrind complaints.
Diffstat (limited to 'src')
| -rw-r--r-- | src/sp/transport/socket/sockfd_test.c | 48 |
1 files changed, 46 insertions, 2 deletions
diff --git a/src/sp/transport/socket/sockfd_test.c b/src/sp/transport/socket/sockfd_test.c index de1f582b..5a6035a6 100644 --- a/src/sp/transport/socket/sockfd_test.c +++ b/src/sp/transport/socket/sockfd_test.c @@ -10,6 +10,7 @@ // found online at https://opensource.org/licenses/MIT. // +#include "nng/protocol/pubsub0/sub.h" #include <nng/nng.h> #include <nuts.h> @@ -92,6 +93,48 @@ test_sfd_accept(void) } void +test_sfd_accept_multi(void) +{ +#ifdef NNG_HAVE_SOCKETPAIR + nng_socket s1, s2, s3; + nng_listener l1, l2, l3; + int fds1[2]; + int fds2[2]; + + NUTS_PASS(nng_socket_pair(fds1)); + NUTS_PASS(nng_socket_pair(fds2)); + NUTS_PASS(nng_pub0_open(&s1)); + NUTS_PASS(nng_sub0_open(&s2)); + NUTS_PASS(nng_sub0_open(&s3)); + NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(s2, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_socket_set_ms(s3, NNG_OPT_RECVTIMEO, 1000)); + NUTS_PASS(nng_sub0_socket_subscribe(s2, NULL, 0)); + NUTS_PASS(nng_sub0_socket_subscribe(s3, NULL, 0)); + + NUTS_PASS(nng_listener_create(&l1, s1, "socket://")); + NUTS_PASS(nng_listener_create(&l2, s2, "socket://")); + NUTS_PASS(nng_listener_create(&l3, s3, "socket://")); + NUTS_PASS(nng_listener_start(l1, 0)); + NUTS_PASS(nng_listener_start(l2, 0)); + NUTS_PASS(nng_listener_start(l3, 0)); + NUTS_PASS(nng_listener_set_int(l1, NNG_OPT_SOCKET_FD, fds1[0])); + NUTS_PASS(nng_listener_set_int(l2, NNG_OPT_SOCKET_FD, fds1[1])); + NUTS_PASS(nng_listener_set_int(l1, NNG_OPT_SOCKET_FD, fds2[0])); + NUTS_PASS(nng_listener_set_int(l3, NNG_OPT_SOCKET_FD, fds2[1])); + nng_msleep(200); + NUTS_SEND(s1, "ping"); + NUTS_RECV(s2, "ping"); + NUTS_RECV(s3, "ping"); + NUTS_CLOSE(s1); + NUTS_CLOSE(s2); + NUTS_CLOSE(s3); +#else + NUTS_SKIP("no socketpair"); +#endif +} + +void test_sfd_exchange(void) { #ifdef NNG_HAVE_SOCKETPAIR @@ -157,8 +200,8 @@ void test_sfd_recv_max(void) { #ifdef NNG_HAVE_SOCKETPAIR - char msg[256]; - char buf[256]; + char msg[256] = { 0 }; + char buf[256] = { 0 }; nng_socket s0; nng_socket s1; nng_listener l0; @@ -526,6 +569,7 @@ NUTS_TESTS = { { "socket malformed address", test_sfd_malformed_address }, { "socket listen", test_sfd_listen }, { "socket accept", test_sfd_accept }, + { "socket accept multi", test_sfd_accept_multi }, { "socket exchange", test_sfd_exchange }, { "socket exchange late", test_sfd_exchange_late }, { "socket recv max", test_sfd_recv_max }, |
