summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmake/QtTestHelpers.cmake73
-rw-r--r--tests/auto/network/access/qabstractnetworkcache/CMakeLists.txt1
-rw-r--r--tests/auto/network/access/qhttpnetworkconnection/CMakeLists.txt1
-rw-r--r--tests/auto/network/access/qnetworkreply/test/CMakeLists.txt1
-rw-r--r--tests/auto/network/socket/qhttpsocketengine/CMakeLists.txt1
-rw-r--r--tests/auto/network/socket/qsocks5socketengine/CMakeLists.txt1
-rw-r--r--tests/auto/network/socket/qtcpserver/test/CMakeLists.txt1
-rw-r--r--tests/auto/network/socket/qtcpsocket/test/CMakeLists.txt1
-rw-r--r--tests/auto/network/socket/qudpsocket/test/CMakeLists.txt1
-rw-r--r--tests/auto/network/ssl/qsslsocket/CMakeLists.txt1
-rw-r--r--tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/CMakeLists.txt1
-rw-r--r--tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/CMakeLists.txt1
12 files changed, 83 insertions, 1 deletions
diff --git a/cmake/QtTestHelpers.cmake b/cmake/QtTestHelpers.cmake
index a7d6d9d849..e9ecf6857a 100644
--- a/cmake/QtTestHelpers.cmake
+++ b/cmake/QtTestHelpers.cmake
@@ -72,13 +72,80 @@ function(qt_add_manual_test target)
endfunction()
+# This function will configure the fixture for the network tests that require docker network services
+# qmake counterpart: qtbase/mkspecs/features/unsupported/testserver.prf
+function(qt_internal_setup_docker_test_fixture name)
+ # Only Linux is provisioned with docker at this time
+ if (NOT CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux")
+ return()
+ endif()
+
+ set(QT_TEST_SERVER_LIST ${ARGN})
+ set(DNSDOMAIN test-net.qt.local)
+
+ find_program(QT_DOCKER_COMPOSE docker-compose)
+ if (NOT QT_DOCKER_COMPOSE)
+ message(WARNING "docker-compose was not found. Docker network tests will not be run.")
+ return()
+ endif()
+ if (NOT DEFINED QT_DOCKER_COMPOSE_VERSION)
+ execute_process(COMMAND "${QT_DOCKER_COMPOSE}" --version OUTPUT_VARIABLE QT_DOCKER_COMPOSE_VERSION)
+ string(REPLACE "\n" "" QT_DOCKER_COMPOSE_VERSION "${QT_DOCKER_COMPOSE_VERSION}")
+ set(QT_DOCKER_COMPOSE_VERSION "${QT_DOCKER_COMPOSE_VERSION}" CACHE STRING "docker compose version")
+ endif()
+
+ find_program(QT_DOCKER docker)
+ if (NOT QT_DOCKER)
+ message(WARNING "docker was not found. Docker network tests will not be run.")
+ return()
+ endif()
+ if (NOT DEFINED QT_DOCKER_TEST_SERVER)
+ execute_process(COMMAND "${QT_DOCKER}" images -aq "qt-test-server-*" OUTPUT_VARIABLE QT_DOCKER_TEST_SERVER)
+ if (NOT QT_DOCKER_TEST_SERVER)
+ message(WARNING
+ "Docker image qt-test-server-* not found.\n"
+ "Run the provisioning script (coin/provisioning/.../testserver/docker_testserver.sh) in advance\n"
+ "Docker network tests will not be run.")
+ return()
+ endif()
+ set(QT_DOCKER_TEST_SERVER "ON" CACHE BOOL "docker qt-test-server-* present")
+ endif()
+
+ target_compile_definitions("${name}"
+ PRIVATE
+ QT_TEST_SERVER QT_TEST_SERVER_NAME QT_TEST_SERVER_DOMAIN=\"${DNSDOMAIN}\"
+ )
+
+ set(TESTSERVER_COMPOSE_FILE "${QT_SOURCE_TREE}/tests/testserver/docker-compose-bridge-network.yml")
+
+ # Bring up test servers and make sure the services are ready.
+ add_test(NAME ${name}-setup COMMAND
+ "${QT_DOCKER_COMPOSE}" -f ${TESTSERVER_COMPOSE_FILE} up --build -d --force-recreate --timeout 1 ${QT_TEST_SERVER_LIST}
+ )
+ # Stop and remove test servers after testing.
+ add_test(NAME ${name}-cleanup COMMAND
+ "${QT_DOCKER_COMPOSE}" -f ${TESTSERVER_COMPOSE_FILE} down --timeout 1
+ )
+
+ set_tests_properties(${name}-setup PROPERTIES FIXTURES_SETUP ${name}-docker)
+ set_tests_properties(${name}-cleanup PROPERTIES FIXTURES_CLEANUP ${name}-docker)
+ set_tests_properties(${name} PROPERTIES FIXTURES_REQUIRED ${name}-docker)
+
+ foreach(test_name ${name} ${name}-setup ${name}-cleanup)
+ set_property(TEST "${test_name}" APPEND PROPERTY ENVIRONMENT "testserver=${QT_DOCKER_COMPOSE_VERSION}")
+ set_property(TEST "${test_name}" APPEND PROPERTY ENVIRONMENT TEST_DOMAIN=${DNSDOMAIN})
+ set_property(TEST "${test_name}" APPEND PROPERTY ENVIRONMENT "SHARED_DATA=${QT_SOURCE_TREE}/mkspecs/features/data/testserver")
+ set_property(TEST "${test_name}" APPEND PROPERTY ENVIRONMENT SHARED_SERVICE=bridge-network)
+ endforeach()
+
+endfunction()
# This function creates a CMake test target with the specified name for use with CTest.
function(qt_add_test name)
qt_parse_all_arguments(arg "qt_add_test"
"RUN_SERIAL;EXCEPTIONS;GUI;QMLTEST;CATCH;LOWDPI"
"OUTPUT_DIRECTORY;WORKING_DIRECTORY;TIMEOUT;VERSION"
- "QML_IMPORTPATH;TESTDATA;${__default_private_args};${__default_public_args}" ${ARGN}
+ "QML_IMPORTPATH;TESTDATA;QT_TEST_SERVER_LIST;${__default_private_args};${__default_public_args}" ${ARGN}
)
if (NOT arg_OUTPUT_DIRECTORY)
@@ -191,6 +258,10 @@ function(qt_add_test name)
endif()
add_test(NAME "${name}" COMMAND ${test_executable} ${extra_test_args} ${test_outputs} WORKING_DIRECTORY "${test_working_dir}")
+
+ if (arg_QT_TEST_SERVER_LIST)
+ qt_internal_setup_docker_test_fixture(${name} ${arg_QT_TEST_SERVER_LIST})
+ endif()
endif()
set_tests_properties("${name}" PROPERTIES RUN_SERIAL "${arg_RUN_SERIAL}" LABELS "${label}")
if (arg_TIMEOUT)
diff --git a/tests/auto/network/access/qabstractnetworkcache/CMakeLists.txt b/tests/auto/network/access/qabstractnetworkcache/CMakeLists.txt
index 3196ccca59..9ebd765fd4 100644
--- a/tests/auto/network/access/qabstractnetworkcache/CMakeLists.txt
+++ b/tests/auto/network/access/qabstractnetworkcache/CMakeLists.txt
@@ -16,6 +16,7 @@ qt_add_test(tst_qabstractnetworkcache
PUBLIC_LIBRARIES
Qt::Network
TESTDATA ${test_data}
+ QT_TEST_SERVER_LIST "apache2" # special case
)
#### Keys ignored in scope 1:.:.:qabstractnetworkcache.pro:<TRUE>:
diff --git a/tests/auto/network/access/qhttpnetworkconnection/CMakeLists.txt b/tests/auto/network/access/qhttpnetworkconnection/CMakeLists.txt
index 621e339c1a..ffd9ea934e 100644
--- a/tests/auto/network/access/qhttpnetworkconnection/CMakeLists.txt
+++ b/tests/auto/network/access/qhttpnetworkconnection/CMakeLists.txt
@@ -14,6 +14,7 @@ qt_add_test(tst_qhttpnetworkconnection
PUBLIC_LIBRARIES
Qt::CorePrivate
Qt::NetworkPrivate
+ QT_TEST_SERVER_LIST "apache2" # special case
)
#### Keys ignored in scope 1:.:.:qhttpnetworkconnection.pro:<TRUE>:
diff --git a/tests/auto/network/access/qnetworkreply/test/CMakeLists.txt b/tests/auto/network/access/qnetworkreply/test/CMakeLists.txt
index 568eb2adf6..24f264703f 100644
--- a/tests/auto/network/access/qnetworkreply/test/CMakeLists.txt
+++ b/tests/auto/network/access/qnetworkreply/test/CMakeLists.txt
@@ -28,6 +28,7 @@ qt_add_test(tst_qnetworkreply
Qt::CorePrivate
Qt::NetworkPrivate
TESTDATA ${test_data}
+ QT_TEST_SERVER_LIST "vsftpd" "apache2" "ftp-proxy" "danted" "squid" # special case
)
# Resources:
diff --git a/tests/auto/network/socket/qhttpsocketengine/CMakeLists.txt b/tests/auto/network/socket/qhttpsocketengine/CMakeLists.txt
index 8afcdc3376..5b4a9d0195 100644
--- a/tests/auto/network/socket/qhttpsocketengine/CMakeLists.txt
+++ b/tests/auto/network/socket/qhttpsocketengine/CMakeLists.txt
@@ -16,6 +16,7 @@ qt_add_test(tst_qhttpsocketengine
PUBLIC_LIBRARIES
Qt::CorePrivate
Qt::NetworkPrivate
+ QT_TEST_SERVER_LIST "squid" "danted" "cyrus" "apache2" # special case
)
#### Keys ignored in scope 1:.:.:qhttpsocketengine.pro:<TRUE>:
diff --git a/tests/auto/network/socket/qsocks5socketengine/CMakeLists.txt b/tests/auto/network/socket/qsocks5socketengine/CMakeLists.txt
index 0b2430c81a..e46257c123 100644
--- a/tests/auto/network/socket/qsocks5socketengine/CMakeLists.txt
+++ b/tests/auto/network/socket/qsocks5socketengine/CMakeLists.txt
@@ -16,6 +16,7 @@ qt_add_test(tst_qsocks5socketengine
PUBLIC_LIBRARIES
Qt::CorePrivate
Qt::NetworkPrivate
+ QT_TEST_SERVER_LIST "danted" "apache2" "cyrus" # special case
)
#### Keys ignored in scope 1:.:.:qsocks5socketengine.pro:<TRUE>:
diff --git a/tests/auto/network/socket/qtcpserver/test/CMakeLists.txt b/tests/auto/network/socket/qtcpserver/test/CMakeLists.txt
index ae345b99f4..4d328ebddb 100644
--- a/tests/auto/network/socket/qtcpserver/test/CMakeLists.txt
+++ b/tests/auto/network/socket/qtcpserver/test/CMakeLists.txt
@@ -10,6 +10,7 @@ qt_add_test(tst_qtcpserver
../tst_qtcpserver.cpp
PUBLIC_LIBRARIES
Qt::Network
+ QT_TEST_SERVER_LIST "danted" "cyrus" "squid" "ftp-proxy" # special case
)
#### Keys ignored in scope 1:.:.:test.pro:<TRUE>:
diff --git a/tests/auto/network/socket/qtcpsocket/test/CMakeLists.txt b/tests/auto/network/socket/qtcpsocket/test/CMakeLists.txt
index a1a6dc172a..3b4bd856a3 100644
--- a/tests/auto/network/socket/qtcpsocket/test/CMakeLists.txt
+++ b/tests/auto/network/socket/qtcpsocket/test/CMakeLists.txt
@@ -11,6 +11,7 @@ qt_add_test(tst_qtcpsocket
PUBLIC_LIBRARIES
Qt::CorePrivate
Qt::NetworkPrivate
+ QT_TEST_SERVER_LIST "danted" "squid" "apache2" "ftp-proxy" "vsftpd" "iptables" "cyrus" # special case
)
## Scopes:
diff --git a/tests/auto/network/socket/qudpsocket/test/CMakeLists.txt b/tests/auto/network/socket/qudpsocket/test/CMakeLists.txt
index a2fa36b078..3da08a0e72 100644
--- a/tests/auto/network/socket/qudpsocket/test/CMakeLists.txt
+++ b/tests/auto/network/socket/qudpsocket/test/CMakeLists.txt
@@ -12,6 +12,7 @@ qt_add_test(tst_qudpsocket
../../../../../shared
PUBLIC_LIBRARIES
Qt::Network
+ QT_TEST_SERVER_LIST "danted" "echo" # special case
)
#### Keys ignored in scope 1:.:.:test.pro:<TRUE>:
diff --git a/tests/auto/network/ssl/qsslsocket/CMakeLists.txt b/tests/auto/network/ssl/qsslsocket/CMakeLists.txt
index 59ab6ff93a..d0307042f4 100644
--- a/tests/auto/network/ssl/qsslsocket/CMakeLists.txt
+++ b/tests/auto/network/ssl/qsslsocket/CMakeLists.txt
@@ -20,6 +20,7 @@ qt_add_test(tst_qsslsocket
Qt::CorePrivate
Qt::NetworkPrivate
TESTDATA ${test_data}
+ QT_TEST_SERVER_LIST "squid" "danted" "cyrus" "apache2" "echo" # special case
)
#### Keys ignored in scope 1:.:.:qsslsocket.pro:<TRUE>:
diff --git a/tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/CMakeLists.txt b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/CMakeLists.txt
index 9a1beaeb76..0d6b8a4c4a 100644
--- a/tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/CMakeLists.txt
+++ b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/CMakeLists.txt
@@ -16,6 +16,7 @@ qt_add_test(tst_qsslsocket_onDemandCertificates_member
PUBLIC_LIBRARIES
Qt::CorePrivate
Qt::NetworkPrivate
+ QT_TEST_SERVER_LIST "squid" "danted" # special case
)
#### Keys ignored in scope 1:.:.:qsslsocket_onDemandCertificates_member.pro:<TRUE>:
diff --git a/tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/CMakeLists.txt b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/CMakeLists.txt
index f8d6735c20..b17da05d86 100644
--- a/tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/CMakeLists.txt
+++ b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/CMakeLists.txt
@@ -16,6 +16,7 @@ qt_add_test(tst_qsslsocket_onDemandCertificates_static
PUBLIC_LIBRARIES
Qt::CorePrivate
Qt::NetworkPrivate
+ QT_TEST_SERVER_LIST "squid" "danted" # special case
)
#### Keys ignored in scope 1:.:.:qsslsocket_onDemandCertificates_static.pro:<TRUE>: