From: Andreas Schneider Date: Mon, 31 Jul 2017 17:25:41 +0000 (+0200) Subject: tests: Add a simple fnctl() test X-Git-Tag: socket_wrapper-1.1.8~5 X-Git-Url: http://git.samba.org/samba.git/?a=commitdiff_plain;h=a886815fc1408382a7bf0ac056e7c7d99f494345;p=socket_wrapper.git tests: Add a simple fnctl() test Signed-off-by: Andreas Schneider Reviewed-by: Stefan Metzmacher --- diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index c2bd799..32a457e 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -23,6 +23,7 @@ set(SWRAP_TESTS test_ioctl test_tcp_listen test_tcp_dup2 + test_fcntl test_echo_tcp_socket test_echo_tcp_connect test_echo_tcp_bind diff --git a/tests/test_fcntl.c b/tests/test_fcntl.c new file mode 100644 index 0000000..7925185 --- /dev/null +++ b/tests/test_fcntl.c @@ -0,0 +1,67 @@ +#include "torture.h" + +#include +#include +#include +#include + +static int setup(void **state) +{ + torture_setup_socket_dir(state); + + return 0; +} + +static int teardown(void **state) +{ + torture_teardown_socket_dir(state); + + return 0; +} + +static void test_fcntl_dupfd_existing_open_fd(void **state) +{ + int s, dup_s; + + (void) state; /* unused */ + + s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + assert_return_code(s, errno); + + dup_s = fcntl(s, F_DUPFD, 100); + assert_int_equal(dup_s, 100); + + close(s); + close(dup_s); +} + +static void test_fcntl_getfd_existing_open_fd(void **state) +{ + int s, rc, flags; + + (void) state; /* unused */ + + s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + assert_return_code(s, errno); + + rc = fcntl(s, F_SETFD, FD_CLOEXEC); + assert_int_equal(rc, 0); + + flags = fcntl(s, F_GETFD); + assert_int_equal(flags, FD_CLOEXEC); + + close(s); +} + +int main(void) { + int rc; + + const struct CMUnitTest tcp_fcntl_dupfd_tests[] = { + cmocka_unit_test(test_fcntl_dupfd_existing_open_fd), + cmocka_unit_test(test_fcntl_getfd_existing_open_fd), + }; + + rc = cmocka_run_group_tests(tcp_fcntl_dupfd_tests, setup, teardown); + + return rc; +}