@@ -29,6 +29,29 @@ function(RB_ADD_SETUP_FIXTURE benchmark)
2929endfunction (RB_ADD_SETUP_FIXTURE)
3030
3131
32+ #----------------------------------------------------------------------------
33+ # function RB_ADD_FLAMEGRAPHCPU_FIXTURE(<benchmark>)
34+ #----------------------------------------------------------------------------
35+ function (RB_ADD_FLAMEGRAPHCPU_FIXTURE benchmark)
36+ cmake_parse_arguments (ARG "" "" "" ${ARGN} )
37+ add_test (NAME rootbench-fixture-flamegraphcpu-${benchmark}
38+ COMMAND ${PROJECT_BINARY_DIR} /tools/flamegraph.sh -d ${PROJECT_BINARY_DIR} -b ${CMAKE_CURRENT_BINARY_DIR} /${benchmark} -c)
39+ set_tests_properties (rootbench-fixture-flamegraphcpu-${benchmark} PROPERTIES FIXTURES_CLEANUP flamegraphcpu-${benchmark} )
40+ endfunction (RB_ADD_FLAMEGRAPHCPU_FIXTURE)
41+
42+
43+ #----------------------------------------------------------------------------
44+ # function RB_ADD_FLAMEGRAPHMEM_FIXTURE(<benchmark>)
45+ #----------------------------------------------------------------------------
46+ function (RB_ADD_FLAMEGRAPHMEM_FIXTURE benchmark)
47+ cmake_parse_arguments (ARG "" "" "" ${ARGN} )
48+ add_test (NAME rootbench-fixture-flamegraphmem-${benchmark}
49+ COMMAND ${PROJECT_BINARY_DIR} /tools/flamegraph.sh -d ${PROJECT_BINARY_DIR} -b ${CMAKE_CURRENT_BINARY_DIR} /${benchmark} -m)
50+ set_tests_properties (rootbench-fixture-flamegraphmem-${benchmark} PROPERTIES FIXTURES_CLEANUP flamegraphmem-${benchmark} )
51+ endfunction (RB_ADD_FLAMEGRAPHMEM_FIXTURE)
52+
53+
54+
3255#----------------------------------------------------------------------------
3356# function RB_ADD_GBENCHMARK(<benchmark> source1 source2... LIBRARIES libs)
3457#----------------------------------------------------------------------------
@@ -44,18 +67,6 @@ function(RB_ADD_GBENCHMARK benchmark)
4467 # against. For example, tests in Core should link only against libCore. This could be tricky
4568 # to implement because some ROOT components create more than one library.
4669 target_link_libraries (${benchmark} ${ARG_LIBRARIES} gbenchmark RBSupport)
47- #ROOT_PATH_TO_STRING(mangled_name ${benchmark} PATH_SEPARATOR_REPLACEMENT "-")
48- if (ARG_POSTCMD)
49- set (postcmd POSTCMD ${ARG_POSTCMD} )
50- endif ()
51- if (flamegraphCPU)
52- set (postcmd ${postcmd} "${PROJECT_SOURCE_DIR} /rootbench-scripts/flamegraph.sh -d ${PROJECT_BINARY_DIR} -b ${CMAKE_CURRENT_BINARY_DIR} /${benchmark} -c" )
53- add_dependencies (${benchmark} flamegraph-download)
54- endif ()
55- if (flamegraphMem)
56- set (postcmd ${postcmd} "${PROJECT_SOURCE_DIR} /rootbench-scripts/flamegraph.sh -d ${PROJECT_BINARY_DIR} -b ${CMAKE_CURRENT_BINARY_DIR} /${benchmark} -m" )
57- add_dependencies (${benchmark} flamegraph-download)
58- endif ()
5970 if (${ARG_LABEL} STREQUAL "long" )
6071 set (${TIMEOUT_VALUE} 1200)
6172 elseif ($ARG_LABEL STREQUAL "short" )
@@ -74,13 +85,21 @@ function(RB_ADD_GBENCHMARK benchmark)
7485 RB_ADD_SETUP_FIXTURE(${benchmark} SETUP ${ARG_SETUP} )
7586 endif ()
7687
88+ # Flamegraphs (both mem and cpu)
89+ if (flamegraphCPU)
90+ RB_ADD_FLAMEGRAPHCPU_FIXTURE(${benchmark} )
91+ endif ()
92+ if (flamegraphMem)
93+ RB_ADD_FLAMEGRAPHMEM_FIXTURE(${benchmark} )
94+ endif ()
95+
7796 # Add benchmark as a CTest
7897 add_test (NAME rootbench-${benchmark}
7998 COMMAND ${benchmark} --benchmark_out_format=csv --benchmark_out=rootbench-gbenchmark-${benchmark} .csv --benchmark_color=false )
8099 set_tests_properties (rootbench-${benchmark} PROPERTIES
81100 ENVIRONMENT LD_LIBRARY_PATH=${ROOT_LIBRARY_DIR} :$ENV{LD_LIBRARY_PATH}
82101 TIMEOUT "${TIMEOUT_VALUE} " LABELS "${ARG_LABEL} " RUN_SERIAL TRUE
83- FIXTURES_REQUIRED "setup-${benchmark} ;download-${benchmark} -datafiles" )
102+ FIXTURES_REQUIRED "setup-${benchmark} ;download-${benchmark} -datafiles;flamegraphcpu- ${benchmark} ;flamegraphmem- ${benchmark} " )
84103endfunction (RB_ADD_GBENCHMARK)
85104
86105
0 commit comments