From a7536faa9ab7882ad6701141c7b7c537a41108bb Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Wed, 27 Dec 2023 12:29:39 +0100 Subject: test: exclude flame graph tests by default --- test/CMakeLists.txt | 34 +++++++++++++++++++--------------- test/py/test_repo.py | 2 ++ 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index df8db29..29fd778 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -2,6 +2,14 @@ add_subdirectory(sigsegv) find_package(Python3 REQUIRED COMPONENTS Interpreter) +if(NOT DEFINED TEST_REPORT_DIR) + set(TEST_REPORT_DIR "${CMAKE_CURRENT_SOURCE_DIR}") +endif() + +if(NOT DEFINED FLAME_GRAPHS_DIR) + set(FLAME_GRAPHS_DIR "${CMAKE_CURRENT_SOURCE_DIR}") +endif() + set(python_test_args --no-header -v --durations 0 --durations-min 1.0 @@ -20,31 +28,27 @@ function(add_python_tests name) set_tests_properties("${name}" PROPERTIES TIMEOUT 600) endfunction() +# Fast sanity tests & longer-running stress tests. add_python_tests(python_tests_default - Python3::Interpreter -m pytest ${python_test_args} -m "not flame_graph") - -# Use pytest-html to generate an HTML report. -if(NOT DEFINED TEST_REPORT_DIR) - set(TEST_REPORT_DIR "${CMAKE_CURRENT_SOURCE_DIR}") -endif() + Python3::Interpreter -m pytest ${python_test_args}) +# Same, but use pytest-html to generate an HTML report. add_python_tests(python_tests_report - Python3::Interpreter -m pytest ${python_test_args} -m "not flame_graph" + Python3::Interpreter -m pytest ${python_test_args} --html "${TEST_REPORT_DIR}/index.html") -# A subset of tests, excluding long-running stress tests. +# Fast sanity tests only. add_python_tests(python_tests_sanity - Python3::Interpreter -m pytest ${python_test_args} -m "not flame_graph and not stress") + Python3::Interpreter -m pytest ${python_test_args} -m "not stress") -# Same, but run under Valgrind. +# Same, but run under Valgrind. Longer-running stress tests are not run under +# Valgrind, because they take too long. add_python_tests(python_tests_valgrind - Python3::Interpreter -m pytest ${python_test_args} -m "not flame_graph and not stress" + Python3::Interpreter -m pytest ${python_test_args} -m "not stress" --valgrind "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/valgrind.sh") -if(NOT DEFINED FLAME_GRAPHS_DIR) - set(FLAME_GRAPHS_DIR "${CMAKE_CURRENT_SOURCE_DIR}") -endif() - +# A couple of tests that are profiled using the flame graph tool. These are +# excluded by default. add_python_tests(python_tests_flame_graphs Python3::Interpreter -m pytest ${python_test_args} -m "flame_graph" --flamegraph "${CMAKE_CURRENT_SOURCE_DIR}/../scripts/flamegraph.sh" diff --git a/test/py/test_repo.py b/test/py/test_repo.py index 1850aeb..d68cd4a 100644 --- a/test/py/test_repo.py +++ b/test/py/test_repo.py @@ -103,6 +103,8 @@ def test_repo_stress(env, stress_test_repo, numof_clients, runs_per_client): _test_repo_internal(env, stress_test_repo, numof_clients, runs_per_client) +# Nice workaround to skip tests by default: https://stackoverflow.com/a/43938191 +@pytest.mark.skipif("not config.getoption('flamegraph')") @pytest.mark.flame_graph def test_repo_flame_graph(env, profiler, flame_graph_repo): _test_repo_internal(env, flame_graph_repo, 4, 500) -- cgit v1.2.3