test_stream_timeout.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MPL-2.0 */
2 
3 #include "testutil.hpp"
5 #include "testutil_unity.hpp"
6 
7 #include <stdlib.h>
8 #include <string.h>
9 
11 
13 {
15 
16  // We use this socket in raw mode, to make a connection and send nothing
18 
19  int zero = 0;
21  zmq_setsockopt (stream, ZMQ_LINGER, &zero, sizeof (zero)));
22 
23  // We'll be using this socket to test TCP stream handshake timeout
24  void *dealer = test_context_socket (ZMQ_DEALER);
26  zmq_setsockopt (dealer, ZMQ_LINGER, &zero, sizeof (zero)));
27  int val, tenth = 100;
28  size_t vsize = sizeof (val);
29 
30  // check for the expected default handshake timeout value - 30 sec
32  zmq_getsockopt (dealer, ZMQ_HANDSHAKE_IVL, &val, &vsize));
33  TEST_ASSERT_EQUAL (sizeof (val), vsize);
34  TEST_ASSERT_EQUAL_INT (30000, val);
35  // make handshake timeout faster - 1/10 sec
37  zmq_setsockopt (dealer, ZMQ_HANDSHAKE_IVL, &tenth, sizeof (tenth)));
38  vsize = sizeof (val);
39  // make sure zmq_setsockopt changed the value
41  zmq_getsockopt (dealer, ZMQ_HANDSHAKE_IVL, &val, &vsize));
42  TEST_ASSERT_EQUAL (sizeof (val), vsize);
43  TEST_ASSERT_EQUAL_INT (tenth, val);
44 
45  // Create and connect a socket for collecting monitor events on dealer
46  void *dealer_mon = test_context_socket (ZMQ_PAIR);
47 
49  dealer, "inproc://monitor-dealer",
51 
52  // Connect to the inproc endpoint so we'll get events
54  zmq_connect (dealer_mon, "inproc://monitor-dealer"));
55 
56  // bind dealer socket to accept connection from non-sending stream socket
57  bind_loopback_ipv4 (dealer, my_endpoint, sizeof my_endpoint);
58 
60 
61  // we should get ZMQ_EVENT_ACCEPTED and then ZMQ_EVENT_DISCONNECTED
62  int event = get_monitor_event (dealer_mon, NULL, NULL);
64  event = get_monitor_event (dealer_mon, NULL, NULL);
66 
68  test_context_socket_close (dealer_mon);
70 }
71 
73 {
75 
76  // We use this socket in raw mode, to accept a connection and send nothing
78 
79  int zero = 0;
81  zmq_setsockopt (stream, ZMQ_LINGER, &zero, sizeof (zero)));
82 
84 
85  // We'll be using this socket to test TCP stream handshake timeout
86  void *dealer = test_context_socket (ZMQ_DEALER);
88  zmq_setsockopt (dealer, ZMQ_LINGER, &zero, sizeof (zero)));
89  int val, tenth = 100;
90  size_t vsize = sizeof (val);
91 
92  // check for the expected default handshake timeout value - 30 sec
94  zmq_getsockopt (dealer, ZMQ_HANDSHAKE_IVL, &val, &vsize));
95  TEST_ASSERT_EQUAL (sizeof (val), vsize);
96  TEST_ASSERT_EQUAL_INT (30000, val);
97  // make handshake timeout faster - 1/10 sec
99  zmq_setsockopt (dealer, ZMQ_HANDSHAKE_IVL, &tenth, sizeof (tenth)));
100  vsize = sizeof (val);
101  // make sure zmq_setsockopt changed the value
103  zmq_getsockopt (dealer, ZMQ_HANDSHAKE_IVL, &val, &vsize));
104  TEST_ASSERT_EQUAL (sizeof (val), vsize);
105  TEST_ASSERT_EQUAL_INT (tenth, val);
106 
107  // Create and connect a socket for collecting monitor events on dealer
108  void *dealer_mon = test_context_socket (ZMQ_PAIR);
109 
111  dealer, "inproc://monitor-dealer",
113 
114  // Connect to the inproc endpoint so we'll get events
116  zmq_connect (dealer_mon, "inproc://monitor-dealer"));
117 
118  // connect dealer socket to non-sending stream socket
120 
121  // we should get ZMQ_EVENT_CONNECTED and then ZMQ_EVENT_DISCONNECTED
122  int event = get_monitor_event (dealer_mon, NULL, NULL);
124  event = get_monitor_event (dealer_mon, NULL, NULL);
126 
127  test_context_socket_close (dealer);
128  test_context_socket_close (dealer_mon);
130 }
131 
132 int main ()
133 {
135 
136  UNITY_BEGIN ();
139  return UNITY_END ();
140 }
stream
GLuint GLuint stream
Definition: glcorearb.h:3946
NULL
NULL
Definition: test_security_zap.cpp:405
UNITY_END
return UNITY_END()
ZMQ_STREAM
#define ZMQ_STREAM
Definition: zmq.h:269
zmq_socket_monitor
ZMQ_EXPORT int zmq_socket_monitor(void *s_, const char *addr_, int events_)
Definition: zmq.cpp:278
RUN_TEST
#define RUN_TEST(func)
Definition: unity_internals.h:615
test_stream_handshake_timeout_accept
static SETUP_TEARDOWN_TESTCONTEXT void test_stream_handshake_timeout_accept()
Definition: test_stream_timeout.cpp:12
test_stream_handshake_timeout_connect
static void test_stream_handshake_timeout_connect()
Definition: test_stream_timeout.cpp:72
SETUP_TEARDOWN_TESTCONTEXT
#define SETUP_TEARDOWN_TESTCONTEXT
Definition: testutil_unity.hpp:172
bind_loopback_ipv4
void bind_loopback_ipv4(void *socket_, char *my_endpoint_, size_t len_)
Definition: testutil_unity.cpp:246
zmq_connect
ZMQ_EXPORT int zmq_connect(void *s_, const char *addr_)
Definition: zmq.cpp:307
main
int main()
Definition: test_stream_timeout.cpp:132
testutil_unity.hpp
ZMQ_DEALER
#define ZMQ_DEALER
Definition: zmq.h:263
zmq_setsockopt
ZMQ_EXPORT int zmq_setsockopt(void *s_, int option_, const void *optval_, size_t optvallen_)
Definition: zmq.cpp:250
ZMQ_EVENT_CONNECTED
#define ZMQ_EVENT_CONNECTED
Definition: zmq.h:401
event
struct _cl_event * event
Definition: glcorearb.h:4163
testutil.hpp
my_endpoint
char my_endpoint[MAX_SOCKET_STRING]
Definition: test_security_curve.cpp:31
MAX_SOCKET_STRING
#define MAX_SOCKET_STRING
Definition: libzmq/tests/testutil.hpp:35
test_context_socket
void * test_context_socket(int type_)
Definition: testutil_unity.cpp:200
TEST_ASSERT_EQUAL
#define TEST_ASSERT_EQUAL(expected, actual)
Definition: unity.h:133
TEST_ASSERT_EQUAL_INT
#define TEST_ASSERT_EQUAL_INT(expected, actual)
Definition: unity.h:128
ZMQ_HANDSHAKE_IVL
#define ZMQ_HANDSHAKE_IVL
Definition: zmq.h:328
ZMQ_LINGER
#define ZMQ_LINGER
Definition: zmq.h:288
ZMQ_PAIR
#define ZMQ_PAIR
Definition: zmq.h:258
ZMQ_EVENT_ACCEPTED
#define ZMQ_EVENT_ACCEPTED
Definition: zmq.h:406
ZMQ_EVENT_DISCONNECTED
#define ZMQ_EVENT_DISCONNECTED
Definition: zmq.h:410
testutil_monitoring.hpp
get_monitor_event
static SETUP_TEARDOWN_TESTCONTEXT int get_monitor_event(void *monitor_)
Definition: test_heartbeats.cpp:34
setup_test_environment
void setup_test_environment(int timeout_seconds_)
Definition: testutil.cpp:201
UNITY_BEGIN
UNITY_BEGIN()
val
GLuint GLfloat * val
Definition: glcorearb.h:3604
test_context_socket_close
void * test_context_socket_close(void *socket_)
Definition: testutil_unity.cpp:208
TEST_ASSERT_SUCCESS_ERRNO
#define TEST_ASSERT_SUCCESS_ERRNO(expr)
Definition: proxy_thr.cpp:47
zmq_getsockopt
ZMQ_EXPORT int zmq_getsockopt(void *s_, int option_, void *optval_, size_t *optvallen_)
Definition: zmq.cpp:261


libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:59