Skip to content

Commit c85cc03

Browse files
committed
tests: add sockfd test for multiple accepts
While here initialize the message to avoid valgrind complaints.
1 parent 3ca7bcc commit c85cc03

File tree

1 file changed

+46
-2
lines changed

1 file changed

+46
-2
lines changed

src/sp/transport/socket/sockfd_test.c

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
// found online at https://opensource.org/licenses/MIT.
1111
//
1212

13+
#include "nng/protocol/pubsub0/sub.h"
1314
#include <nng/nng.h>
1415
#include <nuts.h>
1516

@@ -91,6 +92,48 @@ test_sfd_accept(void)
9192
#endif
9293
}
9394

95+
void
96+
test_sfd_accept_multi(void)
97+
{
98+
#ifdef NNG_HAVE_SOCKETPAIR
99+
nng_socket s1, s2, s3;
100+
nng_listener l1, l2, l3;
101+
int fds1[2];
102+
int fds2[2];
103+
104+
NUTS_PASS(nng_socket_pair(fds1));
105+
NUTS_PASS(nng_socket_pair(fds2));
106+
NUTS_PASS(nng_pub0_open(&s1));
107+
NUTS_PASS(nng_sub0_open(&s2));
108+
NUTS_PASS(nng_sub0_open(&s3));
109+
NUTS_PASS(nng_socket_set_ms(s1, NNG_OPT_SENDTIMEO, 1000));
110+
NUTS_PASS(nng_socket_set_ms(s2, NNG_OPT_RECVTIMEO, 1000));
111+
NUTS_PASS(nng_socket_set_ms(s3, NNG_OPT_RECVTIMEO, 1000));
112+
NUTS_PASS(nng_sub0_socket_subscribe(s2, NULL, 0));
113+
NUTS_PASS(nng_sub0_socket_subscribe(s3, NULL, 0));
114+
115+
NUTS_PASS(nng_listener_create(&l1, s1, "socket://"));
116+
NUTS_PASS(nng_listener_create(&l2, s2, "socket://"));
117+
NUTS_PASS(nng_listener_create(&l3, s3, "socket://"));
118+
NUTS_PASS(nng_listener_start(l1, 0));
119+
NUTS_PASS(nng_listener_start(l2, 0));
120+
NUTS_PASS(nng_listener_start(l3, 0));
121+
NUTS_PASS(nng_listener_set_int(l1, NNG_OPT_SOCKET_FD, fds1[0]));
122+
NUTS_PASS(nng_listener_set_int(l2, NNG_OPT_SOCKET_FD, fds1[1]));
123+
NUTS_PASS(nng_listener_set_int(l1, NNG_OPT_SOCKET_FD, fds2[0]));
124+
NUTS_PASS(nng_listener_set_int(l3, NNG_OPT_SOCKET_FD, fds2[1]));
125+
nng_msleep(200);
126+
NUTS_SEND(s1, "ping");
127+
NUTS_RECV(s2, "ping");
128+
NUTS_RECV(s3, "ping");
129+
NUTS_CLOSE(s1);
130+
NUTS_CLOSE(s2);
131+
NUTS_CLOSE(s3);
132+
#else
133+
NUTS_SKIP("no socketpair");
134+
#endif
135+
}
136+
94137
void
95138
test_sfd_exchange(void)
96139
{
@@ -157,8 +200,8 @@ void
157200
test_sfd_recv_max(void)
158201
{
159202
#ifdef NNG_HAVE_SOCKETPAIR
160-
char msg[256];
161-
char buf[256];
203+
char msg[256] = { 0 };
204+
char buf[256] = { 0 };
162205
nng_socket s0;
163206
nng_socket s1;
164207
nng_listener l0;
@@ -526,6 +569,7 @@ NUTS_TESTS = {
526569
{ "socket malformed address", test_sfd_malformed_address },
527570
{ "socket listen", test_sfd_listen },
528571
{ "socket accept", test_sfd_accept },
572+
{ "socket accept multi", test_sfd_accept_multi },
529573
{ "socket exchange", test_sfd_exchange },
530574
{ "socket exchange late", test_sfd_exchange_late },
531575
{ "socket recv max", test_sfd_recv_max },

0 commit comments

Comments
 (0)