diff --git a/tests/test_reqrep_tcp.cpp b/tests/test_reqrep_tcp.cpp index 7abb99c2..3ae0c2a1 100644 --- a/tests/test_reqrep_tcp.cpp +++ b/tests/test_reqrep_tcp.cpp @@ -62,11 +62,82 @@ void test_single_connect_ipv4 (void) assert (rc == 0); } +void test_multi_connect_ipv4 (void) +{ + void *ctx = zmq_ctx_new (); + assert (ctx); + + void *sb0 = zmq_socket (ctx, ZMQ_REP); + assert (sb0); + int rc = zmq_bind (sb0, "tcp://127.0.0.1:5560"); + assert (rc == 0); + + void *sb1 = zmq_socket (ctx, ZMQ_REP); + assert (sb1); + rc = zmq_bind (sb1, "tcp://127.0.0.1:5561"); + assert (rc == 0); + + void *sb2 = zmq_socket (ctx, ZMQ_REP); + assert (sb2); + rc = zmq_bind (sb2, "tcp://127.0.0.1:5562"); + assert (rc == 0); + + void *sc = zmq_socket (ctx, ZMQ_REQ); + assert (sc); + rc = zmq_connect (sc, "tcp://127.0.0.1:5560"); + assert (rc == 0); + rc = zmq_connect (sc, "tcp://127.0.0.1:5561"); + assert (rc == 0); + rc = zmq_connect (sc, "tcp://127.0.0.1:5562"); + assert (rc == 0); + + bounce (sb0, sc); + bounce (sb1, sc); + bounce (sb2, sc); + bounce (sb0, sc); + bounce (sb1, sc); + bounce (sb2, sc); + bounce (sb0, sc); + + rc = zmq_disconnect (sc, "tcp://127.0.0.1:5560"); + assert (rc == 0); + rc = zmq_disconnect (sc, "tcp://127.0.0.1:5562"); + assert (rc == 0); + rc = zmq_disconnect (sc, "tcp://127.0.0.1:5561"); + assert (rc == 0); + + rc = zmq_unbind (sb0, "tcp://127.0.0.1:5560"); + assert (rc == 0); + + rc = zmq_unbind (sb1, "tcp://127.0.0.1:5561"); + assert (rc == 0); + + rc = zmq_unbind (sb2, "tcp://127.0.0.1:5562"); + assert (rc == 0); + + rc = zmq_close (sc); + assert (rc == 0); + + rc = zmq_close (sb0); + assert (rc == 0); + + rc = zmq_close (sb1); + assert (rc == 0); + + rc = zmq_close (sb2); + assert (rc == 0); + + rc = zmq_ctx_term (ctx); + assert (rc == 0); +} + int main (void) { setup_test_environment (); test_single_connect_ipv4 (); + test_multi_connect_ipv4 (); + return 0 ; }