rbczmq 1.7.4 → 1.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -13
- data/.travis.yml +4 -1
- data/CHANGELOG.rdoc +13 -0
- data/Gemfile +8 -1
- data/Gemfile.lock +211 -2
- data/README.rdoc +7 -4
- data/ext/rbczmq/beacon.c +6 -3
- data/ext/rbczmq/context.c +117 -8
- data/ext/rbczmq/context.h +5 -0
- data/ext/rbczmq/message.c +6 -4
- data/ext/rbczmq/poller.c +12 -5
- data/ext/rbczmq/rbczmq_ext.c +2 -0
- data/ext/rbczmq/rbczmq_ext.h +1 -0
- data/ext/rbczmq/socket.c +135 -59
- data/ext/rbczmq/socket.h +2 -0
- data/ext/zeromq/CMakeLists.txt +3 -1
- data/ext/zeromq/NEWS +28 -3
- data/ext/zeromq/doc/zmq.txt +3 -3
- data/ext/zeromq/doc/zmq_getsockopt.txt +3 -3
- data/ext/zeromq/doc/zmq_msg_get.txt +2 -1
- data/ext/zeromq/doc/zmq_msg_more.txt +1 -1
- data/ext/zeromq/doc/zmq_setsockopt.txt +18 -19
- data/ext/zeromq/doc/zmq_socket.txt +4 -0
- data/ext/zeromq/include/zmq.h +14 -18
- data/ext/zeromq/src/clock.cpp +57 -2
- data/ext/zeromq/src/ctx.cpp +11 -5
- data/ext/zeromq/src/devpoll.cpp +5 -0
- data/ext/zeromq/src/devpoll.hpp +2 -0
- data/ext/zeromq/src/epoll.cpp +5 -0
- data/ext/zeromq/src/epoll.hpp +2 -0
- data/ext/zeromq/src/i_engine.hpp +2 -2
- data/ext/zeromq/src/kqueue.cpp +5 -0
- data/ext/zeromq/src/kqueue.hpp +2 -0
- data/ext/zeromq/src/pgm_receiver.cpp +2 -2
- data/ext/zeromq/src/pgm_receiver.hpp +2 -2
- data/ext/zeromq/src/pgm_sender.cpp +2 -2
- data/ext/zeromq/src/pgm_sender.hpp +2 -2
- data/ext/zeromq/src/poll.cpp +5 -0
- data/ext/zeromq/src/poll.hpp +2 -0
- data/ext/zeromq/src/router.cpp +2 -0
- data/ext/zeromq/src/select.cpp +5 -0
- data/ext/zeromq/src/select.hpp +2 -0
- data/ext/zeromq/src/session_base.cpp +2 -2
- data/ext/zeromq/src/signaler.cpp +73 -99
- data/ext/zeromq/src/signaler.hpp +2 -2
- data/ext/zeromq/src/socket_base.cpp +42 -40
- data/ext/zeromq/src/stream_engine.cpp +60 -58
- data/ext/zeromq/src/stream_engine.hpp +7 -8
- data/ext/zeromq/src/zmq_utils.cpp +6 -5
- data/ext/zeromq/tests/Makefile.am +6 -5
- data/ext/zeromq/tests/test_conflate.cpp +2 -5
- data/ext/zeromq/tests/test_ctx_destroy.cpp +1 -1
- data/ext/zeromq/tests/test_ctx_options.cpp +1 -1
- data/ext/zeromq/tests/test_immediate.cpp +1 -2
- data/ext/zeromq/tests/test_inproc_connect.cpp +1 -1
- data/ext/zeromq/tests/test_iov.cpp +1 -1
- data/ext/zeromq/tests/test_many_sockets.cpp +90 -0
- data/ext/zeromq/tests/test_monitor.cpp +3 -3
- data/ext/zeromq/tests/test_req_relaxed.cpp +1 -1
- data/ext/zeromq/tests/test_router_raw_empty.cpp +65 -0
- data/ext/zeromq/tests/test_spec_req.cpp +1 -1
- data/ext/zeromq/tests/test_stream.cpp +6 -7
- data/ext/zeromq/tests/test_sub_forward.cpp +1 -1
- data/ext/zeromq/tests/test_term_endpoint.cpp +2 -2
- data/ext/zeromq/tests/testutil.hpp +18 -1
- data/ext/zeromq/tools/Makefile.am +1 -1
- data/lib/zmq/socket.rb +1 -0
- data/lib/zmq/socket/stream.rb +44 -0
- data/lib/zmq/version.rb +1 -1
- data/test/socket/test_dealer_socket.rb +1 -1
- data/test/socket/test_pair_socket.rb +1 -1
- data/test/socket/test_pair_sockets.rb +1 -1
- data/test/socket/test_pub_socket.rb +1 -1
- data/test/socket/test_pub_sub_sockets.rb +1 -1
- data/test/socket/test_pull_socket.rb +1 -1
- data/test/socket/test_push_pull_sockets.rb +1 -1
- data/test/socket/test_push_socket.rb +1 -1
- data/test/socket/test_rep_socket.rb +1 -1
- data/test/socket/test_req_rep_sockets.rb +1 -1
- data/test/socket/test_req_socket.rb +1 -1
- data/test/socket/test_router_socket.rb +1 -1
- data/test/socket/test_routing.rb +1 -1
- data/test/socket/test_stream_socket.rb +74 -0
- data/test/socket/test_sub_socket.rb +1 -1
- data/test/test_beacon.rb +4 -2
- data/test/test_context.rb +2 -2
- data/test/test_frame.rb +2 -2
- data/test/test_handler.rb +2 -2
- data/test/test_logger.rb +1 -1
- data/test/test_loop.rb +2 -2
- data/test/test_message.rb +1 -1
- data/test/test_monitoring.rb +15 -3
- data/test/test_poller.rb +2 -2
- data/test/test_pollitem.rb +2 -2
- data/test/test_socket.rb +53 -6
- data/test/test_threading.rb +2 -2
- data/test/test_timer.rb +2 -2
- data/test/test_zmq.rb +2 -2
- metadata +109 -104
data/ext/zeromq/src/signaler.hpp
CHANGED
@@ -58,7 +58,8 @@ namespace zmq
|
|
58
58
|
// to pass the signals.
|
59
59
|
static int make_fdpair (fd_t *r_, fd_t *w_);
|
60
60
|
|
61
|
-
// Underlying write & read file descriptor
|
61
|
+
// Underlying write & read file descriptor
|
62
|
+
// Will be -1 if we exceeded number of available handles
|
62
63
|
fd_t w;
|
63
64
|
fd_t r;
|
64
65
|
|
@@ -74,7 +75,6 @@ namespace zmq
|
|
74
75
|
void close_internal();
|
75
76
|
#endif
|
76
77
|
};
|
77
|
-
|
78
78
|
}
|
79
79
|
|
80
80
|
#endif
|
@@ -79,47 +79,49 @@ zmq::socket_base_t *zmq::socket_base_t::create (int type_, class ctx_t *parent_,
|
|
79
79
|
{
|
80
80
|
socket_base_t *s = NULL;
|
81
81
|
switch (type_) {
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
return NULL;
|
82
|
+
case ZMQ_PAIR:
|
83
|
+
s = new (std::nothrow) pair_t (parent_, tid_, sid_);
|
84
|
+
break;
|
85
|
+
case ZMQ_PUB:
|
86
|
+
s = new (std::nothrow) pub_t (parent_, tid_, sid_);
|
87
|
+
break;
|
88
|
+
case ZMQ_SUB:
|
89
|
+
s = new (std::nothrow) sub_t (parent_, tid_, sid_);
|
90
|
+
break;
|
91
|
+
case ZMQ_REQ:
|
92
|
+
s = new (std::nothrow) req_t (parent_, tid_, sid_);
|
93
|
+
break;
|
94
|
+
case ZMQ_REP:
|
95
|
+
s = new (std::nothrow) rep_t (parent_, tid_, sid_);
|
96
|
+
break;
|
97
|
+
case ZMQ_DEALER:
|
98
|
+
s = new (std::nothrow) dealer_t (parent_, tid_, sid_);
|
99
|
+
break;
|
100
|
+
case ZMQ_ROUTER:
|
101
|
+
s = new (std::nothrow) router_t (parent_, tid_, sid_);
|
102
|
+
break;
|
103
|
+
case ZMQ_PULL:
|
104
|
+
s = new (std::nothrow) pull_t (parent_, tid_, sid_);
|
105
|
+
break;
|
106
|
+
case ZMQ_PUSH:
|
107
|
+
s = new (std::nothrow) push_t (parent_, tid_, sid_);
|
108
|
+
break;
|
109
|
+
case ZMQ_XPUB:
|
110
|
+
s = new (std::nothrow) xpub_t (parent_, tid_, sid_);
|
111
|
+
break;
|
112
|
+
case ZMQ_XSUB:
|
113
|
+
s = new (std::nothrow) xsub_t (parent_, tid_, sid_);
|
114
|
+
break;
|
115
|
+
case ZMQ_STREAM:
|
116
|
+
s = new (std::nothrow) stream_t (parent_, tid_, sid_);
|
117
|
+
break;
|
118
|
+
default:
|
119
|
+
errno = EINVAL;
|
120
|
+
return NULL;
|
122
121
|
}
|
122
|
+
if (s->mailbox.get_fd () == -1)
|
123
|
+
return NULL;
|
124
|
+
|
123
125
|
alloc_assert (s);
|
124
126
|
return s;
|
125
127
|
}
|
@@ -74,8 +74,8 @@ zmq::stream_engine_t::stream_engine_t (fd_t fd_, const options_t &options_,
|
|
74
74
|
io_error (false),
|
75
75
|
subscription_required (false),
|
76
76
|
mechanism (NULL),
|
77
|
-
|
78
|
-
|
77
|
+
input_stopped (false),
|
78
|
+
output_stopped (false),
|
79
79
|
socket (NULL)
|
80
80
|
{
|
81
81
|
int rc = tx_msg.init ();
|
@@ -204,7 +204,7 @@ void zmq::stream_engine_t::in_event ()
|
|
204
204
|
zmq_assert (decoder);
|
205
205
|
|
206
206
|
// If there has been an I/O error, stop polling.
|
207
|
-
if (
|
207
|
+
if (input_stopped) {
|
208
208
|
rm_fd (handle);
|
209
209
|
io_error = true;
|
210
210
|
return;
|
@@ -217,17 +217,22 @@ void zmq::stream_engine_t::in_event ()
|
|
217
217
|
// Note that buffer can be arbitrarily large. However, we assume
|
218
218
|
// the underlying TCP layer has fixed buffer size and thus the
|
219
219
|
// number of bytes read will be always limited.
|
220
|
-
|
221
|
-
|
220
|
+
size_t bufsize = 0;
|
221
|
+
decoder->get_buffer (&inpos, &bufsize);
|
222
222
|
|
223
|
-
|
224
|
-
if (
|
223
|
+
int const rc = read (inpos, bufsize);
|
224
|
+
if (rc == 0) {
|
225
225
|
error ();
|
226
226
|
return;
|
227
227
|
}
|
228
|
+
if (rc == -1) {
|
229
|
+
if (errno != EAGAIN)
|
230
|
+
error ();
|
231
|
+
return;
|
232
|
+
}
|
228
233
|
|
229
234
|
// Adjust input size
|
230
|
-
insize = static_cast <size_t> (
|
235
|
+
insize = static_cast <size_t> (rc);
|
231
236
|
}
|
232
237
|
|
233
238
|
int rc = 0;
|
@@ -252,7 +257,7 @@ void zmq::stream_engine_t::in_event ()
|
|
252
257
|
error ();
|
253
258
|
return;
|
254
259
|
}
|
255
|
-
|
260
|
+
input_stopped = true;
|
256
261
|
reset_pollin (handle);
|
257
262
|
}
|
258
263
|
|
@@ -291,7 +296,7 @@ void zmq::stream_engine_t::out_event ()
|
|
291
296
|
|
292
297
|
// If there is no data to send, stop polling for output.
|
293
298
|
if (outsize == 0) {
|
294
|
-
|
299
|
+
output_stopped = true;
|
295
300
|
reset_pollout (handle);
|
296
301
|
return;
|
297
302
|
}
|
@@ -328,14 +333,14 @@ void zmq::stream_engine_t::out_event ()
|
|
328
333
|
terminate ();
|
329
334
|
}
|
330
335
|
|
331
|
-
void zmq::stream_engine_t::
|
336
|
+
void zmq::stream_engine_t::restart_output ()
|
332
337
|
{
|
333
338
|
if (unlikely (io_error))
|
334
339
|
return;
|
335
340
|
|
336
|
-
if (likely (
|
341
|
+
if (likely (output_stopped)) {
|
337
342
|
set_pollout (handle);
|
338
|
-
|
343
|
+
output_stopped = false;
|
339
344
|
}
|
340
345
|
|
341
346
|
// Speculative write: The assumption is that at the moment new message
|
@@ -345,9 +350,9 @@ void zmq::stream_engine_t::activate_out ()
|
|
345
350
|
out_event ();
|
346
351
|
}
|
347
352
|
|
348
|
-
void zmq::stream_engine_t::
|
353
|
+
void zmq::stream_engine_t::restart_input ()
|
349
354
|
{
|
350
|
-
zmq_assert (
|
355
|
+
zmq_assert (input_stopped);
|
351
356
|
zmq_assert (session != NULL);
|
352
357
|
zmq_assert (decoder != NULL);
|
353
358
|
|
@@ -379,7 +384,7 @@ void zmq::stream_engine_t::activate_in ()
|
|
379
384
|
if (rc == -1 || io_error)
|
380
385
|
error ();
|
381
386
|
else {
|
382
|
-
|
387
|
+
input_stopped = false;
|
383
388
|
set_pollin (handle);
|
384
389
|
session->flush ();
|
385
390
|
|
@@ -396,12 +401,15 @@ bool zmq::stream_engine_t::handshake ()
|
|
396
401
|
while (greeting_bytes_read < greeting_size) {
|
397
402
|
const int n = read (greeting_recv + greeting_bytes_read,
|
398
403
|
greeting_size - greeting_bytes_read);
|
399
|
-
if (n ==
|
404
|
+
if (n == 0) {
|
400
405
|
error ();
|
401
406
|
return false;
|
402
407
|
}
|
403
|
-
if (n ==
|
408
|
+
if (n == -1) {
|
409
|
+
if (errno != EAGAIN)
|
410
|
+
error ();
|
404
411
|
return false;
|
412
|
+
}
|
405
413
|
|
406
414
|
greeting_bytes_read += n;
|
407
415
|
|
@@ -480,6 +488,13 @@ bool zmq::stream_engine_t::handshake ()
|
|
480
488
|
// header data away.
|
481
489
|
const size_t header_size = options.identity_size + 1 >= 255 ? 10 : 2;
|
482
490
|
unsigned char tmp [10], *bufferp = tmp;
|
491
|
+
|
492
|
+
// Prepare the identity message and load it into encoder.
|
493
|
+
// Then consume bytes we have already sent to the peer.
|
494
|
+
const int rc = tx_msg.init_size (options.identity_size);
|
495
|
+
zmq_assert (rc == 0);
|
496
|
+
memcpy (tx_msg.data (), options.identity, options.identity_size);
|
497
|
+
encoder->load_msg (&tx_msg);
|
483
498
|
size_t buffer_size = encoder->encode (&bufferp, header_size);
|
484
499
|
zmq_assert (buffer_size == header_size);
|
485
500
|
|
@@ -614,8 +629,8 @@ int zmq::stream_engine_t::process_handshake_command (msg_t *msg_)
|
|
614
629
|
if (rc == 0) {
|
615
630
|
if (mechanism->is_handshake_complete ())
|
616
631
|
mechanism_ready ();
|
617
|
-
if (
|
618
|
-
|
632
|
+
if (output_stopped)
|
633
|
+
restart_output ();
|
619
634
|
}
|
620
635
|
|
621
636
|
return rc;
|
@@ -630,10 +645,10 @@ void zmq::stream_engine_t::zap_msg_available ()
|
|
630
645
|
error ();
|
631
646
|
return;
|
632
647
|
}
|
633
|
-
if (
|
634
|
-
|
635
|
-
if (
|
636
|
-
|
648
|
+
if (input_stopped)
|
649
|
+
restart_input ();
|
650
|
+
if (output_stopped)
|
651
|
+
restart_output ();
|
637
652
|
}
|
638
653
|
|
639
654
|
void zmq::stream_engine_t::mechanism_ready ()
|
@@ -785,58 +800,45 @@ int zmq::stream_engine_t::read (void *data_, size_t size_)
|
|
785
800
|
{
|
786
801
|
#ifdef ZMQ_HAVE_WINDOWS
|
787
802
|
|
788
|
-
int
|
803
|
+
const int rc = recv (s, (char*) data_, (int) size_, 0);
|
789
804
|
|
790
805
|
// If not a single byte can be read from the socket in non-blocking mode
|
791
806
|
// we'll get an error (this may happen during the speculative read).
|
792
|
-
if (
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
wsa_assert (nbytes != SOCKET_ERROR);
|
807
|
-
|
808
|
-
// Orderly shutdown by the other peer.
|
809
|
-
if (nbytes == 0)
|
810
|
-
return -1;
|
807
|
+
if (rc == SOCKET_ERROR) {
|
808
|
+
if (WSAGetLastError () == WSAEWOULDBLOCK)
|
809
|
+
errno = EAGAIN;
|
810
|
+
else {
|
811
|
+
wsa_assert (WSAGetLastError () == WSAENETDOWN
|
812
|
+
|| WSAGetLastError () == WSAENETRESET
|
813
|
+
|| WSAGetLastError () == WSAECONNABORTED
|
814
|
+
|| WSAGetLastError () == WSAETIMEDOUT
|
815
|
+
|| WSAGetLastError () == WSAECONNRESET
|
816
|
+
|| WSAGetLastError () == WSAECONNREFUSED
|
817
|
+
|| WSAGetLastError () == WSAENOTCONN);
|
818
|
+
errno = wsa_error_to_errno (WSAGetLastError ());
|
819
|
+
}
|
820
|
+
}
|
811
821
|
|
812
|
-
return
|
822
|
+
return rc == SOCKET_ERROR? -1: rc;
|
813
823
|
|
814
824
|
#else
|
815
825
|
|
816
|
-
ssize_t
|
826
|
+
const ssize_t rc = recv (s, data_, size_, 0);
|
817
827
|
|
818
828
|
// Several errors are OK. When speculative read is being done we may not
|
819
829
|
// be able to read a single byte from the socket. Also, SIGSTOP issued
|
820
830
|
// by a debugging tool can result in EINTR error.
|
821
|
-
if (
|
822
|
-
errno == EINTR))
|
823
|
-
return 0;
|
824
|
-
|
825
|
-
// Signalise peer failure.
|
826
|
-
if (nbytes == -1) {
|
831
|
+
if (rc == -1) {
|
827
832
|
errno_assert (errno != EBADF
|
828
833
|
&& errno != EFAULT
|
829
834
|
&& errno != EINVAL
|
830
835
|
&& errno != ENOMEM
|
831
836
|
&& errno != ENOTSOCK);
|
832
|
-
|
837
|
+
if (errno == EWOULDBLOCK || errno == EINTR)
|
838
|
+
errno = EAGAIN;
|
833
839
|
}
|
834
840
|
|
835
|
-
|
836
|
-
if (nbytes == 0)
|
837
|
-
return -1;
|
838
|
-
|
839
|
-
return static_cast <int> (nbytes);
|
841
|
+
return static_cast <int> (rc);
|
840
842
|
|
841
843
|
#endif
|
842
844
|
}
|
@@ -60,8 +60,8 @@ namespace zmq
|
|
60
60
|
void plug (zmq::io_thread_t *io_thread_,
|
61
61
|
zmq::session_base_t *session_);
|
62
62
|
void terminate ();
|
63
|
-
void
|
64
|
-
void
|
63
|
+
void restart_input ();
|
64
|
+
void restart_output ();
|
65
65
|
void zap_msg_available ();
|
66
66
|
|
67
67
|
// i_poll_events interface implementation.
|
@@ -87,10 +87,9 @@ namespace zmq
|
|
87
87
|
// of error or orderly shutdown by the other peer -1 is returned.
|
88
88
|
int write (const void *data_, size_t size_);
|
89
89
|
|
90
|
-
// Reads data from the socket (up to 'size' bytes).
|
91
|
-
// of bytes actually read
|
92
|
-
//
|
93
|
-
// peer -1 is returned.
|
90
|
+
// Reads data from the socket (up to 'size' bytes).
|
91
|
+
// Returns the number of bytes actually read or -1 on error.
|
92
|
+
// Zero indicates the peer has closed the connection.
|
94
93
|
int read (void *data_, size_t size_);
|
95
94
|
|
96
95
|
int read_identity (msg_t *msg_);
|
@@ -179,10 +178,10 @@ namespace zmq
|
|
179
178
|
mechanism_t *mechanism;
|
180
179
|
|
181
180
|
// True iff the engine couldn't consume the last decoded message.
|
182
|
-
bool
|
181
|
+
bool input_stopped;
|
183
182
|
|
184
183
|
// True iff the engine doesn't have any message to encode.
|
185
|
-
bool
|
184
|
+
bool output_stopped;
|
186
185
|
|
187
186
|
// Socket
|
188
187
|
zmq::socket_base_t *socket;
|
@@ -142,15 +142,15 @@ char *zmq_z85_encode (char *dest, uint8_t *data, size_t size)
|
|
142
142
|
|
143
143
|
uint8_t *zmq_z85_decode (uint8_t *dest, char *string)
|
144
144
|
{
|
145
|
-
|
146
145
|
if (strlen (string) % 5 != 0) {
|
147
146
|
errno = EINVAL;
|
148
147
|
return NULL;
|
149
148
|
}
|
150
149
|
unsigned int byte_nbr = 0;
|
151
150
|
unsigned int char_nbr = 0;
|
151
|
+
unsigned int string_len = strlen (string);
|
152
152
|
uint32_t value = 0;
|
153
|
-
while (char_nbr <
|
153
|
+
while (char_nbr < string_len) {
|
154
154
|
// Accumulate value in base 85
|
155
155
|
value = value * 85 + decoder [(uint8_t) string [char_nbr++] - 32];
|
156
156
|
if (char_nbr % 5 == 0) {
|
@@ -173,7 +173,7 @@ uint8_t *zmq_z85_decode (uint8_t *dest, char *string)
|
|
173
173
|
// Returns 0 on success, -1 on failure, setting errno.
|
174
174
|
// Sets errno = ENOTSUP in the absence of libsodium.
|
175
175
|
|
176
|
-
int zmq_curve_keypair (char*
|
176
|
+
int zmq_curve_keypair (char *z85_public_key, char *z85_secret_key)
|
177
177
|
{
|
178
178
|
#ifdef HAVE_LIBSODIUM
|
179
179
|
# if crypto_box_PUBLICKEYBYTES != 32 \
|
@@ -185,8 +185,9 @@ int zmq_curve_keypair (char* z85_public_key, char *z85_secret_key)
|
|
185
185
|
uint8_t secret_key [32];
|
186
186
|
|
187
187
|
int rc = crypto_box_keypair (public_key, secret_key);
|
188
|
-
//
|
189
|
-
if (rc)
|
188
|
+
// Is there a sensible errno to set here?
|
189
|
+
if (rc)
|
190
|
+
return rc;
|
190
191
|
|
191
192
|
zmq_z85_encode (z85_public_key, public_key, 32);
|
192
193
|
zmq_z85_encode (z85_secret_key, secret_key, 32);
|
@@ -17,9 +17,9 @@ noinst_PROGRAMS = test_system \
|
|
17
17
|
test_immediate \
|
18
18
|
test_last_endpoint \
|
19
19
|
test_term_endpoint \
|
20
|
-
test_linger \
|
21
20
|
test_monitor \
|
22
21
|
test_router_mandatory \
|
22
|
+
test_router_raw_empty \
|
23
23
|
test_probe_router \
|
24
24
|
test_stream \
|
25
25
|
test_disconnect_inproc \
|
@@ -39,7 +39,8 @@ noinst_PROGRAMS = test_system \
|
|
39
39
|
test_conflate \
|
40
40
|
test_inproc_connect \
|
41
41
|
test_issue_566 \
|
42
|
-
test_abstract_ipc
|
42
|
+
test_abstract_ipc \
|
43
|
+
test_many_sockets
|
43
44
|
|
44
45
|
if !ON_MINGW
|
45
46
|
noinst_PROGRAMS += test_shutdown_stress \
|
@@ -58,7 +59,6 @@ test_hwm_SOURCES = test_hwm.cpp
|
|
58
59
|
test_reqrep_device_SOURCES = test_reqrep_device.cpp
|
59
60
|
test_sub_forward_SOURCES = test_sub_forward.cpp
|
60
61
|
test_invalid_rep_SOURCES = test_invalid_rep.cpp
|
61
|
-
test_linger_SOURCES = test_linger.cpp
|
62
62
|
test_msg_flags_SOURCES = test_msg_flags.cpp
|
63
63
|
test_connect_resolve_SOURCES = test_connect_resolve.cpp
|
64
64
|
test_immediate_SOURCES = test_immediate.cpp
|
@@ -66,6 +66,7 @@ test_last_endpoint_SOURCES = test_last_endpoint.cpp
|
|
66
66
|
test_term_endpoint_SOURCES = test_term_endpoint.cpp
|
67
67
|
test_monitor_SOURCES = test_monitor.cpp
|
68
68
|
test_router_mandatory_SOURCES = test_router_mandatory.cpp
|
69
|
+
test_router_raw_empty_SOURCES = test_router_raw_empty.cpp
|
69
70
|
test_probe_router_SOURCES = test_probe_router.cpp
|
70
71
|
test_stream_SOURCES = test_stream.cpp
|
71
72
|
test_disconnect_inproc_SOURCES = test_disconnect_inproc.cpp
|
@@ -86,6 +87,7 @@ test_conflate_SOURCES = test_conflate.cpp
|
|
86
87
|
test_inproc_connect_SOURCES = test_inproc_connect.cpp
|
87
88
|
test_issue_566_SOURCES = test_issue_566.cpp
|
88
89
|
test_abstract_ipc_SOURCES = test_abstract_ipc.cpp
|
90
|
+
test_many_sockets_SOURCES = test_many_sockets.cpp
|
89
91
|
if !ON_MINGW
|
90
92
|
test_shutdown_stress_SOURCES = test_shutdown_stress.cpp
|
91
93
|
test_pair_ipc_SOURCES = test_pair_ipc.cpp testutil.hpp
|
@@ -96,8 +98,7 @@ endif
|
|
96
98
|
|
97
99
|
# Run the test cases
|
98
100
|
TESTS = $(noinst_PROGRAMS)
|
99
|
-
XFAIL_TESTS = test_linger
|
100
101
|
|
101
102
|
if !ON_LINUX
|
102
|
-
XFAIL_TESTS
|
103
|
+
XFAIL_TESTS = test_abstract_ipc
|
103
104
|
endif
|