From 5ba328d7f3279636f2348a3fc705d798902c970d Mon Sep 17 00:00:00 2001 From: Constantin Rack Date: Fri, 13 Nov 2015 10:41:00 +0100 Subject: [PATCH] Problem: there is no test for setsockopt ZMQ_TCP_SEND/RECV_BUFFER Solution: add test case --- .gitignore | 1 + Makefile.am | 4 ++ tests/CMakeLists.txt | 1 + tests/test_setsockopt.cpp | 78 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 84 insertions(+) create mode 100644 tests/test_setsockopt.cpp diff --git a/.gitignore b/.gitignore index b9895c4a..1efa8ac8 100644 --- a/.gitignore +++ b/.gitignore @@ -114,6 +114,7 @@ test_server_drop_more test_thread_safe test_thread_safe_polling test_getsockopt_memset +test_setsockopt test_stream_exceeds_buffer test_poller tests/test*.log diff --git a/Makefile.am b/Makefile.am index 8b31b1a9..0c8d4982 100644 --- a/Makefile.am +++ b/Makefile.am @@ -351,6 +351,7 @@ test_apps = \ tests/test_proxy_single_socket \ tests/test_proxy_terminate \ tests/test_getsockopt_memset \ + tests/test_setsockopt \ tests/test_many_sockets \ tests/test_ipc_wildcard \ tests/test_diffserv \ @@ -566,6 +567,9 @@ tests_test_thread_safe_LDADD = src/libzmq.la tests_test_socketopt_hwm_SOURCES = tests/test_sockopt_hwm.cpp tests_test_socketopt_hwm_LDADD = src/libzmq.la +tests_test_setsockopt_SOURCES = tests/test_setsockopt.cpp +tests_test_setsockopt_LDADD = src/libzmq.la + tests_test_heartbeats_SOURCES = tests/test_heartbeats.cpp tests_test_heartbeats_LDADD = src/libzmq.la diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 1f0a3759..e47e289f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -50,6 +50,7 @@ set(tests test_pub_invert_matching test_thread_safe test_client_server + test_setsockopt test_sockopt_hwm test_heartbeats test_poller diff --git a/tests/test_setsockopt.cpp b/tests/test_setsockopt.cpp new file mode 100644 index 00000000..2a91df61 --- /dev/null +++ b/tests/test_setsockopt.cpp @@ -0,0 +1,78 @@ +#include "testutil.hpp" + +void test_setsockopt_tcp_recv_buffer() +{ + int rc; + void *ctx = zmq_ctx_new(); + void *socket = zmq_socket(ctx, ZMQ_PUSH); + + int val = 0; + size_t placeholder = sizeof(val); + + rc = zmq_getsockopt(socket, ZMQ_TCP_RECV_BUFFER, &val, &placeholder); + assert(rc == 0); + assert(val == 8192); + + rc = zmq_setsockopt(socket, ZMQ_TCP_RECV_BUFFER, &val, sizeof(val)); + assert(rc == 0); + assert(val == 8192); + + rc = zmq_getsockopt(socket, ZMQ_TCP_RECV_BUFFER, &val, &placeholder); + assert(rc == 0); + assert(val == 8192); + + val = 16384; + + rc = zmq_setsockopt(socket, ZMQ_TCP_RECV_BUFFER, &val, sizeof(val)); + assert(rc == 0); + assert(val == 16384); + + rc = zmq_getsockopt(socket, ZMQ_TCP_RECV_BUFFER, &val, &placeholder); + assert(rc == 0); + assert(val == 16384); + + zmq_close(socket); + zmq_ctx_term(ctx); +} + +void test_setsockopt_tcp_send_buffer() +{ + int rc; + void *ctx = zmq_ctx_new(); + void *socket = zmq_socket(ctx, ZMQ_PUSH); + + int val = 0; + size_t placeholder = sizeof(val); + + rc = zmq_getsockopt(socket, ZMQ_TCP_SEND_BUFFER, &val, &placeholder); + assert(rc == 0); + assert(val == 8192); + + rc = zmq_setsockopt(socket, ZMQ_TCP_SEND_BUFFER, &val, sizeof(val)); + assert(rc == 0); + assert(val == 8192); + + rc = zmq_getsockopt(socket, ZMQ_TCP_SEND_BUFFER, &val, &placeholder); + assert(rc == 0); + assert(val == 8192); + + val = 16384; + + rc = zmq_setsockopt(socket, ZMQ_TCP_SEND_BUFFER, &val, sizeof(val)); + assert(rc == 0); + assert(val == 16384); + + rc = zmq_getsockopt(socket, ZMQ_TCP_SEND_BUFFER, &val, &placeholder); + assert(rc == 0); + assert(val == 16384); + + zmq_close(socket); + zmq_ctx_term(ctx); +} + + +int main() +{ + test_setsockopt_tcp_recv_buffer(); + test_setsockopt_tcp_send_buffer(); +}