aboutsummaryrefslogtreecommitdiff
path: root/tests/CMakeLists.txt
diff options
context:
space:
mode:
authorAndreas Schneider <asn@samba.org>2018-05-02 17:05:21 +0200
committerAndreas Schneider <asn@samba.org>2018-05-03 13:15:25 +0200
commit7b01e29d2c95216c842b56b89c88e900cfb4991b (patch)
tree00c9020d453e94089e5915b083843d53dc3372db /tests/CMakeLists.txt
parent1ff35b6bb9a2702c4b0785281f22018b05e549c8 (diff)
downloadsocket_wrapper-7b01e29d2c95216c842b56b89c88e900cfb4991b.tar.gz
socket_wrapper-7b01e29d2c95216c842b56b89c88e900cfb4991b.tar.xz
socket_wrapper-7b01e29d2c95216c842b56b89c88e900cfb4991b.zip
cmake: Run threaded tests with helgrind
Signed-off-by: Andreas Schneider <asn@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'tests/CMakeLists.txt')
-rw-r--r--tests/CMakeLists.txt41
1 files changed, 35 insertions, 6 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 26173bb..58bc732 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -19,6 +19,13 @@ target_link_libraries(${TORTURE_LIBRARY}
${SWRAP_REQUIRED_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT})
+set(SWRAP_THREADED_TESTS
+ test_thread_sockets
+ test_thread_echo_tcp_connect
+ test_thread_echo_tcp_write_read
+ test_thread_echo_tcp_sendmsg_recvmsg
+ test_thread_echo_udp_send_recv)
+
set(SWRAP_TESTS
test_ioctl
test_tcp_listen
@@ -38,12 +45,8 @@ set(SWRAP_TESTS
test_max_sockets
test_close_failure
test_fork_thread_deadlock
- test_thread_sockets
- test_thread_echo_tcp_connect
- test_thread_echo_tcp_write_read
- test_thread_echo_tcp_sendmsg_recvmsg
- test_thread_echo_udp_send_recv
- test_tcp_socket_overwrite)
+ test_tcp_socket_overwrite
+ ${SWRAP_THREADED_TESTS})
if (HAVE_STRUCT_MSGHDR_MSG_CONTROL)
set(SWRAP_TESTS ${SWRAP_TESTS} test_sendmsg_recvmsg_fd)
@@ -67,6 +70,32 @@ foreach(_SWRAP_TEST ${SWRAP_TESTS})
endif()
endforeach()
+if (HELGRIND_TESTING)
+ find_program(VALGRIND_EXECUTABLE valgrind)
+ if (VALGRIND_EXECUTABLE)
+ set(VALGRIND_HELGRIND_OPTIONS --trace-children=yes --tool=helgrind --xml=yes --read-var-info=yes)
+
+ foreach(_TEST ${SWRAP_THREADED_TESTS})
+ set(_HELGRIND_TEST "helgrind_${_TEST}")
+
+ add_test(NAME ${_HELGRIND_TEST} COMMAND ${VALGRIND_EXECUTABLE} ${VALGRIND_HELGRIND_OPTIONS} --xml-file=${CMAKE_CURRENT_BINARY_DIR}/helgrind_${_TEST}.xml ${CMAKE_CURRENT_BINARY_DIR}/${_TEST})
+ if (OSX)
+ set_property(
+ TEST
+ ${_HELGRIND_TEST}
+ PROPERTY
+ ENVIRONMENT DYLD_FORCE_FLAT_NAMESPACE=1;DYLD_INSERT_LIBRARIES=${SOCKET_WRAPPER_LOCATION})
+ else ()
+ set_property(
+ TEST
+ ${_HELGRIND_TEST}
+ PROPERTY
+ ENVIRONMENT LD_PRELOAD=${SOCKET_WRAPPER_LOCATION})
+ endif()
+ endforeach()
+ endif()
+endif()
+
# test_fork_pthread
add_library(thread_deadlock SHARED thread_deadlock.c)
target_link_libraries(thread_deadlock ${CMAKE_THREAD_LIBS_INIT})