Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -73,4 +73,11 @@ add_custom_target( mygen
COMMAND sh -xc "sed 's/_GPU_BLOCKINFO_H_/SRC_DEF_GPU_BLOCK_INFO_H_/' ${BINFO_DEF} >>${BINFO_HEADER}"
)


add_subdirectory(src/core)
if(AQLPROFILE_BUILD_TESTS)
enable_testing()
include(CTest)
add_subdirectory(src/util/tests)
add_subdirectory(src/pm4/tests)
endif()
26 changes: 26 additions & 0 deletions src/core/tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -122,3 +122,29 @@ gtest_add_tests(
set_tests_properties(
${counters-test_TESTS} PROPERTIES TIMEOUT 45 LABELS "unittests" FAIL_REGULAR_EXPRESSION
"${AQLPROFILE_DEFAULT_FAIL_REGEX}")

# Add tests for pm4 factory
add_executable(pm4-factory-test)
SET(AQLPROFILE_PM4_FACTORY_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/pm4_factory_tests.cpp
${CMAKE_CURRENT_SOURCE_DIR}/../pm4_factory.cpp
)
target_sources(pm4-factory-test PRIVATE ${AQLPROFILE_PM4_FACTORY_SOURCES})
target_include_directories(pm4-factory-test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${LIB_DIR} ${LIB_DIR}/core/include)
target_link_libraries(
pm4-factory-test
PRIVATE
hsa-runtime64::hsa-runtime64
GTest::gtest
GTest::gtest_main
GTest::gmock
GTest::gmock_main)

gtest_add_tests(
TARGET pm4-factory-test
SOURCES ${AQLPROFILE_PM4_FACTORY_SOURCES}
TEST_LIST pm4-factory-test_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(
${pm4-factory-test_TESTS} PROPERTIES TIMEOUT 45 LABELS "unittests" FAIL_REGULAR_EXPRESSION
"${AQLPROFILE_DEFAULT_FAIL_REGEX}")
41 changes: 41 additions & 0 deletions src/core/tests/pm4_factory_tests.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#include <gtest/gtest.h>
#include "core/pm4_factory.h"

using namespace aql_profile;

namespace {

// Helper to create a valid agent info struct
aqlprofile_agent_info_v1_t makeTestAgentInfo(const char* gfxip = "gfx900") {
aqlprofile_agent_info_v1_t info{};
info.agent_gfxip = strdup(gfxip);
info.cu_num = 64;
info.se_num = 4;
info.xcc_num = 1;
info.shader_arrays_per_se = 2;
info.domain = 0;
info.location_id = 0x1234;
return info;
}

} // namespace

// Test: Register agent and retrieve info (happy path)
TEST(Pm4FactoryTest, RegisterAgentAndGetAgentInfo) {
auto agentInfo = makeTestAgentInfo();
aqlprofile_agent_handle_t handle = RegisterAgent(&agentInfo);
const AgentInfo* info = GetAgentInfo(handle);
ASSERT_NE(info, nullptr) << "AgentInfo should not be null";
EXPECT_EQ(info->cu_num, 64u);
EXPECT_EQ(info->se_num, 4u);
EXPECT_EQ(info->xcc_num, 1u);
EXPECT_EQ(info->shader_arrays_per_se, 2u);
}

// Test: GetAgentInfo returns nullptr for invalid handle
TEST(Pm4FactoryTest, GetAgentInfoInvalidHandleReturnsNull) {
aqlprofile_agent_handle_t invalidHandle{};
invalidHandle.handle = 99999; // unlikely to exist
const AgentInfo* info = GetAgentInfo(invalidHandle);
EXPECT_EQ(info, nullptr);
}
131 changes: 128 additions & 3 deletions src/pm4/tests/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,14 +1,65 @@
cmake_minimum_required(VERSION 3.16.0)

include(GoogleTest)
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})


