]>
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) | |
9f95a23c TL |
41 | set(GTEST_PARALLEL_COMMAND |
42 | ${Python3_EXECUTABLE} ${gtest_parallel_source_dir}/gtest-parallel) | |
43 | endif() | |
11fdf7f2 TL |
44 | endif() |
45 | ||
7c673cae | 46 | #sets uniform compiler flags and link libraries |
11fdf7f2 TL |
47 | function(add_ceph_unittest unittest_name) |
48 | set(UNITTEST "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${unittest_name}") | |
f67539c2 TL |
49 | cmake_parse_arguments(UT "PARALLEL" "" "" ${ARGN}) |
50 | if(WITH_GTEST_PARALLEL AND UT_PARALLEL) | |
11fdf7f2 TL |
51 | set(UNITTEST ${GTEST_PARALLEL_COMMAND} ${UNITTEST}) |
52 | endif() | |
f67539c2 | 53 | add_ceph_test(${unittest_name} "${UNITTEST}" ${UT_UNPARSED_ARGUMENTS}) |
7c673cae | 54 | target_link_libraries(${unittest_name} ${UNITTEST_LIBS}) |
7c673cae | 55 | endfunction() |
9f95a23c TL |
56 | |
57 | function(add_tox_test name) | |
58 | set(test_name run-tox-${name}) | |
59 | set(venv_path ${CEPH_BUILD_VIRTUALENV}/${name}-virtualenv) | |
60 | cmake_parse_arguments(TOXTEST "" "TOX_PATH" "TOX_ENVS" ${ARGN}) | |
61 | if(DEFINED TOXTEST_TOX_PATH) | |
62 | set(tox_path ${TOXTEST_TOX_PATH}) | |
63 | else() | |
64 | set(tox_path ${CMAKE_CURRENT_SOURCE_DIR}) | |
65 | endif() | |
9f95a23c TL |
66 | if(DEFINED TOXTEST_TOX_ENVS) |
67 | list(APPEND tox_envs ${TOXTEST_TOX_ENVS}) | |
f67539c2 TL |
68 | else() |
69 | list(APPEND tox_envs py3) | |
9f95a23c TL |
70 | endif() |
71 | string(REPLACE ";" "," tox_envs "${tox_envs}") | |
20effc67 TL |
72 | add_test( |
73 | NAME setup-venv-for-${name} | |
74 | COMMAND ${CMAKE_SOURCE_DIR}/src/tools/setup-virtualenv.sh --python=${Python3_EXECUTABLE} ${venv_path} | |
75 | WORKING_DIRECTORY ${tox_path}) | |
76 | set_tests_properties(setup-venv-for-${name} PROPERTIES | |
77 | FIXTURES_SETUP venv-for-${name}) | |
78 | add_test( | |
79 | NAME teardown-venv-for-${name} | |
80 | COMMAND ${CMAKE_COMMAND} -E remove_directory ${venv_path}) | |
81 | set_tests_properties(teardown-venv-for-${name} PROPERTIES | |
82 | FIXTURES_CLEANUP venv-for-${name}) | |
9f95a23c TL |
83 | add_test( |
84 | NAME ${test_name} | |
85 | COMMAND ${CMAKE_SOURCE_DIR}/src/script/run_tox.sh | |
86 | --source-dir ${CMAKE_SOURCE_DIR} | |
87 | --build-dir ${CMAKE_BINARY_DIR} | |
88 | --tox-path ${tox_path} | |
89 | --tox-envs ${tox_envs} | |
90 | --venv-path ${venv_path}) | |
20effc67 TL |
91 | set_tests_properties(${test_name} PROPERTIES |
92 | FIXTURES_REQUIRED venv-for-${name}) | |
9f95a23c TL |
93 | set_property( |
94 | TEST ${test_name} | |
95 | PROPERTY ENVIRONMENT | |
96 | CEPH_ROOT=${CMAKE_SOURCE_DIR} | |
97 | CEPH_BIN=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} | |
98 | CEPH_LIB=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} | |
99 | CEPH_BUILD_VIRTUALENV=${CEPH_BUILD_VIRTUALENV} | |
100 | LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/lib | |
2a845540 | 101 | PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}:${CMAKE_SOURCE_DIR}/src:${CMAKE_CURRENT_BINARY_DIR}:$ENV{PATH} |
9f95a23c TL |
102 | PYTHONPATH=${CMAKE_SOURCE_DIR}/src/pybind) |
103 | list(APPEND tox_test run-tox-${name}) | |
104 | endfunction() |