30 #ifndef __TESTUTIL_HPP_INCLUDED__ 31 #define __TESTUTIL_HPP_INCLUDED__ 33 #if defined ZMQ_CUSTOM_PLATFORM_HPP 34 # include "platform.hpp" 36 # include "../src/platform.hpp" 38 #include "../include/zmq.h" 39 #include "../src/stdint.hpp" 44 #define SETTLE_TIME 300 // In msec 57 # pragma warning(disable:4996) 64 # include <sys/wait.h> 65 # include <sys/socket.h> 66 # include <netinet/in.h> 67 # include <arpa/inet.h> 75 const char *content =
"12345678ABCDEFGH12345678abcdefgh";
80 rc =
zmq_send (client, content, 32, 0);
85 rc =
zmq_recv (server, buffer, 32, 0);
88 assert (memcmp (buffer, content, 32) == 0);
90 size_t sz =
sizeof (rcvmore);
94 rc =
zmq_recv (server, buffer, 32, 0);
97 assert (memcmp (buffer, content, 32) == 0);
105 rc =
zmq_send (server, buffer, 32, 0);
109 rc =
zmq_recv (client, buffer, 32, 0);
112 assert (memcmp (buffer, content, 32) == 0);
116 rc =
zmq_recv (client, buffer, 32, 0);
119 assert (memcmp (buffer, content, 32) == 0);
130 const char *content =
"12345678ABCDEFGH12345678abcdefgh";
138 assert ((rc == 32) || ((rc == -1) && (errno == EAGAIN)));
139 rc =
zmq_send (client, content, 32, 0);
140 assert ((rc == 32) || ((rc == -1) && (errno == EAGAIN)));
145 rc =
zmq_recv (server, buffer, 32, 0);
154 assert (rc == 32 || (rc == -1 &&
zmq_errno () == EAGAIN));
155 rc =
zmq_send (server, content, 32, 0);
156 assert (rc == 32 || (rc == -1 &&
zmq_errno () == EAGAIN));
161 rc =
zmq_recv (client, buffer, 32, 0);
178 return strdup (buffer);
183 s_send (
void *socket,
const char *
string) {
184 int size =
zmq_send (socket,
string, strlen (
string), 0);
195 #define streq(s1,s2) (!strcmp ((s1), (s2))) 196 #define strneq(s1,s2) (strcmp ((s1), (s2))) 208 va_start (ap, socket);
209 const char * data = va_arg (ap,
const char *);
212 const char * prev = data;
213 data = va_arg (ap,
const char *);
242 size_t more_size =
sizeof(more);
245 va_start (ap, socket);
246 const char * data = va_arg (ap,
const char *);
255 assert (strcmp (data, (
const char *)
zmq_msg_data (&msg)) == 0);
257 data = va_arg (ap,
const char *);
263 assert (!more == end);
279 assert (rc == 0 || errno ==
ETERM);
288 # if defined _MSC_VER 289 _set_abort_behavior( 0, _WRITE_ABORT_MSG);
290 _CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE );
291 _CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDERR );
294 #if defined ZMQ_HAVE_CYGWIN 298 # if !defined ZMQ_DISABLE_TEST_TIMEOUT 307 signal(SIGPIPE, SIG_IGN);
318 #ifdef ZMQ_HAVE_WINDOWS 319 Sleep (milliseconds);
321 usleep (static_cast <useconds_t> (milliseconds) * 1000);
331 struct sockaddr_in6 test_addr;
333 memset (&test_addr, 0,
sizeof (test_addr));
334 test_addr.sin6_family = AF_INET6;
335 inet_pton (AF_INET6,
"::1", &(test_addr.sin6_addr));
337 #ifdef ZMQ_HAVE_WINDOWS 338 SOCKET fd = socket (AF_INET6, SOCK_STREAM, IPPROTO_IP);
339 if (fd == INVALID_SOCKET)
342 setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (
const char *)&ipv6,
sizeof(
int));
343 rc = setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (
const char *)&ipv6,
sizeof(
int));
344 if (rc == SOCKET_ERROR)
347 rc =
bind (fd, (
struct sockaddr *)&test_addr,
sizeof (test_addr));
348 if (rc == SOCKET_ERROR)
354 int fd = socket (AF_INET6, SOCK_STREAM, IPPROTO_IP);
358 setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &ipv6,
sizeof(
int));
359 rc = setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &ipv6,
sizeof(
int));
363 rc =
bind (fd, (
struct sockaddr *)&test_addr,
sizeof (test_addr));
void msleep(int milliseconds)
ZMQ_EXPORT int zmq_setsockopt(void *s, int option, const void *optval, size_t optvallen)
int s_sendmore(void *socket, const char *string)
int is_ipv6_available(void)
void setup_test_environment(void)
ZMQ_EXPORT int zmq_recv(void *s, void *buf, size_t len, int flags)
void expect_bounce_fail(void *server, void *client)
ZMQ_EXPORT int zmq_errno(void)
ZMQ_EXPORT void * zmq_msg_data(zmq_msg_t *msg)
ZMQ_EXPORT int zmq_getsockopt(void *s, int option, void *optval, size_t *optvallen)
ZMQ_EXPORT int zmq_close(void *s)
ZMQ_EXPORT int zmq_msg_recv(zmq_msg_t *msg, void *s, int flags)
char * s_recv(void *socket)
ZMQ_EXPORT int zmq_send(void *s, const void *buf, size_t len, int flags)
void close_zero_linger(void *socket)
void bounce(void *server, void *client)
void s_recv_seq(void *socket,...)
int s_send(void *socket, const char *string)
ZMQ_EXPORT int zmq_msg_close(zmq_msg_t *msg)
void s_send_seq(void *socket,...)
ZMQ_EXPORT size_t zmq_msg_size(zmq_msg_t *msg)
ZMQ_EXPORT int zmq_msg_init(zmq_msg_t *msg)