# Add a test for gfx9 command builder
add_executable(gfx9-command-builder-test)
add_executable(command-builder-test)
SET(AQLPROFILE_COMMAND_BUILDER_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/cmd_builder_tests.cpp
)
target_sources(gfx9-command-builder-test PRIVATE ${AQLPROFILE_COMMAND_BUILDER_SOURCES})
target_sources(command-builder-test PRIVATE ${AQLPROFILE_COMMAND_BUILDER_SOURCES})
target_include_directories(command-builder-test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${LIB_DIR})
target_link_libraries(
command-builder-test
PRIVATE
hsa-runtime64::hsa-runtime64
GTest::gtest
GTest::gtest_main
GTest::gmock
GTest::gmock_main)
gtest_add_tests(
TARGET command-builder-test
SOURCES ${AQLPROFILE_COMMAND_BUILDER_SOURCES}
TEST_LIST command-builder-test_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(
${command-builder-test_TESTS} PROPERTIES TIMEOUT 45 LABELS "unittests" FAIL_REGULAR_EXPRESSION
"${AQLPROFILE_DEFAULT_FAIL_REGEX}")

# Add a test for pmc_builder
add_executable(pmc-builder-test)
SET(AQLPROFILE_PMC_BUILDER_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/pmc_builder_tests.cpp
)
target_sources(pmc-builder-test PRIVATE ${AQLPROFILE_PMC_BUILDER_SOURCES})
target_include_directories(pmc-builder-test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${LIB_DIR} ${LIB_DIR}/core/include)
target_link_libraries(
pmc-builder-test
PRIVATE
hsa-runtime64::hsa-runtime64
GTest::gtest
GTest::gtest_main
GTest::gmock
GTest::gmock_main)

gtest_add_tests(
TARGET pmc-builder-test
SOURCES ${AQLPROFILE_PMC_BUILDER_SOURCES}
TEST_LIST pmc-builder-test_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(
${pmc-builder-test_TESTS} PROPERTIES TIMEOUT 45 LABELS "unittests" FAIL_REGULAR_EXPRESSION
"${AQLPROFILE_DEFAULT_FAIL_REGEX}")

# Add a test for gfx9_comand_builder
add_executable(gfx9-command-builder-test)
SET(AQLPROFILE_GFX9_COMMAND_BUILDER_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/gfx9_cmd_builder_tests.cpp
)
target_sources(gfx9-command-builder-test PRIVATE ${AQLPROFILE_GFX9_COMMAND_BUILDER_SOURCES})
target_include_directories(gfx9-command-builder-test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${LIB_DIR})
target_link_libraries(
gfx9-command-builder-test
Expand All @@ -20,9 +71,83 @@ target_link_libraries(
GTest::gmock_main)
gtest_add_tests(
TARGET gfx9-command-builder-test
SOURCES ${AQLPROFILE_COMMAND_BUILDER_SOURCES}
SOURCES ${AQLPROFILE_GFX9_COMMAND_BUILDER_SOURCES}
TEST_LIST gfx9-command-builder-test_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(
${gfx9-command-builder-test_TESTS} PROPERTIES TIMEOUT 45 LABELS "unittests" FAIL_REGULAR_EXPRESSION
"${AQLPROFILE_DEFAULT_FAIL_REGEX}")

# Add a SPM builder test
add_executable(spm-builder-test)
SET(AQLPROFILE_SPM_BUILDER_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/spm_builder_test.cpp
)
target_sources(spm-builder-test PRIVATE ${AQLPROFILE_SPM_BUILDER_SOURCES})
target_include_directories(spm-builder-test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${LIB_DIR} ${LIB_DIR}/core/include)
target_link_libraries(
spm-builder-test
PRIVATE
hsa-runtime64::hsa-runtime64
GTest::gtest
GTest::gtest_main
GTest::gmock
GTest::gmock_main)

gtest_add_tests(
TARGET spm-builder-test
SOURCES ${AQLPROFILE_SPM_BUILDER_SOURCES}
TEST_LIST spm-builder-test_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(
${spm-builder-test_TESTS} PROPERTIES TIMEOUT 45 LABELS "unittests" FAIL_REGULAR_EXPRESSION
"${AQLPROFILE_DEFAULT_FAIL_REGEX}")

# Add a test for trace config
add_executable(trace-config-test)
SET(AQLPROFILE_TRACE_CONFIG_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/trace_config_test.cpp
)
target_sources(trace-config-test PRIVATE ${AQLPROFILE_TRACE_CONFIG_SOURCES})
target_include_directories(trace-config-test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${LIB_DIR} ${LIB_DIR}/core/include)
target_link_libraries(
trace-config-test
PRIVATE
hsa-runtime64::hsa-runtime64
GTest::gtest
GTest::gtest_main
GTest::gmock
GTest::gmock_main)

gtest_add_tests(
TARGET trace-config-test
SOURCES ${AQLPROFILE_TRACE_CONFIG_SOURCES}
TEST_LIST trace-config-test_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(
${trace-config-test_TESTS} PROPERTIES TIMEOUT 45 LABELS "unittests" FAIL_REGULAR_EXPRESSION
"${AQLPROFILE_DEFAULT_FAIL_REGEX}")

# Add a test for sqtt builder
add_executable(sqtt-builder-test)
SET(AQLPROFILE_SQTT_BUILDER_SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/sqtt_builder_tests.cpp
)
target_sources(sqtt-builder-test PRIVATE ${AQLPROFILE_SQTT_BUILDER_SOURCES})
target_include_directories(sqtt-builder-test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${LIB_DIR} ${LIB_DIR}/core/include)
target_link_libraries(
sqtt-builder-test
PRIVATE
hsa-runtime64::hsa-runtime64
GTest::gtest
GTest::gtest_main
GTest::gmock
GTest::gmock_main)
gtest_add_tests(
TARGET sqtt-builder-test
SOURCES ${AQLPROFILE_SQTT_BUILDER_SOURCES}
TEST_LIST sqtt-builder-test_TESTS
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(
${sqtt-builder-test_TESTS} PROPERTIES TIMEOUT 45 LABELS "unittests" FAIL_REGULAR_EXPRESSION
"${AQLPROFILE_DEFAULT_FAIL_REGEX}")
Loading