Commit Graph

99 Commits

Author SHA1 Message Date
Stefan Radomski
66c22456b9 Close pipes for inproc sockets on zmq_disconnect
- fixes LIBZMQ-476 and LIBZMQ-475
2012-12-04 15:14:21 +01:00
Ian Barber
75161b5c62 Serialise test_connect_delay
Simplify the test connect delay test script, removing the threads and
moving to a serialised version. AFAICS this should provide the same
test, but without the race conditions that happened with the previous
test.
2012-11-30 23:07:12 +00:00
Christopher Dolan
6559da3033 Use memset/memmove rather than bzero/bcopy 2012-11-13 19:33:18 +00:00
Martin Hurton
aec47b3642 Extend ZMQ_ROUTER_RAW test
Add test when the zeromq socket connects to a TCP socket.
The test now fails due to bug in the zeromq library.
2012-11-08 19:05:27 +01:00
Pieter Hintjens
777c38ae32 Renamed raw option to ZMQ_ROUTER_RAW 2012-11-06 13:18:58 +01:00
Martin Hurton
9d8eb1f9b9 Style fixes 2012-10-30 12:18:30 +01:00
Martin Hurton
d16e0a5342 Resolve LIBZMQ-458
Ref: https://zeromq.jira.com/browse/LIBZMQ-458
2012-10-30 11:03:43 +01:00
Hardeep
83387b4073 Added support for non-zmq tcp client connections to router socket.
- Created a new option ZMQ_ROUTER_RAW_SOCK
    - Added new raw_encoder and raw_decoder to receive and send messages in raw form to remote client
    - Added test case file tests/test_raw_sock.cpp

    o To create a raw router sock set the ZMQ_ROUTER_RAW_SOCK option
    o ZMQ_MSGMORE flag is ignored for non-id messages
    o To terminate a remote connection send id message followed by zero length data message
2012-10-29 00:03:36 -07:00
Martin Hurton
ef794925b4 Resolve LIBZMQ-452
Ref: https://zeromq.jira.com/browse/LIBZMQ-452
2012-10-25 09:13:48 +02:00
Pieter Hintjens
983ee761b1 Renamed ZMQ_ROUTER_BEHAVIOR to ZMQ_ROUTER_MANDATORY for clarity 2012-10-08 16:36:35 +09:00
Lourens Naudé
8a57e4a5d7 Merge branch 'master' into fix-monitor 2012-09-21 12:55:01 +01:00
Lourens Naudé
759d453368 Significantly reworked the monitoring infrastructure with a more granular per socket API and to play well with monitoring endpoints in application threads 2012-09-21 12:53:31 +01:00
Joshua Gao
67d88bcb41 Add pthread.h include to test_connect_delay.cpp
This test case uses pthreads, but doesn't include the header.
2012-09-18 13:46:48 -07:00
Arthur O'Dwyer
cf20932df0 Add "#undef NDEBUG" to all tests.
This change makes sure that even if the tests are built in a
"release" configuration (with optimizations and NDEBUG turned on),
the assertions won't get compiled out of the tests themselves.

The C standard guarantees that the most recent inclusion of
<assert.h> is the one that counts, so it's important that the
"#undef NDEBUG/#include <assert.h>" come as the last thing in
the block of header files.

"testutil.hpp" includes <assert.h>, so I've left <assert.h> out
of any test that #includes "testutil.hpp", just for the sake of
brevity.
2012-09-06 10:03:12 -07:00
Ian Barber
d7331b7b1f Fixing PGM issues
Hopefully fixed LIBZMQ-427 - there was a slight typo in the init_address
refactor. The encoder refactoring had also broken pgm_sender and
receiver, but just required updating to use the new functions.
2012-09-04 23:24:48 +01:00
Arthur O'Dwyer
08f6a9e7e8 Remove unused argc/argv parameters in tests. 2012-08-27 16:10:47 -07:00
Arthur O'Dwyer
c29aef4dd8 Verify the value of the "void *s" passed to the monitor function.
This formerly unused parameter actually represents the socket
on which the event was received. As such, we should check that
its value makes sense: it must be either "rep" or "req", and in
the case of some kinds of events, it must be specifically one
or the other.

After this change, "s" is no longer unused.
2012-08-27 16:06:51 -07:00
Arthur O'Dwyer
f718d2bead Fix a bug reported on the mailing list.
Both memcmp and strcmp return zero on equal, nonzero on nonequal;
so all of these tests were backwards.

The original committer fixed the failure by comparing 22 bytes instead
of the correct 21, so that the assertions would trigger only if the
22nd byte happened to match exactly --- which was rare.

