]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | #AddCephTest is a module for adding tests to the "make check" target which runs CTest |
2 | ||
3 | #adds makes target/script into a test, test to check target, sets necessary environment variables | |
4 | function(add_ceph_test test_name test_path) | |
20effc67 TL |
5 | add_test(NAME ${test_name} COMMAND ${test_path} ${ARGN} |
6 | COMMAND_EXPAND_LISTS) | |
11fdf7f2 TL |
7 | if(TARGET ${test_name}) |
8 | add_dependencies(tests ${test_name}) | |
f67539c2 TL |
9 | set_property(TARGET ${test_name} |
10 | PROPERTY EXCLUDE_FROM_ALL TRUE) | |
11fdf7f2 | 11 | endif() |
f67539c2 | 12 | set_property(TEST ${test_name} |
7c673cae FG |
13 | PROPERTY ENVIRONMENT |
14 | CEPH_ROOT=${CMAKE_SOURCE_DIR} | |
15 | CEPH_BIN=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} | |
16 | CEPH_LIB=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} | |
17 | CEPH_BUILD_DIR=${CMAKE_BINARY_DIR} | |
18 | LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/lib | |
19 | PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}:${CMAKE_SOURCE_DIR}/src:$ENV{PATH} | |
9f95a23c | 20 | PYTHONPATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/cython_modules/lib.3:${CMAKE_SOURCE_DIR}/src/pybind |
7c673cae FG |
21 | CEPH_BUILD_VIRTUALENV=${CEPH_BUILD_VIRTUALENV}) |
22 | # none of the tests should take more than 1 hour to complete | |
f67539c2 | 23 | set_property(TEST ${test_name} |
11fdf7f2 | 24 | PROPERTY TIMEOUT ${CEPH_TEST_TIMEOUT}) |
7c673cae FG |
25 | endfunction() |
26 | ||
11fdf7f2 TL |
27 | option(WITH_GTEST_PARALLEL "Enable running gtest based tests in parallel" OFF) |
28 | if(WITH_GTEST_PARALLEL) | |
9f95a23c TL |
29 | if(NOT TARGET gtest-parallel_ext) |
30 | set(gtest_parallel_source_dir ${CMAKE_CURRENT_BINARY_DIR}/gtest-parallel) | |
31 | include(ExternalProject) | |
32 | ExternalProject_Add(gtest-parallel_ext | |
33 | SOURCE_DIR "${gtest_parallel_source_dir}" | |
34 | GIT_REPOSITORY "https://github.com/google/gtest-parallel.git" | |
35 | GIT_TAG "master" | |
f67539c2 | 36 | GIT_SHALLOW TRUE |
9f95a23c TL |
37 | CONFIGURE_COMMAND "" |
38 | BUILD_COMMAND "" | |
39 | INSTALL_COMMAND "") | |
40 | add_dependencies(tests gtest-parallel_ext) | |
41 | find_package(Python3 QUIET REQUIRED) | |
42 | set(GTEST_PARALLEL_COMMAND | |
43 | ${Python3_EXECUTABLE} ${gtest_parallel_source_dir}/gtest-parallel) | |
44 | endif() | |
11fdf7f2 TL |
45 | endif() |
46 | ||
7c673cae | 47 | #sets uniform compiler flags and link libraries |
11fdf7f2 TL |
48 | function(add_ceph_unittest unittest_name) |
49 | set(UNITTEST "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${unittest_name}") | |
f67539c2 TL |
50 | cmake_parse_arguments(UT "PARALLEL" "" "" ${ARGN}) |
51 | if(WITH_GTEST_PARALLEL AND UT_PARALLEL) | |
11fdf7f2 TL |
52 | set(UNITTEST ${GTEST_PARALLEL_COMMAND} ${UNITTEST}) |
53 | endif() | |
f67539c2 | 54 | add_ceph_test(${unittest_name} "${UNITTEST}" ${UT_UNPARSED_ARGUMENTS}) |
7c673cae | 55 | target_link_libraries(${unittest_name} ${UNITTEST_LIBS}) |
7c673cae | 56 | endfunction() |
9f95a23c TL |
57 | |
58 | function(add_tox_test name) | |
59 | set(test_name run-tox-${name}) | |
60 | set(venv_path ${CEPH_BUILD_VIRTUALENV}/${name}-virtualenv) | |
61 | cmake_parse_arguments(TOXTEST "" "TOX_PATH" "TOX_ENVS" ${ARGN}) | |
62 | if(DEFINED TOXTEST_TOX_PATH) | |
63 | set(tox_path ${TOXTEST_TOX_PATH}) | |
64 | else() | |
65 | set(tox_path ${CMAKE_CURRENT_SOURCE_DIR}) | |
66 | endif() | |
9f95a23c TL |
67 | if(DEFINED TOXTEST_TOX_ENVS) |
68 | list(APPEND tox_envs ${TOXTEST_TOX_ENVS}) | |
f67539c2 TL |
69 | else() |
70 | list(APPEND tox_envs py3) | |
9f95a23c TL |
71 | endif() |
72 | string(REPLACE ";" "," tox_envs "${tox_envs}") | |
73 | find_package(Python3 QUIET REQUIRED) | |
20effc67 TL |
74 | add_test( |
75 | NAME setup-venv-for-${name} | |
76 | COMMAND ${CMAKE_SOURCE_DIR}/src/tools/setup-virtualenv.sh --python=${Python3_EXECUTABLE} ${venv_path} | |
77 | WORKING_DIRECTORY ${tox_path}) | |
78 | set_tests_properties(setup-venv-for-${name} PROPERTIES | |
79 | FIXTURES_SETUP venv-for-${name}) | |
80 | add_test( | |
81 | NAME teardown-venv-for-${name} | |
82 | COMMAND ${CMAKE_COMMAND} -E remove_directory ${venv_path}) | |
83 | set_tests_properties(teardown-venv-for-${name} PROPERTIES | |
84 | FIXTURES_CLEANUP venv-for-${name}) | |
9f95a23c TL |
85 | add_test( |
86 | NAME ${test_name} | |
87 | COMMAND ${CMAKE_SOURCE_DIR}/src/script/run_tox.sh | |
88 | --source-dir ${CMAKE_SOURCE_DIR} | |
89 | --build-dir ${CMAKE_BINARY_DIR} | |
90 | --tox-path ${tox_path} | |
91 | --tox-envs ${tox_envs} | |
92 | --venv-path ${venv_path}) | |
20effc67 TL |
93 | set_tests_properties(${test_name} PROPERTIES |
94 | FIXTURES_REQUIRED venv-for-${name}) | |
9f95a23c TL |
95 | set_property( |
96 | TEST ${test_name} | |
97 | PROPERTY ENVIRONMENT | |
98 | CEPH_ROOT=${CMAKE_SOURCE_DIR} | |
99 | CEPH_BIN=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} | |
100 | CEPH_LIB=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} | |
101 | CEPH_BUILD_VIRTUALENV=${CEPH_BUILD_VIRTUALENV} | |
102 | LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/lib | |
103 | PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}:${CMAKE_SOURCE_DIR}/src:$ENV{PATH} | |
104 | PYTHONPATH=${CMAKE_SOURCE_DIR}/src/pybind) | |
105 | list(APPEND tox_test run-tox-${name}) | |
106 | endfunction() |