[rocprof-sys] Add test cleanup fixtures for binary-rewrite and runtime-instrument tests (#2012)

- Added `binary-rewrite-cleanup` and `runtime-instrument-cleanup` tests that remove instrumented binaries and output directories using `cmake -E rm -rf`
- Implemented CMake test fixtures (`FIXTURES_SETUP` and `FIXTURES_CLEANUP`) to establish proper test ordering:
  - `binary-rewrite` sets up the `binary-rewrite-fixture`
  - `binary-rewrite-run` and validation tests require this fixture
  - `binary-rewrite-cleanup` performs cleanup for this fixture
  - Same pattern applied for `runtime-instrument`
- Extended `ROCPROFILER_SYSTEMS_ADD_PYTHON_TEST` to accept `FIXTURES_REQUIRED` parameter
- Updated validation tests to require appropriate cleanup fixtures based on test name pattern matching
- Added fixture requirements to Python code-coverage tests
Этот коммит содержится в:
Milan Radosavljevic
2025-11-29 00:51:54 +01:00
коммит произвёл GitHub
родитель fd61b0f507
Коммит ee7305e795
2 изменённых файлов: 74 добавлений и 4 удалений
+3
Просмотреть файл
@@ -90,6 +90,9 @@ foreach(_VERSION ${ROCPROFSYS_PYTHON_VERSIONS})
DEPENDS code-coverage-basic-blocks-binary-rewrite
code-coverage-basic-blocks-binary-rewrite-run
code-coverage-basic-blocks-hybrid-runtime-instrument
FIXTURES_REQUIRED
code-coverage-basic-blocks-binary-rewrite-fixture
code-coverage-basic-blocks-hybrid-runtime-instrument-fixture
LABELS "code-coverage"
ENVIRONMENT "${_python_environment}"
)
+71 -4
Просмотреть файл
@@ -705,6 +705,15 @@ function(ROCPROFILER_SYSTEMS_ADD_TEST)
$<TARGET_FILE_DIR:${TEST_TARGET}>/${TEST_NAME}.inst ${TEST_RUN_ARGS}
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
)
add_test(
NAME ${TEST_NAME}-binary-rewrite-cleanup
COMMAND
${CMAKE_COMMAND} -E rm -rf
$<TARGET_FILE_DIR:${TEST_TARGET}>/${TEST_NAME}.inst
${PROJECT_BINARY_DIR}/rocprof-sys-tests-output/${TEST_NAME}-binary-rewrite
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
)
endif()
if(NOT TEST_SKIP_RUNTIME AND NOT ROCPROFSYS_USE_SANITIZER)
@@ -715,6 +724,14 @@ function(ROCPROFILER_SYSTEMS_ADD_TEST)
$<TARGET_FILE:${TEST_TARGET}> ${TEST_RUN_ARGS}
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
)
add_test(
NAME ${TEST_NAME}-runtime-instrument-cleanup
COMMAND
${CMAKE_COMMAND} -E rm -rf
${PROJECT_BINARY_DIR}/rocprof-sys-tests-output/${TEST_NAME}-runtime-instrument
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
)
endif()
if(NOT TEST_SKIP_SYS_RUN)
@@ -740,7 +757,9 @@ function(ROCPROFILER_SYSTEMS_ADD_TEST)
sampling
binary-rewrite
binary-rewrite-run
binary-rewrite-cleanup
runtime-instrument
runtime-instrument-cleanup
sys-run
)
string(
@@ -783,7 +802,9 @@ function(ROCPROFILER_SYSTEMS_ADD_TEST)
endif()
endif()
if("${_TEST}" MATCHES "binary-rewrite-run")
if("${_TEST}" MATCHES "-cleanup$")
set(_REGEX_VAR)
elseif("${_TEST}" MATCHES "binary-rewrite-run")
set(_REGEX_VAR REWRITE_RUN)
elseif("${_TEST}" MATCHES "runtime-instrument")
set(_REGEX_VAR RUNTIME)
@@ -838,6 +859,36 @@ function(ROCPROFILER_SYSTEMS_ADD_TEST)
FIXTURES_REQUIRED rocprofsys-global-tmp-files
${_props}
)
if("${_TEST}" STREQUAL "binary-rewrite")
set_tests_properties(
${TEST_NAME}-${_TEST}
PROPERTIES FIXTURES_SETUP ${TEST_NAME}-binary-rewrite-fixture
)
elseif("${_TEST}" STREQUAL "binary-rewrite-run")
set_tests_properties(
${TEST_NAME}-${_TEST}
PROPERTIES
FIXTURES_REQUIRED
"rocprofsys-global-tmp-files;${TEST_NAME}-binary-rewrite-fixture"
)
elseif("${_TEST}" STREQUAL "binary-rewrite-cleanup")
set_tests_properties(
${TEST_NAME}-${_TEST}
PROPERTIES FIXTURES_CLEANUP ${TEST_NAME}-binary-rewrite-fixture
)
elseif("${_TEST}" STREQUAL "runtime-instrument")
set_tests_properties(
${TEST_NAME}-${_TEST}
PROPERTIES FIXTURES_SETUP ${TEST_NAME}-runtime-instrument-fixture
)
elseif("${_TEST}" STREQUAL "runtime-instrument-cleanup")
set_tests_properties(
${TEST_NAME}-${_TEST}
PROPERTIES
FIXTURES_CLEANUP ${TEST_NAME}-runtime-instrument-fixture
)
endif()
endif()
endforeach()
endif()
@@ -1032,7 +1083,7 @@ function(ROCPROFILER_SYSTEMS_ADD_PYTHON_TEST)
TEST
"STANDALONE" # options
"NAME;FILE;TIMEOUT;PYTHON_EXECUTABLE;PYTHON_VERSION" # single value args
"PROFILE_ARGS;RUN_ARGS;ENVIRONMENT;LABELS;PROPERTIES;PASS_REGEX;FAIL_REGEX;SKIP_REGEX;DEPENDS;COMMAND" # multiple
"PROFILE_ARGS;RUN_ARGS;ENVIRONMENT;LABELS;PROPERTIES;PASS_REGEX;FAIL_REGEX;SKIP_REGEX;DEPENDS;COMMAND;FIXTURES_REQUIRED" # multiple
# value args
${ARGN}
)
@@ -1131,6 +1182,12 @@ function(ROCPROFILER_SYSTEMS_ADD_PYTHON_TEST)
rocprofiler_systems_check_pass_fail_regex("${_TEST}" "${_PASS_REGEX}"
"${_FAIL_REGEX}"
)
set(_PYTHON_FIXTURES "rocprofsys-global-tmp-files")
if(TEST_FIXTURES_REQUIRED)
list(APPEND _PYTHON_FIXTURES "${TEST_FIXTURES_REQUIRED}")
endif()
set_tests_properties(
${_TEST}
PROPERTIES
@@ -1142,7 +1199,7 @@ function(ROCPROFILER_SYSTEMS_ADD_PYTHON_TEST)
FAIL_REGULAR_EXPRESSION "${${_FAIL_REGEX}}"
SKIP_REGULAR_EXPRESSION "${TEST_SKIP_REGEX}"
REQUIRED_FILES "${TEST_FILE}"
FIXTURES_REQUIRED rocprofsys-global-tmp-files
FIXTURES_REQUIRED "${_PYTHON_FIXTURES}"
${_TEST_PROPERTIES}
)
endforeach()
@@ -1321,6 +1378,16 @@ function(ROCPROFILER_SYSTEMS_ADD_VALIDATION_TEST)
list(APPEND TEST_ENVIRONMENT "ROCPROFSYS_CI_TIMEOUT=${TEST_TIMEOUT}")
# Determine the cleanup fixture this validation test should require
set(_VALIDATION_FIXTURES "rocprofsys-global-tmp-files")
if("${TEST_NAME}" MATCHES "-binary-rewrite(-run)?$")
string(REGEX REPLACE "-binary-rewrite(-run)?$" "" _BASE_TEST_NAME "${TEST_NAME}")
list(APPEND _VALIDATION_FIXTURES "${_BASE_TEST_NAME}-binary-rewrite-fixture")
elseif("${TEST_NAME}" MATCHES "-runtime-instrument$")
string(REGEX REPLACE "-runtime-instrument$" "" _BASE_TEST_NAME "${TEST_NAME}")
list(APPEND _VALIDATION_FIXTURES "${_BASE_TEST_NAME}-runtime-instrument-fixture")
endif()
foreach(
_TEST
validate-${TEST_NAME}-timemory
@@ -1361,7 +1428,7 @@ function(ROCPROFILER_SYSTEMS_ADD_VALIDATION_TEST)
FAIL_REGULAR_EXPRESSION "${TEST_FAIL_REGEX}"
SKIP_REGULAR_EXPRESSION "${TEST_SKIP_REGEX}"
REQUIRED_FILES "${TEST_FILE}"
FIXTURES_REQUIRED rocprofsys-global-tmp-files
FIXTURES_REQUIRED "${_VALIDATION_FIXTURES}"
${TEST_PROPERTIES}
)
endforeach()