The correct fix is to compare the right number of bytes with the
right sense.  (I think all of the ".addr" fields are null-terminated,
in which case it's more appropriate to use strcmp throughout.)
2012-08-23 12:56:00 -07:00
Lourens Naudé
9dc248f6ab Fix invalid address metadata for ZMQ_EVENT_DISCONNECTED 2012-08-04 11:41:33 +01:00
Kobolog
08749c8e7b Removed an unneeded include in tests 2012-06-17 02:38:15 +04:00
Kobolog
6da48aed3a Fixed tests 2012-06-17 02:36:08 +04:00
Kobolog
829d0003be Verbose ROUTER socket behavior patch 2012-06-17 02:33:43 +04:00
Ian Barber
c7c834a945 Add unistd header to test_connect_delay header
For sleep and usleep
2012-06-13 12:18:22 +01:00
Ian Barber
35c55a2cde Add newline to end of test_connect_delay file 2012-06-13 07:47:18 +01:00
Ian Barber
e5904e63ce Allow blocking while connect() is completing
This patch, salvaged from a trainwreck accidental merge earlier, adds a
new sockopt, ZMQ_DELAY_ATTACH_ON_CONNECT which prevents a end point
being available to push messages to until it has fully connected, making
connect work more like bind. This also applies to reconnecting sockets,
which may cause message loss of in-queue messages, so it is sensible to
use this in conjunction with a low HWM and potentially an alternative
acknowledgement path.

Notes on most of the individual commits can be found the repository log.
2012-06-12 15:34:48 +01:00
Ian Barber
409d5e8fff Allow blocking while connect() is completing
This patch, salvaged from a trainwreck accidental merge earlier, adds a
new sockopt, ZMQ_DELAY_ATTACH_ON_CONNECT which prevents a end point
being available to push messages to until it has fully connected, making
connect work more like bind. This also applies to reconnecting sockets,
which may cause message loss of in-queue messages, so it is sensible to
use this in conjunction with a low HWM and potentially an alternative
acknowledgement path.

Notes on most of the individual commits can be found the repository log.
2012-06-12 15:31:23 +01:00
Ian Barber
95cbad3841 Revert "After speaking with Ben Gray and the discussion on the mailing list, this is an attempt to create a sockopt to allow connecting pipes to not immediately be available for traffic. The problem is in a PUSH to many PULL situation, where there is a connect to a PULL which is not there. This connect will immediately create a pipe (unlike bind), and traffic will be load balanced to that pipe. This means if there is a persistently unavailable end point then the traffic will queue until HWM is hit, and older messages will be lost."
This reverts commit fe3fb419fe.
2012-06-12 14:53:57 +01:00
Ian Barber
81b8362a59 Revert "Fix a number of whitespace issues in various parts of the code, add validation to most calls on the test and take a first stab at implementing the reconnection pipe blocking."
This reverts commit 6f6466f088.
2012-06-12 14:51:50 +01:00
Ian Barber
6c382c5c61 Revert "Fix whitespace in test"
This reverts commit 0b3478d6ec.
2012-06-12 14:51:19 +01:00
Ian Barber
4aaf3e6389 Revert "Add disconnect test"
This reverts commit d8f3487ee1.
2012-06-12 14:44:12 +01:00
Ian Barber
eb14890d23 Revert "Revert "Merge branch 'master' of github.com:ianbarber/libzmq""
This reverts commit 029d3dfae2.
2012-06-12 14:43:18 +01:00
Ian Barber
029d3dfae2 Revert "Merge branch 'master' of github.com:ianbarber/libzmq"
This reverts commit 3345902979, reversing
changes made to 889b0e6f29.
2012-06-12 14:13:17 +01:00
Ian Barber
6117a2b099 Revert "Replace incomplete count with a std::set"
This reverts commit 4aa5ba3d11.
Unintentional merge
2012-06-12 14:07:54 +01:00
Ian Barber
4aa5ba3d11 Replace incomplete count with a std::set
This commit removes the countdown flag and adds a set to store the pipes
that are currently being disconnected.
2012-06-12 12:13:21 +01:00
Ian Barber
d8f3487ee1 Add disconnect test
Add a new section to the connect delay test that disconnects and
reconnects a socket to ensure that some messages are appropriately
blocked.
2012-06-11 20:04:09 +01:00
Ian Barber
0bf1d0262e Merge branch 'master' of https://github.com/zeromq/libzmq 2012-06-08 23:55:58 +01:00
Hiten P
31cb1f297d Change connection failure test to use an invalid hostname
- invalid hostname set to 0mq.is.the.best (naturally!)
- issue happens as other valid-like non-existent hostnames were
  redirected by buggy Cable/ISP DNS servers
2012-06-08 13:15:45 +01:00
Ian Barber
09d18e4b3c Merge branch 'master' of https://github.com/zeromq/libzmq 2012-06-05 18:32:15 +01:00
AJ Lewis
3687789f9d Fix build on RHEL5 and SLES10
GCC 4.1.2 on RHEL5 and SLES10 don't like not having a newline at the
end of a source file, and error out if it's missing.

Signed-off-by: AJ Lewis <aj.lewis@quantum.com>
2012-06-05 09:22:22 -05:00
Ian Barber
0b3478d6ec Fix whitespace in test 2012-06-03 23:11:08 +01:00
Ian Barber
6f6466f088 Fix a number of whitespace issues in various parts of the code, add validation to most calls on the test and take a first stab at implementing the reconnection pipe blocking.
It didn't seem straightforward to use any of the existing process calls, so I have added a new command to command_t and friends called detach. This instructs the socket_base to remove the pipe from it's pipe list. The session base stores a copy of the outpipe, and will resend the bind command on reconnection. This should allow balancing again.
2012-06-03 22:57:47 +01:00
Ian Barber
fe3fb419fe After speaking with Ben Gray and the discussion on the mailing list, this is an attempt to create a sockopt to allow connecting pipes to not immediately be available for traffic. The problem is in a PUSH to many PULL situation, where there is a connect to a PULL which is not there. This connect will immediately create a pipe (unlike bind), and traffic will be load balanced to that pipe. This means if there is a persistently unavailable end point then the traffic will queue until HWM is hit, and older messages will be lost.
This patch adds a sockopt ZMQ_DELAY_ATTACH_ON_CONNECT, which if set to 1 will attempt to preempt this behavior. It does this by extending the use of the session_base to include in the outbound as well as the inbound pipe, and only associates the pipe with the socket once it receives the connected callback via a process_attach message. This works, and a test has been added to show so, but may introduce unexpected complications. The shutdown logic in this class has become marginally more awkward because of this, requiring the session to serve as the sink for both pipes if shutdown occurs with a still-connecting pipe in place. It is also possible there could be issues around flushing the messages, but as I could not directly think how to create such an issue I have not written any code with regards to that.

The documentation has been updated to reflect the change, but please do check over the code and test and review.
2012-06-01 17:58:19 +01:00
Lourens Naudé
991b7fcc04 Rename zmq_monitor to zmq_ctx_set_monitor for compat with existing context specific APIs 2012-05-22 20:15:18 +01:00
Lourens Naudé
4767159f39 Initial stab at a context level monitor callback and registration API 2012-05-21 20:47:11 +01:00
Lourens Naudé
e13b3723b8 Rename type zmq_monitor_fn -> zmq_monitor for a more natural callback definition API (zmq_monitor type, monitor.function callback) 2012-05-20 18:27:59 +01:00
Lourens Naudé
06cce15479 Change zmq_monitor_fn type to cast between pointer-to-object and pointer-to-function in a more standards compliant way 2012-05-20 18:22:13 +01:00
KennyTM~
c995de6584 Allow the ZMQ_MONITOR code compilable on gcc 4.7 on Linux.
The current ZMQ_MONITOR code does not compile in gcc 4.7, as -pedantic
and -Werror are enabled, and ISO C++ doesn't allow casting between
normal pointers (void*) and function pointers, as pedantically their
size could be different. This caused the library not compilable. This
commit workaround the problem by introducing one more indirection, i.e.
instead of calling

    (void *)listener

which is an error, we have to use

    *(void **)&listener

which is an undefined behavior :) but works on most platforms

Also, `optval_ = monitor` will not set the parameter in getsockopt(),
and the extra casting caused the LHS to be an rvalue which again makes
the code not compilable. The proper way is to pass a pointer of function
pointer and assign with indirection, i.e. `*optval_ = monitor`.

Also, fixed an asciidoc error in zmq_getsockopt.txt because the `~~~~`
is too long.
2012-05-13 20:49:05 +08:00
Lourens Naudé
5c6f72c17c ZMQ_MONITOR socket option registers a callback / event sink for changes in socket state 2012-05-04 02:32:46 +01:00
Martin Hurton
873abdd24c Rename XREP/XREQ to ROUTER/DEALER in tests 2012-04-25 01:05:38 +02:00
Sergey KHripchenko
4f668ad60a added zmq_unbind() / zmq_disconnect() test script.
it works but rises very serious questions.

Please add license header by your choice.
This file for 99% resemble crossroads-io/tests/shutdown.cpp
2012-04-21 18:39:19 +04:00