Skip to content
Snippets Groups Projects
Commit 68623381 authored by Sergey Bronnikov's avatar Sergey Bronnikov Committed by Igor Munkin
Browse files

perf: add targets for running C performance tests

The patch adds a targets for each C performance test in a directory
perf/ and a separate target "test-c-perf" that runs all C performance
tests at once.

NO_CHANGELOG=testing
NO_DOC=testing
NO_TEST=test infrastructure
parent 49d9a874
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,11 @@ add_subdirectory(lua)
find_package(benchmark QUIET)
if (NOT ${benchmark_FOUND})
message(AUTHOR_WARNING "Google Benchmark library was not found")
set(MSG "Target test-c-perf is dummy, Google Benchmark library was not found")
add_custom_target(test-c-perf
COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --red ${MSG}
COMMENT ${MSG}
)
return()
endif()
......@@ -13,25 +18,62 @@ include_directories(${PROJECT_SOURCE_DIR}/src/box)
include_directories(${PROJECT_SOURCE_DIR}/third_party)
include_directories(${EXTRA_CORE_INCLUDE_DIRS})
function(create_perf_test)
cmake_parse_arguments(
PERF
""
"PREFIX"
"SOURCES;LIBRARIES"
${ARGN}
set(RUN_PERF_C_TESTS_LIST "")
function(create_perf_test_target)
set(prefix PERF)
set(noValues)
set(singleValues TARGET)
set(multiValues)
# FIXME: if we update to CMake >= 3.5, can remove this line.
include(CMakeParseArguments)
cmake_parse_arguments(${prefix}
"${noValues}"
"${singleValues}"
"${multiValues}"
${ARGN})
message(STATUS "Creating C performance test ${PERF_TARGET}_perftest")
add_custom_target(${PERF_TARGET}_perftest
COMMAND "$<TARGET_FILE:${PERF_TARGET}.perftest>"
DEPENDS ${PERF_TARGET}.perftest
COMMENT Running ${PERF_TARGET}_perftest
)
message(STATUS "Creating performance test ${PERF_PREFIX}.perftest")
add_executable(${PERF_PREFIX}.perftest ${PERF_SOURCES})
target_link_libraries(${PERF_PREFIX}.perftest PUBLIC ${PERF_LIBRARIES})
set(RUN_PERF_C_TESTS_LIST ${RUN_PERF_C_TESTS_LIST} ${PERF_TARGET}_perftest PARENT_SCOPE)
endfunction()
function(create_perf_test)
set(prefix PERF)
set(noValues)
set(singleValues NAME)
set(multiValues "SOURCES;LIBRARIES")
# FIXME: if we update to CMake >= 3.5, can remove this line.
include(CMakeParseArguments)
cmake_parse_arguments(${prefix}
"${noValues}"
"${singleValues}"
"${multiValues}"
${ARGN})
add_executable(${PERF_NAME}.perftest ${PERF_SOURCES})
target_link_libraries(${PERF_NAME}.perftest PUBLIC ${PERF_LIBRARIES})
endfunction()
create_perf_test(PREFIX tuple
create_perf_test(NAME tuple
SOURCES tuple.cc ${PROJECT_SOURCE_DIR}/test/unit/box_test_utils.c
LIBRARIES core box tuple benchmark::benchmark
)
create_perf_test_target(TARGET tuple)
create_perf_test(PREFIX light
create_perf_test(NAME light
SOURCES light.cc ${PROJECT_SOURCE_DIR}/test/unit/box_test_utils.c
LIBRARIES small benchmark::benchmark
)
create_perf_test_target(TARGET light)
create_perf_test_target(TARGET small)
add_custom_target(test-c-perf
DEPENDS ${RUN_PERF_C_TESTS_LIST}
COMMENT "Running C performance tests"
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment