aboutsummaryrefslogtreecommitdiff
path: root/tests/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'tests/CMakeLists.txt')
-rw-r--r--tests/CMakeLists.txt193
1 files changed, 100 insertions, 93 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index e7d751ac..31b5fe29 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,10 +1,10 @@
#
+# Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
+# Copyright 2018 Capitar IT Group BV <info@capitar.com>
# Copyright (c) 2012 Martin Sustrik All rights reserved.
# Copyright (c) 2013 GoPivotal, Inc. All rights reserved.
# Copyright (c) 2015-2016 Jack R. Dunaway. All rights reserved.
# Copyright 2016 Franklin "Snaipe" Mathieu <franklinmathieu@gmail.com>
-# Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
-# Copyright 2018 Capitar IT Group BV <info@capitar.com>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"),
@@ -27,37 +27,31 @@
# Build unit tests.
+# Note that tests which depend on internal (not public) APIs are not
+# enabled unless a static library is built. This is because on some
+# systems (e.g. Windows) we do not expose symbols that are not in the
+# public API. (When CMake learns more about using mapfiles to suppress
+# symbol visibility we will do this even more, to protect the namespace
+# of the user.)
+
include_directories(AFTER SYSTEM ${PROJECT_SOURCE_DIR}/src)
if (NNG_TESTS)
- if (THREADS_HAVE_PTHREAD_ARG)
- add_definitions (-pthread)
- endif()
-
# convey tests -- verify the test framework works!
add_executable(convey_test convey_test.c convey.c)
- if (CMAKE_THREAD_LIBS_INIT)
- target_link_libraries (convey_test "${CMAKE_THREAD_LIBS_INIT}")
- endif()
+ target_link_libraries (convey_test Threads::Threads)
add_test (NAME convey_test COMMAND convey_test
-v -d -p ENV_TEST=ON -p ANOTHERNAME -p AGAIN=yes extra)
- set_tests_properties( convey_test PROPERTIES TIMEOUT 2)
- list (APPEND all_tests convey_test)
-
- set (TEST_PORT 12100)
- macro (add_nng_test NAME TIMEOUT COND)
- if (${COND})
- list (APPEND all_tests ${NAME})
- add_executable (${NAME} ${NAME}.c convey.c)
- target_link_libraries (${NAME} ${PROJECT_NAME}_static)
- target_link_libraries (${NAME} ${NNG_REQUIRED_LIBRARIES})
- target_compile_definitions(${NAME} PUBLIC -DNNG_STATIC_LIB)
-
- add_test (NAME ${NAME} COMMAND ${NAME} -v -p TEST_PORT=${TEST_PORT})
- set_tests_properties (${NAME} PROPERTIES TIMEOUT ${TIMEOUT})
- math (EXPR TEST_PORT "${TEST_PORT}+20")
- endif()
+ set_tests_properties (convey_test PROPERTIES TIMEOUT 2)
+
+ set (NNG_TEST_PORT 13000)
+ macro (add_nng_test NAME TIMEOUT)
+ add_executable (${NAME} ${NAME}.c convey.c)
+ target_link_libraries (${NAME} ${PROJECT_NAME} Threads::Threads)
+ add_test (NAME ${NAME} COMMAND ${NAME} -v -p TEST_PORT=${NNG_TEST_PORT})
+ set_tests_properties (${NAME} PROPERTIES TIMEOUT ${TIMEOUT})
+ math (EXPR NNG_TEST_PORT "${NNG_TEST_PORT}+20")
endmacro (add_nng_test)
# Compatibility tests are only added if all of the legacy protocols
@@ -73,17 +67,14 @@ if (NNG_TESTS)
NNG_PROTO_PULL0)
macro (add_nng_compat_test NAME TIMEOUT)
- list (APPEND all_tests ${NAME})
add_executable (${NAME} ${NAME}.c compat_testutil.c)
- target_link_libraries (${NAME} ${PROJECT_NAME}_static)
- target_link_libraries (${NAME} ${NNG_REQUIRED_LIBRARIES})
- target_compile_definitions(${NAME} PUBLIC -DNNG_STATIC_LIB)
+ target_link_libraries (${NAME} ${PROJECT_NAME})
target_include_directories(${NAME} PUBLIC
${PROJECT_SOURCE_DIR}/src/compat)
- add_test (NAME ${NAME} COMMAND ${NAME} ${TEST_PORT})
+ add_test (NAME ${NAME} COMMAND ${NAME} ${NNG_TEST_PORT})
set_tests_properties (${NAME} PROPERTIES TIMEOUT ${TIMEOUT})
- math (EXPR TEST_PORT "${TEST_PORT}+10")
+ math (EXPR NNG_TEST_PORT "${NNG_TEST_PORT}+20")
endmacro (add_nng_compat_test)
else ()
macro (add_nng_compat_test NAME TIMEOUT)
@@ -94,87 +85,103 @@ if (NNG_TESTS)
macro (add_nng_cpp_test NAME TIMEOUT)
if (NOT NNG_ENABLE_COVERAGE)
enable_language (CXX)
- list (APPEND all_tests ${NAME})
add_executable (${NAME} ${NAME}.cc)
- target_link_libraries (${NAME} ${PROJECT_NAME}_static)
- target_link_libraries (${NAME} ${NNG_REQUIRED_LIBRARIES})
- target_compile_definitions(${NAME} PUBLIC -DNNG_STATIC_LIB)
-
+ target_link_libraries (${NAME} ${PROJECT_NAME})
add_test (NAME ${NAME} COMMAND ${NAME} ${TEST_PORT})
set_tests_properties (${NAME} PROPERTIES TIMEOUT ${TIMEOUT})
- math (EXPR TEST_PORT "${TEST_PORT}+10")
+ math (EXPR TEST_PORT "${NNG_TEST_PORT}+20")
endif()
endmacro (add_nng_cpp_test)
- macro (add_nng_proto_test NAME TIMEOUT P1 P2)
- if (${P1} AND ${P2})
+ macro (add_nng_test1 NAME TIMEOUT COND1)
+ if (${COND1})
+ add_nng_test(${NAME} ${TIMEOUT})
+ else()
+ message (STATUS "Test ${NAME} disabled (unconfigured)")
+ endif()
+ endmacro()
+
+ macro (add_nng_test2 NAME TIMEOUT COND1 COND2)
+ if (${COND1} AND ${COND2})
+ add_nng_test(${NAME} ${TIMEOUT})
+ else()
+ message (STATUS "Test ${NAME} disabled (unconfigured)")
+ endif()
+ endmacro()
+
+ macro (add_nng_test3 NAME TIMEOUT COND1 COND2 COND3)
+ if (${COND1} AND ${COND2} AND ${COND3})
add_nng_test(${NAME} ${TIMEOUT} ON)
else()
- message (STATUS "Protocol test ${NAME} disabled (unconfigured)")
+ message (STATUS "Test ${NAME} disabled (unconfigured)")
endif()
endmacro()
else ()
- macro (add_nng_test NAME TIMEOUT COND)
+ macro (add_nng_test NAME TIMEOUT)
endmacro (add_nng_test)
macro (add_nng_compat_test NAME TIMEOUT)
endmacro (add_nng_compat_test)
macro (add_nng_cpp_test NAME TIMEOUT)
endmacro (add_nng_cpp_test)
- macro (add_nng_proto_test NAME TIMEOUT P1 P2)
- endmacro()
+ macro (add_nng_test1 NAME TIMEOUT COND1)
+ endmacro(add_nng_test1)
+ macro (add_nng_test2 NAME TIMEOUT COND1 COND2)
+ endmacro(add_nng_test2)
+ macro (add_nng_test3 NAME TIMEOUT COND1 COND2 COND3)
+ endmacro(add_nng_test3)
endif ()
-add_nng_test(aio 5 ON)
-add_nng_test(bufsz 5 NNG_PROTO_PAIR0)
-add_nng_test(base64 5 NNG_SUPP_BASE64)
-add_nng_test(device 5 ON)
-add_nng_test(errors 2 ON)
-add_nng_test(files 5 ON)
-add_nng_test(httpclient 60 NNG_SUPP_HTTP)
-add_nng_test(httpserver 30 NNG_SUPP_HTTP)
-add_nng_test(idhash 5 ON)
-add_nng_test(inproc 5 NNG_TRANSPORT_INPROC)
-add_nng_test(ipc 5 NNG_TRANSPORT_IPC)
-add_nng_test(ipcperms 5 NNG_TRANSPORT_IPC)
-add_nng_test(ipcwinsec 5 NNG_TRANSPORT_IPC)
-add_nng_test(list 5 ON)
-add_nng_test(message 5 ON)
-add_nng_test(multistress 60 ON)
-add_nng_test(nonblock 60 ON)
-add_nng_test(options 5 ON)
-add_nng_test(pipe 5 ON)
-add_nng_test(platform 5 ON)
-add_nng_test(pollfd 5 ON)
-add_nng_test(reconnect 5 ON)
-add_nng_test(resolv 10 ON)
+add_nng_test(aio 5)
+add_nng_test2(base64 5 NNG_STATIC_LIB NNG_SUPP_BASE64)
+add_nng_test1(bufsz 5 NNG_PROTO_PAIR0)
+add_nng_test(device 5)
+add_nng_test(errors 2)
+add_nng_test1(files 5 NNG_STATIC_LIB)
+add_nng_test1(httpclient 60 NNG_SUPP_HTTP)
+add_nng_test2(httpserver 30 NNG_STATIC_LIB NNG_SUPP_HTTP)
+add_nng_test1(idhash 5 NNG_STATIC_LIB)
+add_nng_test1(inproc 5 NNG_TRANSPORT_INPROC)
+add_nng_test1(ipc 5 NNG_TRANSPORT_IPC)
+add_nng_test1(ipcperms 5 NNG_TRANSPORT_IPC)
+add_nng_test1(ipcwinsec 5 NNG_TRANSPORT_IPC)
+add_nng_test1(list 5 NNG_STATIC_LIB)
+add_nng_test(message 5)
+add_nng_test(multistress 60)
+add_nng_test(nonblock 60)
+add_nng_test(options 5)
+add_nng_test(pipe 5)
+add_nng_test(platform 5)
+add_nng_test(pollfd 5)
+add_nng_test(reconnect 5)
+add_nng_test1(resolv 10 NNG_STATIC_LIB)
add_nng_test(scalability 20 ON)
-add_nng_test(sha1 5 NNG_SUPP_SHA1)
-add_nng_test(sock 5 ON)
-add_nng_test(synch 5 ON)
-add_nng_test(tls 60 NNG_TRANSPORT_TLS)
-add_nng_test(tcp 180 NNG_TRANSPORT_TCP)
-add_nng_test(tcp6 60 NNG_TRANSPORT_TCP)
-add_nng_test(transport 5 ON)
-add_nng_test(udp 5 ON)
-add_nng_test(url 5 ON)
-add_nng_test(ws 30 NNG_TRANSPORT_WS)
-add_nng_test(wss 30 NNG_TRANSPORT_WSS)
-add_nng_test(wssfile 30 NNG_TRANSPORT_WSS)
-add_nng_test(zt 60 NNG_TRANSPORT_ZEROTIER)
-
-add_nng_proto_test(bus 5 NNG_PROTO_BUS0 NNG_PROTO_BUS0)
-add_nng_test(pipeline 5 NNG_PROTO_PULL0 NNG_PROTO_PIPELINE0)
-add_nng_proto_test(pair1 5 NNG_PROTO_PAIR1 NNG_PROTO_PAIR1)
-add_nng_proto_test(pubsub 5 NNG_PROTO_PUB0 NNG_PROTO_SUB0)
-add_nng_proto_test(reqctx 5 NNG_PROTO_REQ0 NNG_PROTO_REP0)
-add_nng_proto_test(reqpoll 5 NNG_PROTO_REQ0 NNG_PROTO_REP0)
-add_nng_proto_test(reqrep 5 NNG_PROTO_REQ0 NNG_PROTO_REP0)
-add_nng_proto_test(reqstress 60 NNG_PROTO_REQ0 NNG_PROTO_REP0)
-add_nng_proto_test(respondpoll 5 NNG_PROTO_SURVEYOR0 NNG_PROTO_RESPONDENT0)
-add_nng_test(survey 5 NNG_PROTO_SURVEYOR0 NNG_PROTO_RESPONDENT0)
-add_nng_proto_test(surveyctx 5 NNG_PROTO_SURVEYOR0 NNG_PROTO_RESPONDENT0)
-add_nng_proto_test(surveypoll 5 NNG_PROTO_SURVEYOR0 NNG_PROTO_RESPONDENT0)
+add_nng_test2(sha1 5 NNG_STATIC_LIB NNG_SUPP_SHA1)
+add_nng_test(sock 5)
+add_nng_test1(synch 5 NNG_STATIC_LIB)
+add_nng_test2(tls 60 NNG_STATIC_LIB NNG_TRANSPORT_TLS)
+add_nng_test1(tcp 180 NNG_TRANSPORT_TCP)
+add_nng_test2(tcp6 60 NNG_STATIC_LIB NNG_TRANSPORT_TCP)
+add_nng_test1(transport 5 NNG_STATIC_LIB)
+add_nng_test1(udp 5 NNG_STATIC_LIB)
+add_nng_test(url 5)
+add_nng_test1(ws 30 NNG_TRANSPORT_WS)
+add_nng_test1(wss 30 NNG_TRANSPORT_WSS)
+add_nng_test2(wssfile 30 NNG_STATIC_LIB NNG_TRANSPORT_WSS)
+add_nng_test1(zt 60 NNG_TRANSPORT_ZEROTIER)
+
+add_nng_test1(bus 5 NNG_PROTO_BUS0)
+add_nng_test2(pipeline 5 NNG_PROTO_PULL0 NNG_PROTO_PUSH0)
+add_nng_test1(pair1 5 NNG_PROTO_PAIR1)
+add_nng_test2(pubsub 5 NNG_PROTO_PUB0 NNG_PROTO_SUB0)
+add_nng_test2(reqctx 5 NNG_PROTO_REQ0 NNG_PROTO_REP0)
+add_nng_test2(reqpoll 5 NNG_PROTO_REQ0 NNG_PROTO_REP0)
+add_nng_test2(reqrep 5 NNG_PROTO_REQ0 NNG_PROTO_REP0)
+add_nng_test2(reqstress 60 NNG_PROTO_REQ0 NNG_PROTO_REP0)
+add_nng_test2(respondpoll 5 NNG_PROTO_SURVEYOR0 NNG_PROTO_RESPONDENT0)
+add_nng_test2(survey 5 NNG_PROTO_SURVEYOR0 NNG_PROTO_RESPONDENT0)
+add_nng_test2(surveyctx 5 NNG_PROTO_SURVEYOR0 NNG_PROTO_RESPONDENT0)
+add_nng_test2(surveypoll 5 NNG_PROTO_SURVEYOR0 NNG_PROTO_RESPONDENT0)
# compatbility tests
# We only support these if ALL the legacy protocols are supported. This
@@ -201,7 +208,7 @@ add_nng_compat_test(compat_ws 60)
# These are special tests for compat mode, not inherited from the
# legacy libnanomsg suite.
-add_nng_test(compat_options 5 NNG_PROTO_REP0)
+add_nng_test1(compat_options 5 NNG_PROTO_REP0)
# c++ tests
add_nng_cpp_test(cplusplus_pair 5)