]>
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) | |
5 | add_test(NAME ${test_name} COMMAND ${test_path} ${ARGN}) | |
11fdf7f2 TL |
6 | if(TARGET ${test_name}) |
7 | add_dependencies(tests ${test_name}) | |
f67539c2 TL |
8 | set_property(TARGET ${test_name} |
9 | PROPERTY EXCLUDE_FROM_ALL TRUE) | |
11fdf7f2 | 10 | endif() |
f67539c2 | 11 | set_property(TEST ${test_name} |
7c673cae FG |
12 | PROPERTY ENVIRONMENT |
13 | CEPH_ROOT=${CMAKE_SOURCE_DIR} | |
14 | CEPH_BIN=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} | |
15 | CEPH_LIB=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} | |
16 | CEPH_BUILD_DIR=${CMAKE_BINARY_DIR} | |
17 | LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/lib | |
18 | PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}:${CMAKE_SOURCE_DIR}/src:$ENV{PATH} | |
9f95a23c | 19 | PYTHONPATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/cython_modules/lib.3:${CMAKE_SOURCE_DIR}/src/pybind |
7c673cae FG |
20 | CEPH_BUILD_VIRTUALENV=${CEPH_BUILD_VIRTUALENV}) |
21 | # none of the tests should take more than 1 hour to complete | |
f67539c2 | 22 | set_property(TEST ${test_name} |
11fdf7f2 | 23 | PROPERTY TIMEOUT ${CEPH_TEST_TIMEOUT}) |
7c673cae FG |
24 | endfunction() |
25 | ||
11fdf7f2 TL |
26 | option(WITH_GTEST_PARALLEL "Enable running gtest based tests in parallel" OFF) |
27 | if(WITH_GTEST_PARALLEL) | |
9f95a23c TL |
28 | if(NOT TARGET gtest-parallel_ext) |
29 | set(gtest_parallel_source_dir ${CMAKE_CURRENT_BINARY_DIR}/gtest-parallel) | |
30 | include(ExternalProject) | |
31 | ExternalProject_Add(gtest-parallel_ext | |
32 | SOURCE_DIR "${gtest_parallel_source_dir}" | |
33 | GIT_REPOSITORY "https://github.com/google/gtest-parallel.git" | |
34 | GIT_TAG "master" | |
f67539c2 | 35 | GIT_SHALLOW TRUE |
9f95a23c TL |
36 | CONFIGURE_COMMAND "" |
37 | BUILD_COMMAND "" | |
38 | INSTALL_COMMAND "") | |
39 | add_dependencies(tests gtest-parallel_ext) | |
40 | find_package(Python3 QUIET REQUIRED) | |
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}") | |
72 | find_package(Python3 QUIET REQUIRED) | |
73 | add_custom_command( | |
74 | OUTPUT ${venv_path}/bin/activate | |
75 | COMMAND ${CMAKE_SOURCE_DIR}/src/tools/setup-virtualenv.sh --python="${Python3_EXECUTABLE}" ${venv_path} | |
76 | WORKING_DIRECTORY ${tox_path} | |
77 | COMMENT "preparing venv for ${name}") | |
78 | add_custom_target(${name}-venv | |
79 | DEPENDS ${venv_path}/bin/activate) | |
80 | add_dependencies(tests ${name}-venv) | |
81 | add_test( | |
82 | NAME ${test_name} | |
83 | COMMAND ${CMAKE_SOURCE_DIR}/src/script/run_tox.sh | |
84 | --source-dir ${CMAKE_SOURCE_DIR} | |
85 | --build-dir ${CMAKE_BINARY_DIR} | |
86 | --tox-path ${tox_path} | |
87 | --tox-envs ${tox_envs} | |
88 | --venv-path ${venv_path}) | |
89 | set_property( | |
90 | TEST ${test_name} | |
91 | PROPERTY ENVIRONMENT | |
92 | CEPH_ROOT=${CMAKE_SOURCE_DIR} | |
93 | CEPH_BIN=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} | |
94 | CEPH_LIB=${CMAKE_LIBRARY_OUTPUT_DIRECTORY} | |
95 | CEPH_BUILD_VIRTUALENV=${CEPH_BUILD_VIRTUALENV} | |
96 | LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/lib | |
97 | PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}:${CMAKE_SOURCE_DIR}/src:$ENV{PATH} | |
98 | PYTHONPATH=${CMAKE_SOURCE_DIR}/src/pybind) | |
99 | list(APPEND tox_test run-tox-${name}) | |
100 | endfunction() |