Skip to content

Commit aa77c03

Browse files
committed
Add tests for sockopt ZMQ_RECONNECT_STOP_AFTER_DISCONNECT
1 parent b95d949 commit aa77c03

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

tests/test_reconnect_options.cpp

+43
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,46 @@ void reconnect_stop_on_handshake_failed ()
246246
}
247247
#endif
248248

249+
#if defined(ZMQ_BUILD_DRAFT_API) && defined(ZMQ_HAVE_IPC)
250+
// test stopping reconnect after disconnect
251+
void reconnect_stop_after_disconnect ()
252+
{
253+
// Setup sub socket
254+
void *sub = test_context_socket (ZMQ_SUB);
255+
// Monitor all events on sub
256+
TEST_ASSERT_SUCCESS_ERRNO (
257+
zmq_socket_monitor (sub, "inproc://monitor-sub", ZMQ_EVENT_ALL));
258+
// Create socket for collecting monitor events
259+
void *sub_mon = test_context_socket (ZMQ_PAIR);
260+
// Connect so they'll get events
261+
TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (sub_mon, "inproc://monitor-sub"));
262+
// Set option to stop reconnecting after disconnect
263+
int stopReconnectAfterDisconnect = ZMQ_RECONNECT_STOP_AFTER_DISCONNECT;
264+
TEST_ASSERT_SUCCESS_ERRNO (
265+
zmq_setsockopt (sub, ZMQ_RECONNECT_STOP, &stopReconnectAfterDisconnect,
266+
sizeof (stopReconnectAfterDisconnect)));
267+
268+
// Connect to a dummy that cannot be connected
269+
TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (sub, "ipc://@dummy"));
270+
271+
// Confirm that connect failed and reconnect
272+
expect_monitor_event (sub_mon, ZMQ_EVENT_CLOSED);
273+
expect_monitor_event (sub_mon, ZMQ_EVENT_CONNECT_RETRIED);
274+
275+
// Disconnect the sub socket
276+
TEST_ASSERT_SUCCESS_ERRNO (zmq_disconnect (sub, "ipc://@dummy"));
277+
278+
// Confirm that connect failed and will not reconnect
279+
expect_monitor_event (sub_mon, ZMQ_EVENT_CLOSED);
280+
281+
// Close sub
282+
test_context_socket_close_zero_linger (sub);
283+
284+
// Close monitor
285+
test_context_socket_close_zero_linger (sub_mon);
286+
}
287+
#endif
288+
249289
void setUp ()
250290
{
251291
setup_test_context ();
@@ -267,6 +307,9 @@ int main (void)
267307
#ifdef ZMQ_BUILD_DRAFT_API
268308
RUN_TEST (reconnect_stop_on_refused);
269309
RUN_TEST (reconnect_stop_on_handshake_failed);
310+
#endif
311+
#if defined(ZMQ_BUILD_DRAFT_API) && defined(ZMQ_HAVE_IPC)
312+
RUN_TEST (reconnect_stop_after_disconnect);
270313
#endif
271314
return UNITY_END ();
272315
}

0 commit comments

Comments
 (0)