summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2021-02-05 14:40:45 +0100
committerAndreas Schneider <asn@samba.org>2021-02-08 19:29:57 +0100
commitb35e3ce2e2b78fb7a1ccf6d5e011239c14fe27a9 (patch)
tree111d4290fa3449715bf9a72119dab3a5060a0a61 /tests
parent2d93f75669a432723c90e20c3f9b2e2abfa55545 (diff)
downloadsocket_wrapper-b35e3ce2e2b78fb7a1ccf6d5e011239c14fe27a9.tar.gz
socket_wrapper-b35e3ce2e2b78fb7a1ccf6d5e011239c14fe27a9.tar.xz
socket_wrapper-b35e3ce2e2b78fb7a1ccf6d5e011239c14fe27a9.zip
test_echo_tcp_sendmsg_recvmsg_fd: add test_tcp_sendmsg_recvmsg_fd_different() tests
Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Andreas Schneider <asn@samba.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/test_echo_tcp_sendmsg_recvmsg_fd.c82
1 files changed, 82 insertions, 0 deletions
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);