From 31cff7ccf906d6c9a6c9ba96291cf6cf992086c7 Mon Sep 17 00:00:00 2001 From: Richard Newton Date: Wed, 9 Jul 2014 10:28:26 +0100 Subject: [PATCH] Add test for unbinding inproc socket. --- tests/test_inproc_connect.cpp | 51 +++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/tests/test_inproc_connect.cpp b/tests/test_inproc_connect.cpp index 7cd39721..4938baa4 100644 --- a/tests/test_inproc_connect.cpp +++ b/tests/test_inproc_connect.cpp @@ -411,6 +411,56 @@ void test_connect_only () assert (rc == 0); } + +void test_unbind () +{ + void *ctx = zmq_ctx_new (); + assert (ctx); + + // Bind and unbind socket 1 + void *bindSocket1 = zmq_socket (ctx, ZMQ_PAIR); + assert (bindSocket1); + int rc = zmq_bind (bindSocket1, "inproc://unbind"); + assert (rc == 0); + zmq_unbind (bindSocket1, "inproc://unbind"); + assert (rc == 0); + + // Bind socket 2 + void *bindSocket2 = zmq_socket (ctx, ZMQ_PAIR); + assert (bindSocket2); + rc = zmq_bind (bindSocket2, "inproc://unbind"); + assert (rc == 0); + + // Now connect + void *connectSocket = zmq_socket (ctx, ZMQ_PAIR); + assert (connectSocket); + rc = zmq_connect (connectSocket, "inproc://unbind"); + assert (rc == 0); + + // Queue up some data + rc = zmq_send_const (connectSocket, "foobar", 6, 0); + assert (rc == 6); + + // Read pending message + zmq_msg_t msg; + rc = zmq_msg_init (&msg); + assert (rc == 0); + rc = zmq_msg_recv (&msg, bindSocket2, 0); + assert (rc == 6); + void *data = zmq_msg_data (&msg); + assert (memcmp ("foobar", data, 6) == 0); + + // Cleanup + rc = zmq_close (connectSocket); + assert (rc == 0); + rc = zmq_close (bindSocket1); + assert (rc == 0); + rc = zmq_close (bindSocket2); + assert (rc == 0); + rc = zmq_ctx_term (ctx); + assert (rc == 0); +} + int main (void) { setup_test_environment (); @@ -423,6 +473,7 @@ int main (void) test_simultaneous_connect_bind_threads (); test_identity (); test_connect_only (); + test_unbind (); return 0; }