Skip to content

Commit eca6739

Browse files
authored
Adding tests for code coverage (#82)
* Adding tests for code coverage * integration tests * Fixing gtest dependencies * Removing gmock linkage * build fixes * Fixing Analyze job * CMake updates * Fixing PSDB * Addressing feedback * Adding licenses * Addressing feedback * updating dashboard * more API tests * Addressing feedback * correcting Macro * preloading libintercept
1 parent ed7a210 commit eca6739

26 files changed

+2086
-5
lines changed

.github/workflows/codeql.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ jobs:
5353
run: |
5454
git config --global --add safe.directory '*'
5555
apt-get update
56-
apt-get install -y build-essential cmake g++-11 g++-12 python3-pip libdw-dev rocm-llvm-dev
56+
apt-get install -y build-essential cmake g++-11 g++-12 python3-pip libdw-dev rocm-llvm-dev libgtest-dev libgmock-dev
5757
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 10 --slave /usr/bin/g++ g++ /usr/bin/g++-11 --slave /usr/bin/gcov gcov /usr/bin/gcov-11
5858
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 20 --slave /usr/bin/g++ g++ /usr/bin/g++-12 --slave /usr/bin/gcov gcov /usr/bin/gcov-12
5959

.github/workflows/continuous_integration.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ jobs:
6666
run: |
6767
git config --global --add safe.directory '*'
6868
apt-get update
69-
apt-get install -y build-essential cmake g++-11 g++-12 python3-pip
69+
apt-get install -y build-essential cmake g++-11 g++-12 python3-pip libgtest-dev libgmock-dev
7070
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 10 --slave /usr/bin/g++ g++ /usr/bin/g++-11 --slave /usr/bin/gcov gcov /usr/bin/gcov-11
7171
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 20 --slave /usr/bin/g++ g++ /usr/bin/g++-12 --slave /usr/bin/gcov gcov /usr/bin/gcov-12
7272
@@ -89,6 +89,7 @@ jobs:
8989
-DCTEST_BINARY_DIRECTORY="$(pwd)/build" -DAQLPROFILE_BUILD_NUM_JOBS="16" -DCTEST_SITE="${RUNNER_HOSTNAME}"
9090
-DCTEST_BUILD_NAME=PR_${{ github.ref_name }}_${{ github.repository }}-${{ matrix.os }}-${{ matrix.runner }}-core
9191
-DCMAKE_CTEST_ARGUMENTS=""
92+
-DAQLPROFILE_BUILD_TESTS=ON
9293
-DAQLPROFILE_EXTRA_CONFIGURE_ARGS=""
9394
-S ./dashboard.cmake
9495

@@ -142,5 +143,6 @@ jobs:
142143
-DCTEST_BINARY_DIRECTORY="$(pwd)/build" -DAQLPROFILE_BUILD_NUM_JOBS="16" -DCTEST_SITE="${RUNNER_HOSTNAME}"
143144
-DCTEST_BUILD_NAME=PR_${{ github.ref_name }}_${{ github.repository }}-${{ matrix.os }}-${{ matrix.runner }}-core
144145
-DCMAKE_CTEST_ARGUMENTS=""
146+
-DAQLPROFILE_BUILD_TESTS=ON
145147
-DAQLPROFILE_EXTRA_CONFIGURE_ARGS=""
146148
-S ./dashboard.cmake

CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ set ( DEST_NAME ${AQLPROFILE_NAME} )
6565
install ( TARGETS ${AQLPROFILE_TARGET} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT runtime )
6666
install ( TARGETS ${AQLPROFILE_TARGET} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT asan )
6767

68+
# Enable/disable test
69+
option(AQLPROFILE_BUILD_TESTS "Build tests for AQLProfile" OFF)
70+
6871
## Add the packaging directives for the runtime library.
6972
if ( ENABLE_ASAN_PACKAGING )
7073
set ( CPACK_PACKAGE_NAME ${AQLPROFILE_NAME}-asan )

build.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ cmake \
6565
-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE \
6666
-DCPACK_GENERATOR="STGZ" \
6767
-DGPU_TARGETS="$GPU_LIST" \
68+
-DAQLPROFILE_BUILD_TESTS=OFF \
6869
-DCPACK_OBJCOPY_EXECUTABLE="${PACKAGE_ROOT}/llvm/bin/llvm-objcopy" \
6970
-DCPACK_READELF_EXECUTABLE="${PACKAGE_ROOT}/llvm/bin/llvm-readelf" \
7071
-DCPACK_STRIP_EXECUTABLE="${PACKAGE_ROOT}/llvm/bin/llvm-strip" \

dashboard.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ if(NOT DEFINED AQLPROFILE_BUILD_NUM_JOBS)
4242
set(AQLPROFILE_BUILD_NUM_JOBS "16")
4343
endif()
4444

45-
set(CTEST_CONFIGURE_COMMAND "cmake -B ${CTEST_BINARY_DIRECTORY} -DCMAKE_BUILD_TYPE='RelWithDebInfo' -DCMAKE_PREFIX_PATH=/opt/rocm -DCMAKE_INSTALL_PREFIX=/opt/rocm -DCPACK_PACKAGING_INSTALL_PREFIX=/opt/rocm -DCPACK_GENERATOR='DEB;RPM;STGZ' -DGPU_TARGETS='gfx906,gfx90a,gfx942,gfx1101,gfx1201' ${AQLPROFILE_EXTRA_CONFIGURE_ARGS} ${CTEST_SOURCE_DIRECTORY}")
45+
set(CTEST_CONFIGURE_COMMAND "cmake -B ${CTEST_BINARY_DIRECTORY} -DCMAKE_BUILD_TYPE='RelWithDebInfo' -DCMAKE_PREFIX_PATH=/opt/rocm -DAQLPROFILE_BUILD_TESTS=ON -DCMAKE_INSTALL_PREFIX=/opt/rocm -DCPACK_PACKAGING_INSTALL_PREFIX=/opt/rocm -DCPACK_GENERATOR='DEB;RPM;STGZ' -DGPU_TARGETS='gfx906,gfx90a,gfx942,gfx1101,gfx1201' ${AQLPROFILE_EXTRA_CONFIGURE_ARGS} ${CTEST_SOURCE_DIRECTORY}")
4646
set(CTEST_BUILD_COMMAND "cmake --build \"${CTEST_BINARY_DIRECTORY}\" -- -j ${AQLPROFILE_BUILD_NUM_JOBS} all mytest")
4747

4848
if(NOT DEFINED CTEST_SITE)

src/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,4 +73,4 @@ add_custom_target( mygen
7373
COMMAND sh -xc "sed 's/_GPU_BLOCKINFO_H_/SRC_DEF_GPU_BLOCK_INFO_H_/' ${BINFO_DEF} >>${BINFO_HEADER}"
7474
)
7575

76-
add_subdirectory(src/core)
76+
add_subdirectory(src/core)

src/core/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
1-
add_subdirectory(include)
1+
add_subdirectory(include)
2+
if(AQLPROFILE_BUILD_TESTS)
3+
enable_testing()
4+
add_subdirectory(tests)
5+
endif()

src/core/commandbuffermgr.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#pragma once
2424

2525
#include <cstdint>
26+
#include <climits>
2627
#include <future>
2728
#include <map>
2829
#include <string>

src/core/tests/CMakeLists.txt

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
# write a CMakeLists.txt file for the gfx9_factory_test
2+
# that includes the necessary libraries and sets the properties for the test
3+
include(GoogleTest)
4+
find_package(GTest REQUIRED)
5+
include_directories(${GTEST_INCLUDE_DIRS})
6+
7+
8+
find_library(
9+
hsa-amd-aqlprofile64
10+
REQUIRED
11+
NAMES hsa-amd-aqlprofile64 hsa-amd-aqlprofile
12+
HINTS /opt/rocm/lib /opt/rocm
13+
PATHS /opt/rocm/lib /opt/rocm)
14+
15+
# Add test for memory manager
16+
add_executable(gfx9-memory-manager-test)
17+
SET(AQLPROFILE_MEMORYMANAGER_SOURCES
18+
${CMAKE_CURRENT_SOURCE_DIR}/memorymanager_tests.cpp
19+
${CMAKE_CURRENT_SOURCE_DIR}/../memorymanager.cpp
20+
)
21+
22+
target_sources(gfx9-memory-manager-test PRIVATE ${AQLPROFILE_MEMORYMANAGER_SOURCES})
23+
target_include_directories(gfx9-memory-manager-test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${LIB_DIR})
24+
target_link_libraries(
25+
gfx9-memory-manager-test
26+
PRIVATE
27+
hsa-runtime64::hsa-runtime64
28+
GTest::gtest
29+
GTest::gtest_main)
30+
31+
32+
gtest_add_tests(
33+
TARGET gfx9-memory-manager-test
34+
SOURCES ${AQLPROFILE_MEMORYMANAGER_SOURCES}
35+
TEST_LIST gfx9-memory-manager_TESTS
36+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
37+
38+
set_tests_properties(
39+
${gfx9-memory-manager_TESTS} PROPERTIES TIMEOUT 45 LABELS "unittests" FAIL_REGULAR_EXPRESSION
40+
"${AQLPROFILE_DEFAULT_FAIL_REGEX}")
41+
42+
# Add test for aql profile
43+
add_executable(aqlprofile-test)
44+
SET(AQLPROFILE_TEST_SOURCES
45+
${CMAKE_CURRENT_SOURCE_DIR}/aql_profile_tests.cpp
46+
)
47+
48+
target_sources(aqlprofile-test PRIVATE ${AQLPROFILE_TEST_SOURCES})
49+
target_include_directories(aqlprofile-test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${LIB_DIR})
50+
target_link_libraries(
51+
aqlprofile-test
52+
PRIVATE
53+
hsa-runtime64::hsa-runtime64
54+
GTest::gtest
55+
GTest::gtest_main
56+
GTest::gmock
57+
GTest::gmock_main)
58+
59+
60+
gtest_add_tests(
61+
TARGET aqlprofile-test
62+
SOURCES ${AQLPROFILE_TEST_SOURCES}
63+
TEST_LIST aqlprofile-test_TESTS
64+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
65+
66+
set_tests_properties(
67+
${aqlprofile-test_TESTS} PROPERTIES TIMEOUT 45 LABELS "unittests" FAIL_REGULAR_EXPRESSION
68+
"${AQLPROFILE_DEFAULT_FAIL_REGEX}")
69+
70+
71+
# Add tests for command buffer
72+
add_executable(command-buffer-test)
73+
SET(AQLPROFILE_COMMAND_BUFFER_SOURCES
74+
${CMAKE_CURRENT_SOURCE_DIR}/command_buffer_tests.cpp
75+
)
76+
target_sources(command-buffer-test PRIVATE ${AQLPROFILE_COMMAND_BUFFER_SOURCES})
77+
target_include_directories(command-buffer-test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${LIB_DIR})
78+
target_link_libraries(
79+
command-buffer-test
80+
PRIVATE
81+
hsa-runtime64::hsa-runtime64
82+
GTest::gtest
83+
GTest::gtest_main
84+
GTest::gmock
85+
GTest::gmock_main)
86+
87+
gtest_add_tests(
88+
TARGET command-buffer-test
89+
SOURCES ${AQLPROFILE_COMMAND_BUFFER_SOURCES}
90+
TEST_LIST command-buffer-test_TESTS
91+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
92+
set_tests_properties(
93+
${command-buffer-test_TESTS} PROPERTIES TIMEOUT 45 LABELS "unittests" FAIL_REGULAR_EXPRESSION
94+
"${AQLPROFILE_DEFAULT_FAIL_REGEX}")
95+
96+
# Add tests for counters
97+
add_executable(counters-test)
98+
SET(AQLPROFILE_COUNTERS_SOURCES
99+
${CMAKE_CURRENT_SOURCE_DIR}/counter_tests.cpp
100+
)
101+
target_sources(counters-test PRIVATE ${AQLPROFILE_COUNTERS_SOURCES})
102+
target_include_directories(counters-test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${LIB_DIR})
103+
target_link_libraries(
104+
counters-test
105+
PRIVATE
106+
hsa-runtime64::hsa-runtime64
107+
${hsa-amd-aqlprofile64}
108+
GTest::gtest
109+
GTest::gtest_main
110+
GTest::gmock
111+
GTest::gmock_main)
112+
gtest_add_tests(
113+
TARGET counters-test
114+
SOURCES ${AQLPROFILE_COUNTERS_SOURCES}
115+
TEST_LIST counters-test_TESTS
116+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
117+
set_tests_properties(
118+
${counters-test_TESTS} PROPERTIES TIMEOUT 45 LABELS "unittests" FAIL_REGULAR_EXPRESSION
119+
"${AQLPROFILE_DEFAULT_FAIL_REGEX}")

0 commit comments

Comments
 (0)