The branch, master has been updated via 789118a tests: Add an ifdef around static IPv6 only functions via b11ceab tests: Add test_echo_tcp_write_readv from 7d0e5ef tests: Use torture_server_(address|port).
http://gitweb.samba.org/?p=socket_wrapper.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 789118aee6683b8bfafac4ea24c6c9a160ad9e59 Author: Jakub Hrozek <jhro...@redhat.com> Date: Fri Dec 20 16:53:59 2013 +0100 tests: Add an ifdef around static IPv6 only functions This would prevent an uninitialized function warning in case IPv6 was not available. commit b11ceabbfc505ab08f101d4a5ca6b498c30c98d1 Author: Jakub Hrozek <jhro...@redhat.com> Date: Fri Dec 20 16:50:42 2013 +0100 tests: Add test_echo_tcp_write_readv ----------------------------------------------------------------------- Summary of changes: tests/CMakeLists.txt | 2 +- tests/test_echo_tcp_write_read.c | 2 + ...p_write_read.c => test_echo_tcp_writev_readv.c} | 88 +++++++++++++------ tests/test_echo_udp_send_recv.c | 2 + tests/test_echo_udp_sendto_recvfrom.c | 2 + 5 files changed, 67 insertions(+), 29 deletions(-) copy tests/{test_echo_tcp_write_read.c => test_echo_tcp_writev_readv.c} (50%) Changeset truncated at 500 lines: diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 63b0046..23f362d 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -17,7 +17,7 @@ target_link_libraries(${TORTURE_LIBRARY} ${CMOCKA_LIBRARY} ${SWRAP_REQUIRED_LIBRARIES}) -set(SWRAP_TESTS test_ioctl test_echo_udp_sendto_recvfrom test_echo_udp_send_recv test_echo_tcp_write_read) +set(SWRAP_TESTS test_ioctl test_echo_udp_sendto_recvfrom test_echo_udp_send_recv test_echo_tcp_write_read test_echo_tcp_writev_readv) foreach(_SWRAP_TEST ${SWRAP_TESTS}) add_cmocka_test(${_SWRAP_TEST} ${_SWRAP_TEST}.c ${TORTURE_LIBRARY}) diff --git a/tests/test_echo_tcp_write_read.c b/tests/test_echo_tcp_write_read.c index e2ffe91..4437de9 100644 --- a/tests/test_echo_tcp_write_read.c +++ b/tests/test_echo_tcp_write_read.c @@ -20,10 +20,12 @@ static void setup_echo_srv_tcp_ipv4(void **state) torture_setup_echo_srv_tcp_ipv4(state); } +#ifdef HAVE_IPV6 static void setup_echo_srv_tcp_ipv6(void **state) { torture_setup_echo_srv_tcp_ipv6(state); } +#endif static void teardown(void **state) { diff --git a/tests/test_echo_tcp_write_read.c b/tests/test_echo_tcp_writev_readv.c similarity index 50% copy from tests/test_echo_tcp_write_read.c copy to tests/test_echo_tcp_writev_readv.c index e2ffe91..0b6fe1f 100644 --- a/tests/test_echo_tcp_write_read.c +++ b/tests/test_echo_tcp_writev_readv.c @@ -20,17 +20,19 @@ static void setup_echo_srv_tcp_ipv4(void **state) torture_setup_echo_srv_tcp_ipv4(state); } +#ifdef HAVE_IPV6 static void setup_echo_srv_tcp_ipv6(void **state) { torture_setup_echo_srv_tcp_ipv6(state); } +#endif static void teardown(void **state) { torture_teardown_echo_srv(state); } -static void test_write_read_ipv4(void **state) +static void test_writev_readv_ipv4(void **state) { struct sockaddr_in sin; socklen_t slen = sizeof(struct sockaddr_in); @@ -49,37 +51,52 @@ static void test_write_read_ipv4(void **state) sin.sin_port = htons(torture_server_port()); rc = inet_pton(sin.sin_family, - torture_server_address(AF_INET), - &sin.sin_addr); + torture_server_address(AF_INET), + &sin.sin_addr); assert_int_equal(rc, 1); rc = connect(s, (struct sockaddr *)&sin, slen); assert_int_equal(rc, 0); for (i = 0; i < 10; i++) { - char send_buf[64] = {0}; - char recv_buf[64] = {0}; + char send_buf[10][64]; + char recv_buf[10][64]; + struct iovec iov_send[10]; + struct iovec iov_recv[10]; + int j; + + for (j = 0; j < i; j++) { + memset(send_buf[j], 0, 64); + snprintf(send_buf[j], sizeof(send_buf), "packet.%d", j); + + iov_send[j].iov_base = send_buf[j]; + iov_send[j].iov_len = strlen(send_buf[j]); - snprintf(send_buf, sizeof(send_buf), "packet.%d", i); + iov_recv[j].iov_base = recv_buf[j]; + iov_recv[j].iov_len = strlen(send_buf[j]); + } - ret = write(s, - send_buf, - sizeof(send_buf)); + ret = writev(s, iov_send, j); assert_int_not_equal(ret, -1); - ret = read(s, - recv_buf, - sizeof(recv_buf)); + ret = readv(s, iov_recv, j); assert_int_not_equal(ret, -1); - assert_memory_equal(send_buf, recv_buf, sizeof(send_buf)); + for (j = 0; j < i; j++) { + assert_int_equal(iov_send[j].iov_len, + iov_recv[j].iov_len); + + assert_memory_equal(iov_send[j].iov_base, + iov_recv[j].iov_base, + iov_send[j].iov_len); + } } close(s); } #ifdef HAVE_IPV6 -static void test_write_read_ipv6(void **state) +static void test_writev_readv_ipv6(void **state) { struct sockaddr_in6 sin6; socklen_t slen = sizeof(struct sockaddr_in6); @@ -98,30 +115,45 @@ static void test_write_read_ipv6(void **state) sin6.sin6_port = htons(torture_server_port()); rc = inet_pton(AF_INET6, - torture_server_address(AF_INET6), - &sin6.sin6_addr); + torture_server_address(AF_INET6), + &sin6.sin6_addr); assert_int_equal(rc, 1); rc = connect(s, (struct sockaddr *)&sin6, slen); assert_int_equal(rc, 0); for (i = 0; i < 10; i++) { - char send_buf[64] = {0}; - char recv_buf[64] = {0}; + char send_buf[10][64]; + char recv_buf[10][64]; + struct iovec iov_send[10]; + struct iovec iov_recv[10]; + int j; + + for (j = 0; j < i; j++) { + memset(send_buf[j], 0, 64); + snprintf(send_buf[j], sizeof(send_buf), "packet.%d", j); - snprintf(send_buf, sizeof(send_buf), "packet.%d", i); + iov_send[j].iov_base = send_buf[j]; + iov_send[j].iov_len = strlen(send_buf[j]); - ret = write(s, - send_buf, - sizeof(send_buf)); + iov_recv[j].iov_base = recv_buf[j]; + iov_recv[j].iov_len = strlen(send_buf[j]); + } + + ret = writev(s, iov_send, j); assert_int_not_equal(ret, -1); - ret = read(s, - recv_buf, - sizeof(recv_buf)); + ret = readv(s, iov_recv, j); assert_int_not_equal(ret, -1); - assert_memory_equal(send_buf, recv_buf, sizeof(send_buf)); + for (j = 0; j < i; j++) { + assert_int_equal(iov_send[j].iov_len, + iov_recv[j].iov_len); + + assert_memory_equal(iov_send[j].iov_base, + iov_recv[j].iov_base, + iov_send[j].iov_len); + } } close(s); @@ -132,9 +164,9 @@ int main(void) { int rc; const UnitTest tests[] = { - unit_test_setup_teardown(test_write_read_ipv4, setup_echo_srv_tcp_ipv4, teardown), + unit_test_setup_teardown(test_writev_readv_ipv4, setup_echo_srv_tcp_ipv4, teardown), #ifdef HAVE_IPV6 - unit_test_setup_teardown(test_write_read_ipv6, setup_echo_srv_tcp_ipv6, teardown), + unit_test_setup_teardown(test_writev_readv_ipv6, setup_echo_srv_tcp_ipv6, teardown), #endif }; diff --git a/tests/test_echo_udp_send_recv.c b/tests/test_echo_udp_send_recv.c index 4ea6812..9dd208b 100644 --- a/tests/test_echo_udp_send_recv.c +++ b/tests/test_echo_udp_send_recv.c @@ -20,10 +20,12 @@ static void setup_echo_srv_udp_ipv4(void **state) torture_setup_echo_srv_udp_ipv4(state); } +#ifdef HAVE_IPV6 static void setup_echo_srv_udp_ipv6(void **state) { torture_setup_echo_srv_udp_ipv6(state); } +#endif static void teardown(void **state) { diff --git a/tests/test_echo_udp_sendto_recvfrom.c b/tests/test_echo_udp_sendto_recvfrom.c index a7ed474..b0ed24a 100644 --- a/tests/test_echo_udp_sendto_recvfrom.c +++ b/tests/test_echo_udp_sendto_recvfrom.c @@ -20,10 +20,12 @@ static void setup_echo_srv_udp_ipv4(void **state) torture_setup_echo_srv_udp_ipv4(state); } +#ifdef HAVE_IPV6 static void setup_echo_srv_udp_ipv6(void **state) { torture_setup_echo_srv_udp_ipv6(state); } +#endif static void teardown(void **state) { -- Socket Wrapper Repository