diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:45:59 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:45:59 +0000 |
commit | 19fcec84d8d7d21e796c7624e521b60d28ee21ed (patch) | |
tree | 42d26aa27d1e3f7c0b8bd3fd14e7d7082f5008dc /cmake/modules/AddCephTest.cmake | |
parent | Initial commit. (diff) | |
download | ceph-upstream.tar.xz ceph-upstream.zip |
Adding upstream version 16.2.11+ds.upstream/16.2.11+dsupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | cmake/modules/AddCephTest.cmake | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/cmake/modules/AddCephTest.cmake b/cmake/modules/AddCephTest.cmake new file mode 100644 index 000000000..cd661be16 --- /dev/null +++ b/cmake/modules/AddCephTest.cmake @@ -0,0 +1,98 @@ +#AddCephTest is a module for adding tests to the "make check" target which runs CTest + +#adds makes target/script into a test, test to check target, sets necessary environment variables +function(add_ceph_test test_name test_path) + add_test(NAME ${test_name} COMMAND ${test_path} ${ARGN}) + if(TARGET ${test_name}) + add_dependencies(tests ${test_name}) + set_property(TARGET ${test_name} + PROPERTY EXCLUDE_FROM_ALL TRUE) + endif() + set_property(TEST ${test_name} + PROPERTY ENVIRONMENT + CEPH_ROOT=${CMAKE_SOURCE_DIR} + CEPH_BIN=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} + CEPH_LIB=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + CEPH_BUILD_DIR=${CMAKE_BINARY_DIR} + LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/lib + PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}:${CMAKE_SOURCE_DIR}/src:$ENV{PATH} + PYTHONPATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/cython_modules/lib.3:${CMAKE_SOURCE_DIR}/src/pybind + CEPH_BUILD_VIRTUALENV=${CEPH_BUILD_VIRTUALENV}) + # none of the tests should take more than 1 hour to complete + set_property(TEST ${test_name} + PROPERTY TIMEOUT ${CEPH_TEST_TIMEOUT}) +endfunction() + +option(WITH_GTEST_PARALLEL "Enable running gtest based tests in parallel" OFF) +if(WITH_GTEST_PARALLEL) + if(NOT TARGET gtest-parallel_ext) + set(gtest_parallel_source_dir ${CMAKE_CURRENT_BINARY_DIR}/gtest-parallel) + include(ExternalProject) + ExternalProject_Add(gtest-parallel_ext + SOURCE_DIR "${gtest_parallel_source_dir}" + GIT_REPOSITORY "https://github.com/google/gtest-parallel.git" + GIT_TAG "master" + GIT_SHALLOW TRUE + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "") + add_dependencies(tests gtest-parallel_ext) + set(GTEST_PARALLEL_COMMAND + ${Python3_EXECUTABLE} ${gtest_parallel_source_dir}/gtest-parallel) + endif() +endif() + +#sets uniform compiler flags and link libraries +function(add_ceph_unittest unittest_name) + set(UNITTEST "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${unittest_name}") + cmake_parse_arguments(UT "PARALLEL" "" "" ${ARGN}) + if(WITH_GTEST_PARALLEL AND UT_PARALLEL) + set(UNITTEST ${GTEST_PARALLEL_COMMAND} ${UNITTEST}) + endif() + add_ceph_test(${unittest_name} "${UNITTEST}" ${UT_UNPARSED_ARGUMENTS}) + target_link_libraries(${unittest_name} ${UNITTEST_LIBS}) +endfunction() + +function(add_tox_test name) + set(test_name run-tox-${name}) + set(venv_path ${CEPH_BUILD_VIRTUALENV}/${name}-virtualenv) + cmake_parse_arguments(TOXTEST "" "TOX_PATH" "TOX_ENVS" ${ARGN}) + if(DEFINED TOXTEST_TOX_PATH) + set(tox_path ${TOXTEST_TOX_PATH}) + else() + set(tox_path ${CMAKE_CURRENT_SOURCE_DIR}) + endif() + if(DEFINED TOXTEST_TOX_ENVS) + list(APPEND tox_envs ${TOXTEST_TOX_ENVS}) + else() + list(APPEND tox_envs py3) + endif() + string(REPLACE ";" "," tox_envs "${tox_envs}") + add_custom_command( + OUTPUT ${venv_path}/bin/activate + COMMAND ${CMAKE_SOURCE_DIR}/src/tools/setup-virtualenv.sh --python="${Python3_EXECUTABLE}" ${venv_path} + WORKING_DIRECTORY ${tox_path} + COMMENT "preparing venv for ${name}") + add_custom_target(${name}-venv + DEPENDS ${venv_path}/bin/activate) + add_dependencies(tests ${name}-venv) + add_test( + NAME ${test_name} + COMMAND ${CMAKE_SOURCE_DIR}/src/script/run_tox.sh + --source-dir ${CMAKE_SOURCE_DIR} + --build-dir ${CMAKE_BINARY_DIR} + --tox-path ${tox_path} + --tox-envs ${tox_envs} + --venv-path ${venv_path}) + set_property( + TEST ${test_name} + PROPERTY ENVIRONMENT + CEPH_ROOT=${CMAKE_SOURCE_DIR} + CEPH_BIN=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} + CEPH_LIB=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + CEPH_BUILD_VIRTUALENV=${CEPH_BUILD_VIRTUALENV} + LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/lib + PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}:${CMAKE_SOURCE_DIR}/src:$ENV{PATH} + PYTHONPATH=${CMAKE_SOURCE_DIR}/src/pybind) + list(APPEND tox_test run-tox-${name}) +endfunction() |