test_stream_exceeds_buffer.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 
9 
11 {
12  const int msgsize = 8193;
13  char sndbuf[msgsize] = "\xde\xad\xbe\xef";
14  unsigned char rcvbuf[msgsize];
16 
17  int server_sock = bind_socket_resolve_port ("127.0.0.1", "0", my_endpoint);
18 
19  void *zsock = test_context_socket (ZMQ_STREAM);
21 
22  int client_sock =
24 
26 
27  TEST_ASSERT_EQUAL_INT (msgsize, send (client_sock, sndbuf, msgsize, 0));
28 
29  zmq_msg_t msg;
30  zmq_msg_init (&msg);
31 
32  int rcvbytes = 0;
33  while (rcvbytes == 0) // skip connection notification, if any
34  {
35  TEST_ASSERT_SUCCESS_ERRNO (zmq_msg_recv (&msg, zsock, 0)); // peerid
37  rcvbytes = TEST_ASSERT_SUCCESS_ERRNO (zmq_msg_recv (&msg, zsock, 0));
39  }
40 
41  // for this test, we only collect the first chunk
42  // since the corruption already occurs in the first chunk
43  memcpy (rcvbuf, zmq_msg_data (&msg), zmq_msg_size (&msg));
44 
45  zmq_msg_close (&msg);
47  close (client_sock);
48 
49  TEST_ASSERT_GREATER_OR_EQUAL (4, rcvbytes);
50 
51  // notice that only the 1st byte gets corrupted
52  TEST_ASSERT_EQUAL_UINT (0xef, rcvbuf[3]);
53  TEST_ASSERT_EQUAL_UINT (0xbe, rcvbuf[2]);
54  TEST_ASSERT_EQUAL_UINT (0xad, rcvbuf[1]);
55  TEST_ASSERT_EQUAL_UINT (0xde, rcvbuf[0]);
56 }
57 
58 int main ()
59 {
60  UNITY_BEGIN ();
62  return UNITY_END ();
63 }
NULL
NULL
Definition: test_security_zap.cpp:405
UNITY_END
return UNITY_END()
ZMQ_STREAM
#define ZMQ_STREAM
Definition: zmq.h:269
server_sock
void * server_sock
Definition: test_multithread.cpp:78
TEST_ASSERT_TRUE
#define TEST_ASSERT_TRUE(condition)
Definition: unity.h:121
RUN_TEST
#define RUN_TEST(func)
Definition: unity_internals.h:615
TEST_ASSERT_EQUAL_UINT
#define TEST_ASSERT_EQUAL_UINT(expected, actual)
Definition: unity.h:135
SETUP_TEARDOWN_TESTCONTEXT
#define SETUP_TEARDOWN_TESTCONTEXT
Definition: testutil_unity.hpp:172
send
void send(fd_t fd_, const char(&data_)[N])
Definition: test_security_curve.cpp:209
TEST_ASSERT_FALSE
#define TEST_ASSERT_FALSE(condition)
Definition: unity.h:123
zmq_msg_data
ZMQ_EXPORT void * zmq_msg_data(zmq_msg_t *msg_)
Definition: zmq.cpp:642
zmq_connect
ZMQ_EXPORT int zmq_connect(void *s_, const char *addr_)
Definition: zmq.cpp:307
zmq_msg_size
ZMQ_EXPORT size_t zmq_msg_size(const zmq_msg_t *msg_)
Definition: zmq.cpp:647
testutil_unity.hpp
TEST_ASSERT_SUCCESS_RAW_ERRNO
#define TEST_ASSERT_SUCCESS_RAW_ERRNO(expr)
Definition: testutil_unity.hpp:69
testutil.hpp
zmq_msg_t
Definition: zmq.h:218
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
zmq_msg_recv
ZMQ_EXPORT int zmq_msg_recv(zmq_msg_t *msg_, void *s_, int flags_)
Definition: zmq.cpp:617
test_context_socket
void * test_context_socket(int type_)
Definition: testutil_unity.cpp:200
TEST_ASSERT_EQUAL_INT
#define TEST_ASSERT_EQUAL_INT(expected, actual)
Definition: unity.h:128
zmq_msg_init
ZMQ_EXPORT int zmq_msg_init(zmq_msg_t *msg_)
Definition: zmq.cpp:587
test_stream_exceeds_buffer
SETUP_TEARDOWN_TESTCONTEXT void test_stream_exceeds_buffer()
Definition: test_stream_exceeds_buffer.cpp:10
UNITY_BEGIN
UNITY_BEGIN()
TEST_ASSERT_GREATER_OR_EQUAL
#define TEST_ASSERT_GREATER_OR_EQUAL(threshold, actual)
Definition: unity.h:184
main
int main()
Definition: test_stream_exceeds_buffer.cpp:58
zmq_msg_more
ZMQ_EXPORT int zmq_msg_more(const zmq_msg_t *msg_)
Definition: zmq.cpp:652
test_context_socket_close
void * test_context_socket_close(void *socket_)
Definition: testutil_unity.cpp:208
zmq_msg_close
ZMQ_EXPORT int zmq_msg_close(zmq_msg_t *msg_)
Definition: zmq.cpp:625
TEST_ASSERT_SUCCESS_ERRNO
#define TEST_ASSERT_SUCCESS_ERRNO(expr)
Definition: proxy_thr.cpp:47
bind_socket_resolve_port
fd_t bind_socket_resolve_port(const char *address_, const char *port_, char *my_endpoint_, const int af_, const int protocol_)
Definition: testutil.cpp:410


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