0
0
mirror of https://github.com/OpenVPN/openvpn3.git synced 2024-09-20 04:02:15 +02:00
openvpn3/test/unittests/CMakeLists.txt
Arne Schwabe ad5057b991 Move test_proto into coreUnittests
With compression logic now being able to be tuned at runtime the
different executable to allow a different define for the compression
log level is no longer needed.

Prefix the defines of test_proto.cpp with PROTO_ to avoid collision of
these very generic named defines

Signed-off-by: Arne Schwabe <arne@openvpn.net>
2024-04-17 14:48:50 +00:00

165 lines
4.4 KiB
CMake

##
## Tunable test_proto parameters
##
set(TEST_PROTO_NTHREADS -1 CACHE STRING "test_proto - Override number of threads")
set(TEST_PROTO_RENEG 900 CACHE STRING "test_proto - Renegotiation interval")
set(TEST_PROTO_ITER 1000000 CACHE STRING "test_proto - Number of iterations")
set(TEST_PROTO_SITER 1 CACHE STRING "test_proto - Number of high-level iterations")
set(TEST_KEYCERT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../ssl" CACHE STRING "test_proto - Certificate/private keys for testing")
option(TEST_PROTO_VERBOSE "test/ssl/proto - Enable verbose logging" OFF)
if (NOT BUILD_TESTING)
return()
endif()
include(dlgoogletest)
set(CORE_TEST_DEFINES
-DOPENVPN_FORCE_TUN_NULL
-DUNIT_TEST
-DUNITTEST_SOURCE_DIR=\"${CMAKE_CURRENT_SOURCE_DIR}/\"
-DOPENVPN_RC_NOTIFY
-DOPENVPN_ENABLE_ASSERT
)
add_executable(coreUnitTests
core_tests.cpp
test_acc.cpp
test_route_emulation.cpp
test_log.cpp
test_comp.cpp
test_b64.cpp
test_verify_x509_name.cpp
test_ssl.cpp
test_sslctx.cpp
test_continuation.cpp
test_crypto.cpp
test_optfilt.cpp
test_clamp_typerange.cpp
test_pktstream.cpp
test_remotelist.cpp
test_relack.cpp
test_http_proxy.cpp
test_peer_fingerprint.cpp
test_safestr.cpp
test_numeric_cast.cpp
test_dns.cpp
test_header_deps.cpp
test_capture.cpp
test_cleanup.cpp
test_crypto_hashstr.cpp
test_csum.cpp
test_format.cpp
test_headredact.cpp
test_hostport.cpp
test_ip.cpp
test_ostream_containers.cpp
test_parseargv.cpp
test_path.cpp
test_pktid.cpp
test_prefixlen.cpp
test_randapi.cpp
test_rc.cpp
test_route.cpp
test_reliable.cpp
test_splitlines.cpp
test_statickey.cpp
test_streq.cpp
test_time.cpp
test_typeindex.cpp
test_tun_builder.cpp
test_userpass.cpp
test_validatecreds.cpp
test_weak.cpp
test_cliopt.cpp
test_buffer.cpp
test_proto.cpp
)
# The compile flags for test_proto.cpp, prefixed with PROTO_ to avoid collision with other defines
if (${TEST_PROTO_VERBOSE})
set(PROTO_CFLAGS_VERBOSE -DPROTO_VERBOSE)
endif()
target_compile_definitions(coreUnitTests PRIVATE
${PROTO_CFLAGS_VERBOSE}
-DPROTO_N_THREADS=${TEST_PROTO_NTHREADS}
-DPROTO_RENEG=${TEST_PROTO_RENEG}
-DPROTO_ITER=${TEST_PROTO_ITER}
-DPROTO_SITER=${TEST_PROTO_SITER}
-DTEST_KEYCERT_DIR=\"${TEST_KEYCERT_DIR}/\"
)
if (${USE_MBEDTLS})
target_sources(coreUnitTests PRIVATE
test_mbedtls_x509certinfo.cpp
test_mbedtls_authcert.cpp
)
else ()
target_sources(coreUnitTests PRIVATE
test_openssl_x509certinfo.cpp
test_openssl_authcert.cpp
test_opensslpki.cpp
test_openssl_misc.cpp
test_session_id.cpp
)
endif ()
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
target_link_libraries(coreUnitTests cap)
target_sources(coreUnitTests PRIVATE test_sitnl.cpp)
endif ()
if (UNIX)
target_sources(coreUnitTests PRIVATE
# includes <arpa/inet.h>
test_buffer_ip.cpp
test_cpu_time.cpp
# directly includes tempfile.hpp
test_misc_unix.cpp
# Uses Unix Pipe semantics
test_pipe.cpp
# for now, only for ovpn3 servers (i.e., pgserv)
test_psid_cookie.cpp
)
endif ()
if (WIN32)
target_sources(coreUnitTests PRIVATE test_iphelper.cpp)
endif ()
add_core_dependencies(coreUnitTests)
add_json_library(coreUnitTests)
# xxHash
target_compile_definitions(coreUnitTests PRIVATE -DHAVE_XXHASH)
if(NOT MSVC)
list(APPEND CMAKE_PREFIX_PATH
${DEP_DIR}/xxHash
${DEP_DIR}
)
endif()
find_package(xxHash REQUIRED)
target_link_libraries(coreUnitTests xxHash::xxhash)
find_package(LZO)
if (LZO_FOUND)
target_compile_definitions(coreUnitTests PRIVATE -DHAVE_LZO)
target_link_libraries(coreUnitTests lzo::lzo)
message("lzo found, running lzo compression tests")
else ()
message("lzo not found, skipping lzo compression tests")
endif ()
target_link_libraries(coreUnitTests ${GTEST_LIB} GTest::gmock ${EXTRA_LIBS})
target_compile_definitions(coreUnitTests PRIVATE ${CORE_TEST_DEFINES})
target_include_directories(coreUnitTests PRIVATE ${EXTRA_INCLUDES})
add_test(NAME CoreTests COMMAND coreUnitTests)