test_zmq_ppoll_fd.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MPL-2.0 */
2 
3 #include "testutil.hpp"
4 #include "testutil_unity.hpp"
5 
6 #include <string.h>
7 
8 #ifndef _WIN32
9 #include <netdb.h>
10 #include <unistd.h>
11 #endif
12 
14 
16 {
17 #ifdef ZMQ_HAVE_PPOLL
18  int recv_socket = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP);
19  TEST_ASSERT_NOT_EQUAL (-1, recv_socket);
20 
21  int flag = 1;
23  setsockopt (recv_socket, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof (int)));
24 
25  struct sockaddr_in saddr = bind_bsd_socket (recv_socket);
26 
27  void *sb = test_context_socket (ZMQ_REP);
28 
29  TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (sb, "tcp://127.0.0.1:*"));
30 
31  zmq_pollitem_t pollitems[] = {
32  {sb, 0, ZMQ_POLLIN, 0},
33  {NULL, recv_socket, ZMQ_POLLIN, 0},
34  };
35 
36  int send_socket = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP);
37  TEST_ASSERT_NOT_EQUAL (-1, send_socket);
38 
39  char buf[10];
40  memset (buf, 1, 10);
41 
43  send_socket, buf, 10, 0, (struct sockaddr *) &saddr, sizeof (saddr)));
44 
45  TEST_ASSERT_EQUAL (1, zmq_ppoll (pollitems, 2, 1, NULL));
46  TEST_ASSERT_BITS_LOW (ZMQ_POLLIN, pollitems[0].revents);
47  TEST_ASSERT_BITS_HIGH (ZMQ_POLLIN, pollitems[1].revents);
48 
50 
51  close (send_socket);
52  close (recv_socket);
53 #else
54  TEST_IGNORE_MESSAGE ("libzmq without zmq_ppoll, ignoring test");
55 #endif // ZMQ_HAVE_PPOLL
56 }
57 
58 int main ()
59 {
60  UNITY_BEGIN ();
62  return UNITY_END ();
63 }
main
int main()
Definition: test_zmq_ppoll_fd.cpp:58
NULL
NULL
Definition: test_security_zap.cpp:405
UNITY_END
return UNITY_END()
RUN_TEST
#define RUN_TEST(func)
Definition: unity_internals.h:615
SETUP_TEARDOWN_TESTCONTEXT
#define SETUP_TEARDOWN_TESTCONTEXT
Definition: testutil_unity.hpp:172
zmq_pollitem_t
Definition: zmq.h:487
TEST_ASSERT_NOT_EQUAL
#define TEST_ASSERT_NOT_EQUAL(expected, actual)
Definition: unity.h:134
ZMQ_POLLIN
#define ZMQ_POLLIN
Definition: zmq.h:482
zmq_ppoll
int zmq_ppoll(zmq_pollitem_t *items_, int nitems_, long timeout_, const sigset_t *sigmask_)
Definition: zmq.cpp:1355
bind_bsd_socket
sockaddr_in bind_bsd_socket(int socket_)
Definition: testutil.cpp:329
testutil_unity.hpp
TEST_ASSERT_BITS_LOW
#define TEST_ASSERT_BITS_LOW(mask, actual)
Definition: unity.h:147
TEST_ASSERT_BITS_HIGH
#define TEST_ASSERT_BITS_HIGH(mask, actual)
Definition: unity.h:146
sb
void * sb
Definition: test_channel.cpp:8
testutil.hpp
ZMQ_REP
#define ZMQ_REP
Definition: zmq.h:262
zmq_bind
ZMQ_EXPORT int zmq_bind(void *s_, const char *addr_)
Definition: zmq.cpp:299
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
buf
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glcorearb.h:4175
TEST_IGNORE_MESSAGE
#define TEST_IGNORE_MESSAGE(message)
Definition: unity.h:103
UNITY_BEGIN
UNITY_BEGIN()
test_ppoll_fd
SETUP_TEARDOWN_TESTCONTEXT void test_ppoll_fd()
Definition: test_zmq_ppoll_fd.cpp:15
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


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