From: Stefan Metzmacher Date: Fri, 5 Feb 2021 13:40:45 +0000 (+0100) Subject: test_echo_tcp_sendmsg_recvmsg_fd: add test_tcp_sendmsg_recvmsg_fd_different() tests X-Git-Tag: socket_wrapper-1.3.1~2 X-Git-Url: http://git.samba.org/?p=socket_wrapper.git;a=commitdiff_plain;h=b35e3ce2e2b78fb7a1ccf6d5e011239c14fe27a9 test_echo_tcp_sendmsg_recvmsg_fd: add test_tcp_sendmsg_recvmsg_fd_different() tests Signed-off-by: Stefan Metzmacher Reviewed-by: Andreas Schneider --- diff --git a/tests/test_echo_tcp_sendmsg_recvmsg_fd.c b/tests/test_echo_tcp_sendmsg_recvmsg_fd.c index 9f0ac85..f683892 100644 --- a/tests/test_echo_tcp_sendmsg_recvmsg_fd.c +++ b/tests/test_echo_tcp_sendmsg_recvmsg_fd.c @@ -307,6 +307,73 @@ static void test_tcp_sendmsg_recvmsg_fd_6s(void **state) test_tcp_sendmsg_recvmsg_fd_same(6); } +static void test_tcp_sendmsg_recvmsg_fd_different(size_t num_fds) +{ + int fd_array[num_fds]; + size_t idx; + + for (idx = 0; idx < num_fds; idx++) { + struct torture_address addr = { + .sa_socklen = sizeof(struct sockaddr_in), + }; + int pass_sock_fd; + int rc; + + /* create socket file descriptor to be passed */ + pass_sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + assert_int_not_equal(pass_sock_fd, -1); + + addr.sa.in.sin_family = AF_INET; + addr.sa.in.sin_port = htons(torture_server_port()); + + rc = inet_pton(addr.sa.in.sin_family, + torture_server_address(AF_INET), + &addr.sa.in.sin_addr); + assert_int_equal(rc, 1); + + rc = connect(pass_sock_fd, &addr.sa.s, addr.sa_socklen); + assert_int_equal(rc, 0); + + fd_array[idx] = pass_sock_fd; + } + + test_tcp_sendmsg_recvmsg_fd_array(fd_array, num_fds); + + for (idx = 0; idx < num_fds; idx++) { + close(fd_array[idx]); + } +} + +static void test_tcp_sendmsg_recvmsg_fd_2d(void **state) +{ + (void) state; /* unused */ + test_tcp_sendmsg_recvmsg_fd_different(2); +} + +static void test_tcp_sendmsg_recvmsg_fd_3d(void **state) +{ + (void) state; /* unused */ + test_tcp_sendmsg_recvmsg_fd_different(3); +} + +static void test_tcp_sendmsg_recvmsg_fd_4d(void **state) +{ + (void) state; /* unused */ + test_tcp_sendmsg_recvmsg_fd_different(4); +} + +static void test_tcp_sendmsg_recvmsg_fd_5d(void **state) +{ + (void) state; /* unused */ + test_tcp_sendmsg_recvmsg_fd_different(5); +} + +static void test_tcp_sendmsg_recvmsg_fd_6d(void **state) +{ + (void) state; /* unused */ + test_tcp_sendmsg_recvmsg_fd_different(6); +} + int main(void) { int rc; @@ -329,6 +396,21 @@ int main(void) { cmocka_unit_test_setup_teardown(test_tcp_sendmsg_recvmsg_fd_6s, setup_echo_srv_tcp_ipv4, teardown), + cmocka_unit_test_setup_teardown(test_tcp_sendmsg_recvmsg_fd_2d, + setup_echo_srv_tcp_ipv4, + teardown), + cmocka_unit_test_setup_teardown(test_tcp_sendmsg_recvmsg_fd_3d, + setup_echo_srv_tcp_ipv4, + teardown), + cmocka_unit_test_setup_teardown(test_tcp_sendmsg_recvmsg_fd_4d, + setup_echo_srv_tcp_ipv4, + teardown), + cmocka_unit_test_setup_teardown(test_tcp_sendmsg_recvmsg_fd_5d, + setup_echo_srv_tcp_ipv4, + teardown), + cmocka_unit_test_setup_teardown(test_tcp_sendmsg_recvmsg_fd_6d, + setup_echo_srv_tcp_ipv4, + teardown), }; rc = cmocka_run_group_tests(tests, NULL, NULL);