[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:
committed by
GitHub
parent
66ea1cdff2
commit
a2288eb50b
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user