[rocprofiler-sdk] Install unit tests and helper functions for integration tests (#921)

* [rocprofiler-sdk] Install unit tests and helper functions for integration tests

* Fix rocprofiler-sdk-tests-target export

* Fix handling of cmake policy CMP0174

* Remove -vv from new pytest.ini files

* add unit tests and integration tests.

* add path to ci workflow.

* misc. fixes.

* pc sampling tests.

* bug fixes.

* pc sampling tests fix.

* misc.

* Update CMakeLists.txt

* Update rocprofiler_config_install_tests.cmake, correct license name

* fix units tests install issues.

* fix counters_def file path.

* fix bug, arg shifting.

* vendor pytest-cmake.

* cmake config fix. missing endfunction()

* disable tests, 1.rocprofv3-trace-hip-libs. 2.kernel-tracing. 3.external_correlation 4.rocpd.

* disable buffered-tracing test and remove pytest-cmake from requirements.txt.

* disable hip-graph-tracing test.

* fix building standalone tests to load rocprofiler-sdk cmake package first and then find rocprofiler_sdk_pytest module.

* addressed comments: 1.add local bin path to code cov workflow. 2.add to cmake prefix path local bin. 3.use ROCPROFILER_MEMCHECK_PRELOAD_ENV_VALUE 4.misc. fix

* enabled back tests api_buffered, external_correlation_id, hip-graph, kernel-tracing, rocpd, tracing-hip-in-libraries. and misc fixes(formating, extra fixtures for agent-index tests.)

* cpack to use llvm bin for .hsaco debug symbols.

* psdb tests fixes.

* EOL.

* misc. fixes and Disable api_buffered_tracing, external_correlation_id, hip-graph-tracing, kernel-tracing, rocpd, summary, tracing-hip-libraries, tracing-plus-counter-collection.

* fix incorrect cmakelists file.

* strip smallkernel.bin

* format.

* revert disabled tests commit.

* misc. fix in counter tests.

* misc.

* search codeobj unit test assets in curr bin and install bin.

* refactor newly added rocpd tests.

* modify tests for newly added hip-host-tracing.

* add LD LIB path to units, psdb is failing due to libs not being found.

---------

Co-authored-by: Venkateshwar Reddy Kandula <venkateshwar.kandula1306@gmail.com>
Co-authored-by: Venkateshwar Reddy Kandula <Venkateshwarreddy.Kandula@amd.com>
Co-authored-by: JeniferC99 <150404595+JeniferC99@users.noreply.github.com>
This commit is contained in:
Jonathan R. Madsen
2025-11-21 08:06:56 -06:00
committed by GitHub
parent 66ea1cdff2
commit a2288eb50b
143 changed files with 3964 additions and 3734 deletions
@@ -2,7 +2,14 @@
# Waitcnt ISA tests
#
project(rocprofiler-sdk-tests-att-decoder-waitcnt LANGUAGES C CXX)
include(GoogleTest)
set(waitcnt_sources att_decoder_waitcnt_test.cpp)
add_executable(att-decoder-waitcnt-test)
target_sources(att-decoder-waitcnt-test PRIVATE ${waitcnt_sources})
target_link_libraries(
att-decoder-waitcnt-test
PRIVATE rocprofiler-sdk::rocprofiler-sdk-att-parser
@@ -12,12 +19,11 @@ target_link_libraries(
rocprofiler-sdk::rocprofiler-sdk-static-library
GTest::gtest
GTest::gtest_main)
target_sources(att-decoder-waitcnt-test PRIVATE att_decoder_waitcnt_test.cpp)
gtest_add_tests(
rocprofiler_add_unit_test(
TARGET att-decoder-waitcnt-test
SOURCES att_decoder_waitcnt_test.cpp
TEST_LIST att-decoder-waitcnt-test_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(${att-decoder-waitcnt-test_TESTS} PROPERTIES TIMEOUT 10 LABELS
"unittests")
SOURCES ${waitcnt_sources}
TIMEOUT 10
ENVIRONMENT
"LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/llvm/lib:/opt/rocm/lib:/opt/rocm/llvm/lib:$ENV{LD_LIBRARY_PATH}"
)
@@ -1,13 +1,13 @@
rocprofiler_deactivate_clang_tidy()
project(rocprofiler-sdk-unit-tests-aql LANGUAGES C CXX)
include(GoogleTest)
set(ROCPROFILER_LIB_AQL_TEST_SOURCES "aql_test.cpp" "helpers.cpp")
set(ROCPROFILER_LIB_AQL_TEST_SOURCES aql_test.cpp helpers.cpp)
add_executable(aql-test)
target_sources(aql-test PRIVATE ${ROCPROFILER_LIB_AQL_TEST_SOURCES})
target_link_libraries(
aql-test
PRIVATE rocprofiler-sdk::counter-test-constants
@@ -19,12 +19,14 @@ target_link_libraries(
GTest::gtest
GTest::gtest_main)
gtest_add_tests(
set(_ROCPROFILER_SHARE_DIR
"${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}/${PACKAGE_NAME}")
rocprofiler_add_unit_test(
TARGET aql-test
SOURCES ${ROCPROFILER_LIB_AQL_TEST_SOURCES}
TEST_LIST aql-test_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(
${aql-test_TESTS} PROPERTIES TIMEOUT 45 LABELS "unittests" FAIL_REGULAR_EXPRESSION
"${ROCPROFILER_DEFAULT_FAIL_REGEX}")
TIMEOUT 45
ENVIRONMENT
"ROCPROFILER_METRICS_PATH=${_ROCPROFILER_SHARE_DIR}"
"LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/llvm/lib:/opt/rocm/lib:/opt/rocm/llvm/lib:$ENV{LD_LIBRARY_PATH}"
FAIL_REGULAR_EXPRESSION "${ROCPROFILER_DEFAULT_FAIL_REGEX}")
@@ -261,15 +261,35 @@ findViaInstallPath(const std::string& filename)
}
std::string
findViaEnvironment(const std::string& filename)
locateMetricsFile(std::string_view name)
{
if(const char* metrics_path = nullptr; (metrics_path = getenv("ROCPROFILER_METRICS_PATH")))
namespace fs = common::filesystem;
// 1) Try env var
if(const char* env = std::getenv("ROCPROFILER_METRICS_PATH"))
{
ROCP_INFO << filename << " is being looked up via env variable ROCPROFILER_METRICS_PATH";
return common::filesystem::path{std::string{metrics_path}} / filename;
fs::path candidate = fs::path{env} / std::string{name};
if(fs::exists(candidate))
{
ROCP_INFO << name << " found via ROCPROFILER_METRICS_PATH: " << candidate.string();
return candidate.string();
}
ROCP_WARNING << name << " not found at ROCPROFILER_METRICS_PATH (" << env
<< "). Falling back to install path.";
}
// No environment variable, lookup via install path
return findViaInstallPath(filename);
// 2) Fall back to install path
auto install_candidate = findViaInstallPath(std::string{name});
if(fs::exists(install_candidate))
{
ROCP_INFO << name << " found via install path: " << install_candidate;
return install_candidate;
}
// 3) Neither found -> fatal
ROCP_FATAL << "Metric file '" << name << "' not found.\n"
<< " Tried: ROCPROFILER_METRICS_PATH/" << name << " and " << install_candidate;
return {};
}
} // namespace
@@ -298,7 +318,7 @@ loadMetrics(bool reload, const std::optional<ArchMetric> add_metric)
}
auto reload_func = [&]() {
auto counters_path = findViaEnvironment("counter_defs.yaml");
auto counters_path = locateMetricsFile("counter_defs.yaml");
ROCP_FATAL_IF(!common::filesystem::exists(counters_path))
<< "metric xml file '" << counters_path << "' does not exist";
return std::make_shared<counter_metrics_t>(loadYAML(counters_path, add_metric));
@@ -14,13 +14,15 @@ target_link_libraries(
rocprofiler-sdk::rocprofiler-sdk-static-library GTest::gtest
GTest::gtest_main)
gtest_add_tests(
set(_ROCPROFILER_SHARE_DIR
"${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}/${PACKAGE_NAME}")
rocprofiler_add_unit_test(
TARGET parser-test
SOURCES ${ROCPROFILER_LIB_PARSER_TEST_SOURCES}
TEST_LIST parser-tests_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(
${parser-tests_TESTS}
PROPERTIES TIMEOUT 45 LABELS "unittests" FAIL_REGULAR_EXPRESSION
"${ROCPROFILER_DEFAULT_FAIL_REGEX}")
TIMEOUT 45
LABELS unittests
ENVIRONMENT
"ROCPROFILER_METRICS_PATH=${_ROCPROFILER_SHARE_DIR}"
"LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/llvm/lib:/opt/rocm/lib:/opt/rocm/llvm/lib:$ENV{LD_LIBRARY_PATH}"
FAIL_REGULAR_EXPRESSION "${ROCPROFILER_DEFAULT_FAIL_REGEX}")
@@ -1,5 +1,7 @@
rocprofiler_deactivate_clang_tidy()
project(rocprofiler-sdk-unit-tests-counters LANGUAGES C CXX)
include(GoogleTest)
find_program(
@@ -18,13 +20,10 @@ function(generate_hsaco TARGET_ID INPUT_FILE OUTPUT_FILE)
add_custom_command(
OUTPUT ${PROJECT_BINARY_DIR}/${OUTPUT_FILE}
COMMAND ${amdclangpp_EXECUTABLE} ${CLANG_ARG_LIST}
COMMAND
${CMAKE_COMMAND} -E copy
${PROJECT_BINARY_DIR}/source/lib/rocprofiler-sdk/counters/tests/${OUTPUT_FILE}
${CMAKE_BINARY_DIR}/bin/${OUTPUT_FILE}
OUTPUT ${CMAKE_BINARY_DIR}/bin/${OUTPUT_FILE}
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/bin/${OUTPUT_FILE}
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/${OUTPUT_FILE}
${CMAKE_BINARY_DIR}/bin/${OUTPUT_FILE}
DEPENDS ${INPUT_FILE}
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
COMMENT "Building ${OUTPUT_FILE}...")
set(HSACO_TARGET_LIST
${HSACO_TARGET_LIST} ${PROJECT_BINARY_DIR}/${OUTPUT_FILE}
@@ -39,6 +38,11 @@ endforeach()
add_custom_target(agent_hasco_targets DEPENDS ${HSACO_TARGET_LIST})
install(
FILES ${HSACO_TARGET_LIST}
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PACKAGE_NAME}/tests/unit-tests/bin
COMPONENT tests)
add_library(counter_test_constants OBJECT)
add_library(rocprofiler-sdk::counter-test-constants ALIAS counter_test_constants)
set(ROCPROFILER_LIB_COUNTER_TEST_CONSTANTS_SOURCES hsa_tables.cpp)
@@ -60,15 +64,15 @@ set(ROCPROFILER_LIB_COUNTER_TEST_SOURCES
device_counting.cpp)
set(ROCPROFILER_LIB_COUNTER_TEST_HEADERS code_object_loader.hpp device_counting.hpp)
add_executable(counter-test)
add_executable(counter-tests)
target_sources(counter-test PRIVATE ${ROCPROFILER_LIB_COUNTER_TEST_SOURCES}
${ROCPROFILER_LIB_COUNTER_TEST_HEADERS})
target_sources(counter-tests PRIVATE ${ROCPROFILER_LIB_COUNTER_TEST_SOURCES}
${ROCPROFILER_LIB_COUNTER_TEST_HEADERS})
add_dependencies(counter-test agent_hasco_targets)
add_dependencies(counter-tests agent_hasco_targets)
target_link_libraries(
counter-test
counter-tests
PRIVATE rocprofiler-sdk::counter-test-constants
rocprofiler-sdk::rocprofiler-sdk-hsa-runtime
rocprofiler-sdk::rocprofiler-sdk-hip
@@ -77,48 +81,44 @@ target_link_libraries(
GTest::gtest
GTest::gtest_main)
gtest_add_tests(
TARGET counter-test
SOURCES ${ROCPROFILER_LIB_COUNTER_TEST_SOURCES}
TEST_LIST counter-tests_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(
${counter-tests_TESTS}
PROPERTIES
TIMEOUT
45
LABELS
"unittests"
FAIL_REGULAR_EXPRESSION
"${ROCPROFILER_DEFAULT_FAIL_REGEX}"
SKIP_REGULAR_EXPRESSION
"Running non-intercept test(.*)could not be locked for profiling due to lack of permissions.*"
)
set(_ROCPROFILER_SHARE_DIR
"${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}/${PACKAGE_NAME}")
# unstable counter collection test: Generates HW exception leading to GPU hang or memory
# access fault
set_tests_properties(
device_counting_service_test.sync_counters device_counting_service_test.async_counters
PROPERTIES DISABLED "${ROCPROFILER_DISABLE_UNSTABLE_CTESTS}")
rocprofiler_add_unit_test(
TARGET counter-tests
SOURCES ${ROCPROFILER_LIB_COUNTER_TEST_SOURCES}
TIMEOUT 45
ENVIRONMENT
"ROCPROFILER_METRICS_PATH=${_ROCPROFILER_SHARE_DIR}"
"LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/llvm/lib:/opt/rocm/lib:/opt/rocm/llvm/lib:$ENV{LD_LIBRARY_PATH}"
FAIL_REGULAR_EXPRESSION "${ROCPROFILER_DEFAULT_FAIL_REGEX}"
SKIP_REGULAR_EXPRESSION
"Running non-intercept test(.*)could not be locked for profiling due to lack of permissions.*"
DISABLE_TESTS
device_counting_service_test.sync_counters
device_counting_service_test.async_counters
device_counting_service_test.sync_gpu_util_verify
device_counting_service_test.sync_sq_waves_verify
device_counting_service_test.sync_sq_waves_verify_non_intercept
device_counting_service_test.raw_sq_waves_verify
device_counting_service_test.sync_grbm_verify)
set(ROCPROFILER_LIB_CONSUMER_TEST_SOURCES consumer_test.cpp)
add_executable(consumer-test)
target_sources(consumer-test PRIVATE ${ROCPROFILER_LIB_CONSUMER_TEST_SOURCES})
add_executable(consumer-tests)
target_sources(consumer-tests PRIVATE ${ROCPROFILER_LIB_CONSUMER_TEST_SOURCES})
target_link_libraries(
consumer-test rocprofiler-sdk::rocprofiler-sdk-hsa-runtime
consumer-tests rocprofiler-sdk::rocprofiler-sdk-hsa-runtime
rocprofiler-sdk::rocprofiler-sdk-hip rocprofiler-sdk::rocprofiler-sdk-common-library
rocprofiler-sdk::rocprofiler-sdk-static-library GTest::gtest GTest::gtest_main)
gtest_add_tests(
TARGET consumer-test
rocprofiler_add_unit_test(
TARGET consumer-tests
SOURCES ${ROCPROFILER_LIB_CONSUMER_TEST_SOURCES}
TEST_LIST consumer-tests_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(
${consumer-tests_TESTS}
PROPERTIES TIMEOUT 45 LABELS "unittests" FAIL_REGULAR_EXPRESSION
"${ROCPROFILER_DEFAULT_FAIL_REGEX}")
TIMEOUT 45
ENVIRONMENT
"LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/llvm/lib:/opt/rocm/lib:/opt/rocm/llvm/lib:$ENV{LD_LIBRARY_PATH}"
FAIL_REGULAR_EXPRESSION "${ROCPROFILER_DEFAULT_FAIL_REGEX}")
@@ -36,13 +36,11 @@ target_link_libraries(
rocprofiler-sdk::rocprofiler-sdk-static-library GTest::gtest
GTest::gtest_main)
gtest_add_tests(
rocprofiler_add_unit_test(
TARGET kfd-events-parser
SOURCES ${ROCPROFILER_LIB_COUNTER_TEST_SOURCES}
TEST_LIST kfd-events-parsers_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(
${kfd-events-parsers_TESTS}
PROPERTIES TIMEOUT 45 LABELS "unittests;kfd-events" FAIL_REGULAR_EXPRESSION
"${ROCPROFILER_DEFAULT_FAIL_REGEX}")
SOURCES ${ROCPROFILER_LIB_KFD_EVENTS_TEST_SOURCES}
TIMEOUT 45
LABELS "unittests;kfd-events"
ENVIRONMENT
"LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/llvm/lib:/opt/rocm/lib:/opt/rocm/llvm/lib:$ENV{LD_LIBRARY_PATH}"
FAIL_REGULAR_EXPRESSION "${ROCPROFILER_DEFAULT_FAIL_REGEX}")
@@ -33,16 +33,14 @@ target_link_libraries(
rocprofiler-sdk::rocprofiler-sdk-static-library GTest::gtest
GTest::gtest_main)
gtest_add_tests(
rocprofiler_add_unit_test(
TARGET pcs_gfx9_test
SOURCES ${ROCPROFILER_LIB_PC_SAMPLING_PARSER_GFX9_TEST_SOURCES}
TEST_LIST pcs_gfx9_test_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(
${pcs_gfx9_test_TESTS}
PROPERTIES TIMEOUT 45 LABELS "unittests" FAIL_REGULAR_EXPRESSION
"${ROCPROFILER_DEFAULT_FAIL_REGEX}")
LABELS "unittests;pc-sampling;gfx9"
TIMEOUT 45
ENVIRONMENT
"LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/llvm/lib:/opt/rocm/lib:/opt/rocm/llvm/lib:$ENV{LD_LIBRARY_PATH}"
)
add_executable(pcs_id_test)
@@ -55,15 +53,14 @@ target_link_libraries(
rocprofiler-sdk::rocprofiler-sdk-static-library GTest::gtest
GTest::gtest_main)
gtest_add_tests(
rocprofiler_add_unit_test(
TARGET pcs_id_test
SOURCES ${ROCPROFILER_LIB_PC_SAMPLING_PARSER_ID_TEST_SOURCES}
TEST_LIST pcs_id_test_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(
${pcs_id_test_TESTS} PROPERTIES TIMEOUT 45 LABELS "unittests" FAIL_REGULAR_EXPRESSION
"${ROCPROFILER_DEFAULT_FAIL_REGEX}")
LABELS "unittests"
TIMEOUT 45
ENVIRONMENT
"LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/llvm/lib:/opt/rocm/lib:/opt/rocm/llvm/lib:$ENV{LD_LIBRARY_PATH}"
FAIL_REGULAR_EXPRESSION "${ROCPROFILER_DEFAULT_FAIL_REGEX}")
add_executable(pcs_bench_test)
@@ -91,16 +88,14 @@ target_link_libraries(
rocprofiler-sdk::rocprofiler-sdk-static-library GTest::gtest
GTest::gtest_main)
gtest_add_tests(
rocprofiler_add_unit_test(
TARGET pcs_thread_test
SOURCES ${ROCPROFILER_LIB_PC_SAMPLING_PARSER_MULTIGPU_TEST_SOURCES}
TEST_LIST pcs_thread_test_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(
${pcs_thread_test_TESTS}
PROPERTIES TIMEOUT 75 LABELS "unittests" FAIL_REGULAR_EXPRESSION
"${ROCPROFILER_DEFAULT_FAIL_REGEX}")
LABELS "unittests"
TIMEOUT 75
ENVIRONMENT
"LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/llvm/lib:/opt/rocm/lib:/opt/rocm/llvm/lib:$ENV{LD_LIBRARY_PATH}"
FAIL_REGULAR_EXPRESSION "${ROCPROFILER_DEFAULT_FAIL_REGEX}")
add_executable(pcs_gfx12_test)
@@ -114,13 +109,11 @@ target_link_libraries(
rocprofiler-sdk::rocprofiler-sdk-static-library GTest::gtest
GTest::gtest_main)
gtest_add_tests(
rocprofiler_add_unit_test(
TARGET pcs_gfx12_test
SOURCES ${ROCPROFILER_LIB_PC_SAMPLING_PARSER_GFX12_TEST_SOURCES}
TEST_LIST pcs_gfx12_test_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(
${pcs_gfx12_test_TESTS}
PROPERTIES TIMEOUT 45 LABELS "unittests" FAIL_REGULAR_EXPRESSION
"${ROCPROFILER_DEFAULT_FAIL_REGEX}")
LABELS "unittests"
TIMEOUT 45
ENVIRONMENT
"LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/llvm/lib:/opt/rocm/lib:/opt/rocm/llvm/lib:$ENV{LD_LIBRARY_PATH}"
FAIL_REGULAR_EXPRESSION "${ROCPROFILER_DEFAULT_FAIL_REGEX}")
@@ -19,14 +19,12 @@ target_link_libraries(
rocprofiler-sdk::rocprofiler-sdk-static-library GTest::gtest
GTest::gtest_main)
gtest_add_tests(
rocprofiler_add_unit_test(
TARGET pcs-test
SOURCES ${ROCPROFILER_LIB_COUNTER_TEST_SOURCES}
TEST_LIST pcs-tests_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(
${pcs-tests_TESTS}
PROPERTIES TIMEOUT 45 LABELS "unittests;pc-sampling" SKIP_REGULAR_EXPRESSION
"PC sampling unavailable" FAIL_REGULAR_EXPRESSION
"${ROCPROFILER_DEFAULT_FAIL_REGEX}")
SOURCES ${ROCPROFILER_LIB_PC_SAMPLING_TEST_SOURCES}
TIMEOUT 45
LABELS "unittests;pc-sampling"
SKIP_REGULAR_EXPRESSION "PC sampling unavailable"
ENVIRONMENT
"LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/llvm/lib:/opt/rocm/lib:/opt/rocm/llvm/lib:$ENV{LD_LIBRARY_PATH}"
FAIL_REGULAR_EXPRESSION "${ROCPROFILER_DEFAULT_FAIL_REGEX}")
@@ -35,15 +35,15 @@ target_link_libraries(
GTest::gtest
GTest::gtest_main)
gtest_add_tests(
rocprofiler_add_unit_test(
TARGET rocprofiler-sdk-lib-tests
SOURCES ${rocprofiler_lib_sources}
TEST_LIST lib_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(
${lib_TESTS} PROPERTIES TIMEOUT 30 LABELS "unittests" FAIL_REGULAR_EXPRESSION
"${ROCPROFILER_DEFAULT_FAIL_REGEX}")
TIMEOUT 30
LABELS "unittests"
ENVIRONMENT
"LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/llvm/lib:/opt/rocm/lib:/opt/rocm/llvm/lib:$ENV{LD_LIBRARY_PATH}"
FAIL_REGULAR_EXPRESSION "${ROCPROFILER_DEFAULT_FAIL_REGEX}")
# -------------------------------------------------------------------------------------- #
#
@@ -68,17 +68,16 @@ target_link_libraries(
set_target_properties(rocprofiler-sdk-lib-tests-shared PROPERTIES BUILD_RPATH
"\$ORIGIN/../lib")
gtest_add_tests(
TARGET rocprofiler-sdk-lib-tests-shared
SOURCES ${rocprofiler_shared_lib_sources}
TEST_LIST shared_lib_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set(rocprofiler-sdk-lib-tests-env
"LD_LIBRARY_PATH=${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}:$ENV{LD_LIBRARY_PATH}")
set_tests_properties(
${shared_lib_TESTS}
PROPERTIES TIMEOUT 120 LABELS "unittests" ENVIRONMENT
"${rocprofiler-sdk-lib-tests-env}" FAIL_REGULAR_EXPRESSION
"${ROCPROFILER_DEFAULT_FAIL_REGEX}")
rocprofiler_add_unit_test(
TARGET rocprofiler-sdk-lib-tests-shared
SOURCES ${rocprofiler_shared_lib_sources}
TEST_LIST shared_lib_TESTS
TIMEOUT 120
LABELS "unittests"
ENVIRONMENT
"${rocprofiler-sdk-lib-tests-env}"
"LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/llvm/lib:/opt/rocm/lib:/opt/rocm/llvm/lib:$ENV{LD_LIBRARY_PATH}"
FAIL_REGULAR_EXPRESSION "${ROCPROFILER_DEFAULT_FAIL_REGEX}")
@@ -19,13 +19,16 @@ target_link_libraries(
GTest::gtest_main
rocprofiler-sdk::counter-test-constants)
gtest_add_tests(
set(_ROCPROFILER_SHARE_DIR
"${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}/${PACKAGE_NAME}")
rocprofiler_add_unit_test(
TARGET thread-trace-packet-test
SOURCES ${ROCPROFILER_THREAD_TRACE_TEST_SOURCES}
TEST_LIST thread-trace-packet-test_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(
${thread-trace-packet-test_TESTS}
PROPERTIES TIMEOUT 10 LABELS "unittests" FAIL_REGULAR_EXPRESSION
"${ROCPROFILER_DEFAULT_FAIL_REGEX}")
TIMEOUT 10
LABELS "unittests"
ENVIRONMENT
"ROCPROFILER_METRICS_PATH=${_ROCPROFILER_SHARE_DIR}"
"LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/llvm/lib:/opt/rocm/lib:/opt/rocm/llvm/lib:$ENV{LD_LIBRARY_PATH}"
FAIL_REGULAR_EXPRESSION "${ROCPROFILER_DEFAULT_FAIL_REGEX}")
@@ -7,21 +7,17 @@ include(GoogleTest)
set(buffering_sources buffering-serial.cpp buffering-parallel.cpp buffering-save-load.cpp)
add_executable(buffering-test)
target_sources(buffering-test PRIVATE ${buffering_sources})
add_executable(buffering-tests)
target_sources(buffering-tests PRIVATE ${buffering_sources})
target_link_libraries(
buffering-test
buffering-tests
PRIVATE rocprofiler-sdk::rocprofiler-sdk-headers
rocprofiler-sdk::rocprofiler-sdk-common-library GTest::gtest
GTest::gtest_main)
gtest_add_tests(
TARGET buffering-test
rocprofiler_add_unit_test(
TARGET buffering-tests
SOURCES ${buffering_sources}
TEST_LIST buffering-tests_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(
${buffering-tests_TESTS}
PROPERTIES TIMEOUT 360 LABELS "unittests" FAIL_REGULAR_EXPRESSION
"${ROCPROFILER_DEFAULT_FAIL_REGEX}")
ENVIRONMENT
"LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/llvm/lib:/opt/rocm/lib:/opt/rocm/llvm/lib:$ENV{LD_LIBRARY_PATH}"
)
@@ -1,13 +1,68 @@
#
#
#
rocprofiler_deactivate_clang_tidy()
include(GoogleTest)
add_executable(codeobj-library-test)
add_executable(codeobj-library-tests)
set(CODEOBJ_LIB_TEST_SOURCES "codeobj_library_test.cpp")
target_sources(codeobj-library-test PRIVATE ${CODEOBJ_LIB_TEST_SOURCES})
target_sources(codeobj-library-tests PRIVATE ${CODEOBJ_LIB_TEST_SOURCES})
set(PKG_TEST_BIN_DIR "${CMAKE_INSTALL_DATAROOTDIR}/${PACKAGE_NAME}/tests/unit-tests/bin")
target_compile_definitions(
codeobj-library-tests
PRIVATE CODEOBJ_BINARY_DIR="${CMAKE_CURRENT_BINARY_DIR}/"
CODEOBJ_INSTALL_DIR="${CMAKE_INSTALL_PREFIX}/${PKG_TEST_BIN_DIR}/")
configure_file(smallkernel.bin smallkernel.bin COPYONLY)
configure_file(hipcc_output.s hipcc_output.s COPYONLY)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/hipcc_output.s
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PACKAGE_NAME}/tests/unit-tests/bin
COMPONENT tests)
find_program(
ROCM_LLVM_STRIP
NAMES llvm-strip
HINTS ${ROCM_PATH} ENV ROCM_PATH /opt/rocm
PATH_SUFFIXES llvm/bin bin)
set(_SMALLBIN "${CMAKE_CURRENT_BINARY_DIR}/smallkernel.bin")
set(_SMALLBIN_STRIPPED "${CMAKE_CURRENT_BINARY_DIR}/smallkernel.bin.stripped")
if(ROCM_LLVM_STRIP)
add_custom_command(
OUTPUT "${_SMALLBIN_STRIPPED}"
COMMAND "${ROCM_LLVM_STRIP}" -s "${_SMALLBIN}" -o "${_SMALLBIN_STRIPPED}"
DEPENDS "${_SMALLBIN}"
COMMENT
"Stripping ALL symbols from smallkernel.bin so CPack won't try to create a dbgsym"
VERBATIM)
add_custom_target(strip_smallkernel ALL DEPENDS "${_SMALLBIN_STRIPPED}")
install(
FILES "${_SMALLBIN_STRIPPED}"
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${PACKAGE_NAME}/tests/unit-tests/bin"
RENAME smallkernel.bin
COMPONENT tests)
else()
message(
WARNING
"llvm-strip not found; installing unmodified smallkernel.bin (CPack may fail on debuginfo)."
)
install(
FILES "${_SMALLBIN}"
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${PACKAGE_NAME}/tests/unit-tests/bin"
COMPONENT tests)
endif()
target_link_libraries(
codeobj-library-test
codeobj-library-tests
PRIVATE rocprofiler-sdk::rocprofiler-sdk-static-library
rocprofiler-sdk::rocprofiler-sdk-glog
rocprofiler-sdk::rocprofiler-sdk-hsa-runtime
@@ -19,19 +74,9 @@ target_link_libraries(
rocprofiler-sdk::rocprofiler-sdk-dw
rocprofiler-sdk::rocprofiler-sdk-elf)
gtest_add_tests(
TARGET codeobj-library-test
rocprofiler_add_unit_test(
TARGET codeobj-library-tests
SOURCES ${CODEOBJ_LIB_TEST_SOURCES}
TEST_LIST codeobj-library-test_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(
${codeobj-library-test_TESTS}
PROPERTIES TIMEOUT 10 LABELS "unittests" FAIL_REGULAR_EXPRESSION
"${ROCPROFILER_DEFAULT_FAIL_REGEX}")
target_compile_definitions(codeobj-library-test
PRIVATE -DCODEOBJ_BINARY_DIR=\"${CMAKE_CURRENT_BINARY_DIR}/\")
configure_file(smallkernel.bin smallkernel.bin COPYONLY)
configure_file(hipcc_output.s hipcc_output.s COPYONLY)
ENVIRONMENT
"LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/llvm/lib:/opt/rocm/lib:/opt/rocm/llvm/lib:$ENV{LD_LIBRARY_PATH}"
)
@@ -27,17 +27,26 @@
#include <string_view>
#include <vector>
#include "lib/common/filesystem.hpp"
#ifndef CODEOBJ_BINARY_DIR
static_assert(false && "Please define CODEOBJ_BINARY_DIR to codeobj tests binary, "
"e.g. ../source/lib/tests/codeobj/");
#endif
#ifndef CODEOBJ_INSTALL_DIR
static_assert(false && "Please define CODEOBJ_INSTALL_DIR to the installed tests bin directory "
"(e.g. <prefix>/share/rocprofiler-sdk/tests/unit-tests/bin/)");
#endif
namespace rocprofiler
{
namespace testing
{
namespace codeobjhelper
{
namespace fs = common::filesystem;
std::string
removeNull(std::string_view s)
{
@@ -47,11 +56,24 @@ removeNull(std::string_view s)
return u;
}
// Helper function for path to a test assets
static std::string
get_data_file_path(const char* name)
{
for(const char* base : {CODEOBJ_BINARY_DIR, CODEOBJ_INSTALL_DIR})
{
std::error_code ec;
fs::path p = fs::path(base) / name;
if(fs::exists(p, ec) && fs::is_regular_file(p, ec)) return p.string();
}
return {}; // not found
}
static const std::vector<std::string>&
GetHipccOutput()
{
static std::vector<std::string> result = []() {
std::ifstream file(CODEOBJ_BINARY_DIR "hipcc_output.s");
std::ifstream file(get_data_file_path("hipcc_output.s"));
std::vector<std::string> ret;
while(file.good())
@@ -69,7 +91,7 @@ static const std::vector<char>&
GetCodeobjContents()
{
static std::vector<char> buffer = []() {
std::string filename = CODEOBJ_BINARY_DIR "smallkernel.bin";
std::string filename = get_data_file_path("smallkernel.bin");
std::ifstream file(filename.data(), std::ios::binary);
using iterator_t = std::istreambuf_iterator<char>;
@@ -141,7 +163,9 @@ TEST(codeobj_library, decoder_component)
CodeobjDecoderComponent component(objdata.data(), objdata.size());
std::string kernel_with_protocol = "file://" CODEOBJ_BINARY_DIR "smallkernel.bin";
std::string smallkernel_path =
rocprofiler::testing::codeobjhelper::get_data_file_path("smallkernel.bin");
std::string kernel_with_protocol = "file://" + smallkernel_path;
LoadedCodeobjDecoder loadecomp(kernel_with_protocol.data(), loaded_offset, objdata.size());
ASSERT_EQ(component.m_symbol_map.size(), 1);
@@ -3,8 +3,6 @@
#
project(rocprofiler-sdk-tests-common LANGUAGES C CXX)
include(GoogleTest)
set(common_sources
c_array.cpp
demangling.cpp
@@ -27,13 +25,10 @@ target_link_libraries(
GTest::gtest
GTest::gtest_main)
gtest_add_tests(
rocprofiler_add_unit_test(
TARGET common-tests
SOURCES ${common_sources}
TEST_LIST common-tests_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(
${common-tests_TESTS}
PROPERTIES TIMEOUT 45 LABELS "unittests" FAIL_REGULAR_EXPRESSION
"${ROCPROFILER_DEFAULT_FAIL_REGEX}" ENVIRONMENT "TEST_LOG_LEVEL=info")
ENVIRONMENT
"TEST_LOG_LEVEL=info"
"LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/llvm/lib:/opt/rocm/lib:/opt/rocm/llvm/lib:$ENV{LD_LIBRARY_PATH}"
)