From bb11b4e2b470f61d7e05ac6c2406f826d9e7e642 Mon Sep 17 00:00:00 2001 From: "Williams, Justin" Date: Wed, 22 Jan 2025 10:10:32 -0600 Subject: [PATCH] [SWDEV-500518] Added Tests to CI (#42) Added all python, amdsmi, and build example script tests. Signed-off-by: Justin Williams --- .github/workflows/amdsmi-build.yml | 151 +++++++++++++++++++++++++---- 1 file changed, 134 insertions(+), 17 deletions(-) diff --git a/.github/workflows/amdsmi-build.yml b/.github/workflows/amdsmi-build.yml index 31e00e2822..773f83fa00 100644 --- a/.github/workflows/amdsmi-build.yml +++ b/.github/workflows/amdsmi-build.yml @@ -10,7 +10,7 @@ on: jobs: build-and-install-deb: - name: Build and Install on Debian-based Systems + name: Build on Debian-based Systems runs-on: - self-hosted - ${{ vars.RUNNER_TYPE }} @@ -36,7 +36,11 @@ jobs: - name: Build and Install on ${{ matrix.os }} run: | - docker run --privileged -v ${{ github.workspace }}:/src:rw $DOCKER_IMAGE /bin/bash -c " + # Define a host directory for test results + HOST_TEST_RESULTS_DIR=/tmp/test-results + # Ensure the host directory exists + mkdir -p $HOST_TEST_RESULTS_DIR + docker run --privileged -v ${{ github.workspace }}:/src:rw -v $HOST_TEST_RESULTS_DIR:/shared:rw $DOCKER_IMAGE /bin/bash -c " set -e cd /src echo 'Inside Docker Container on ${{ matrix.os }}' @@ -45,7 +49,7 @@ jobs: BUILD_FOLDER=/src/build DEB_BUILD='amd-smi-lib*99999-local_amd64.deb' DEB_BUILD_TEST='amd-smi-lib-tests*99999-local_amd64.deb' - sudo rm -rf \$BUILD_FOLDER + rm -rf \$BUILD_FOLDER mkdir -p \$BUILD_FOLDER cd \$BUILD_FOLDER cmake .. -DBUILD_TESTS=ON -DENABLE_ESMI_LIB=ON @@ -53,8 +57,8 @@ jobs: make package # Install AMD-SMI - sudo apt install -y \$BUILD_FOLDER/\$DEB_BUILD - sudo ln -s /opt/rocm/bin/amd-smi /usr/local/bin + apt install -y \$BUILD_FOLDER/\$DEB_BUILD + ln -s /opt/rocm/bin/amd-smi /usr/local/bin # Check If Installed echo 'Listing installed packages:' @@ -62,10 +66,68 @@ jobs: python3 -m pip list | grep pip python3 -m pip list | grep setuptools echo 'Completed build and installation on ${{ matrix.os }}' + + # Run AMDSMI Tests + echo 'Running AMDSMI Tests' + /opt/rocm/share/amd_smi/tests/amdsmitst > /shared/test-results/test-results-${{ matrix.os }}/amdsmi_tests.log + + # Run Python Unit Tests + echo 'Running Python Unit Testing' + mkdir -p /shared/test-results/test-results-${{ matrix.os }} + cd /opt/rocm/share/amd_smi/tests/python_unittest + ./integration_test.py -v > /shared/test-results/test-results-${{ matrix.os }}/integration_test_output.txt 2>&1 + ./unit_tests.py -v > /shared/test-results/test-results-${{ matrix.os }}/unit_test_output.txt 2>&1 + echo 'Completed Python Unit Testing' + + # Run Build Testing + echo 'Running Build Tests' + cd /src/build/example + ./amd_smi_drm_ex > /shared/test-results/test-results-${{ matrix.os }}/amd_smi_drm_ex.log || echo 'amd_smi_drm_ex failed' + ./amd_smi_esmi_ex > /shared/test-results/test-results-${{ matrix.os }}/amd_smi_esmi_ex.log || echo 'amd_smi_esmi_ex failed' + ./amd_smi_nodrm_ex > /shared/test-results/test-results-${{ matrix.os }}/amd_smi_nodrm_ex.log || echo 'amd_smi_nodrm_ex failed' + echo 'Completed Build Testing' " + - name: Upload Test Results + uses: actions/upload-artifact@v4 + with: + name: test-results-${{ matrix.os }} + path: /tmp/test-results/test-results/test-results-${{ matrix.os }} + if-no-files-found: warn + + - name: AMDSMI Test Results + run: | + echo "Displaying AMDSMI test results for ${{ matrix.os }}" + cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/amdsmi_tests.log || echo "No amdsmi test results found for ${{ matrix.os }}" + + - name: Integration Test Results + run: | + echo "Displaying Integration test results for ${{ matrix.os }}" + cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/integration_test_output.txt || echo "No integration test results found for ${{ matrix.os }}" + + - name: Unit Test Results + run: | + echo "Displaying Unit Test Results for ${{ matrix.os }}" + cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/unit_test_output.txt || echo "No unit test results found for ${{ matrix.os }}" + + - name: DRM EX Test Results + run: | + echo "Displaying DRM EX Test Results for ${{ matrix.os }}" + cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/amd_smi_drm_ex.log || echo "No amd_smi_drm_ex.log found for ${{ matrix.os }}" + + - name: NO-DRM EX Test Results + run: | + echo "Displaying NO-DRM EX Test Results for ${{ matrix.os }}" + cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/amd_smi_nodrm_ex.log || echo "No amd_smi_nodrm_ex.log found for ${{ matrix.os }}" + + - name: ESMI EX Test Results + run: | + echo "Displaying ESMI EX Test Results for ${{ matrix.os }}" + cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/amd_smi_esmi_ex.log || echo "No amd_smi_esmi_ex.log found for ${{ matrix.os }}" + + build-and-install-rpm: - name: Build and Install on RPM-based Systems + name: Build on RPM-based Systems runs-on: - self-hosted - ${{ vars.RUNNER_TYPE }} @@ -90,48 +152,46 @@ jobs: run: | echo "DOCKER_IMAGE=${{ secrets.SLES_DOCKER_IMAGE }}" >> $GITHUB_ENV echo "PACKAGE_MANAGER=zypper" >> $GITHUB_ENV - - name: Set Docker Image and Package Manager for RHEL8 if: matrix.os == 'RHEL8' run: | echo "DOCKER_IMAGE=${{ secrets.RHEL8_DOCKER_IMAGE }}" >> $GITHUB_ENV echo "PACKAGE_MANAGER=dnf" >> $GITHUB_ENV - - name: Set Docker Image and Package Manager for RHEL9 if: matrix.os == 'RHEL9' run: | echo "DOCKER_IMAGE=${{ secrets.RHEL9_DOCKER_IMAGE }}" >> $GITHUB_ENV echo "PACKAGE_MANAGER=dnf" >> $GITHUB_ENV - - name: Set Docker Image and Package Manager for Mariner2 if: matrix.os == 'Mariner2' run: | echo "DOCKER_IMAGE=${{ secrets.MARINER2_DOCKER_IMAGE }}" >> $GITHUB_ENV echo "PACKAGE_MANAGER=dnf" >> $GITHUB_ENV - - name: Set Docker Image and Package Manager for AzureLinux3 if: matrix.os == 'AzureLinux3' run: | echo "DOCKER_IMAGE=${{ secrets.AZURELINUX3_DOCKER_IMAGE }}" >> $GITHUB_ENV echo "PACKAGE_MANAGER=dnf" >> $GITHUB_ENV - - name: Set Docker Image and Package Manager for AlmaLinux8 if: matrix.os == 'AlmaLinux8' run: | echo "DOCKER_IMAGE=${{ secrets.ALMALINUX8_DOCKER_IMAGE }}" >> $GITHUB_ENV echo "PACKAGE_MANAGER=dnf" >> $GITHUB_ENV - - name: Build and Install on ${{ matrix.os }} run: | - docker run --privileged -v ${{ github.workspace }}:/src:rw $DOCKER_IMAGE /bin/bash -c " - set -ex + # Define a host directory for test results + HOST_TEST_RESULTS_DIR=/tmp/test-results + + # Ensure the host directory exists + mkdir -p $HOST_TEST_RESULTS_DIR + docker run --privileged -v ${{ github.workspace }}:/src:rw -v $HOST_TEST_RESULTS_DIR:/shared:rw $DOCKER_IMAGE /bin/bash -c " + set -e cd /src echo 'Inside Docker Container on ${{ matrix.os }}' # Build AMD-SMI BUILD_FOLDER=/src/build RPM_BUILD='amd-smi-lib-*99999-local*.rpm' - rm -rf \$BUILD_FOLDER mkdir -p \$BUILD_FOLDER cd \$BUILD_FOLDER @@ -148,14 +208,13 @@ jobs: timeout 10m sudo zypper --no-refresh --no-gpg-checks install -y \$BUILD_FOLDER/\$RPM_BUILD ;; dnf) - timeout 10m dnf install -y --skip-broken \$BUILD_FOLDER/\$RPM_BUILD + timeout 10m dnf install -y --skip-broken --disablerepo=* \$BUILD_FOLDER/\$RPM_BUILD ;; *) echo 'Unsupported package manager: $PACKAGE_MANAGER' exit 1 ;; esac - ln -s /opt/rocm/bin/amd-smi /usr/local/bin # Check If Installed @@ -164,4 +223,62 @@ jobs: python3 -m pip list | grep pip python3 -m pip list | grep setuptools echo 'Completed build and installation on ${{ matrix.os }}' + + # Run AMDSMI Tests + echo 'Running AMDSMI Tests' + /opt/rocm/share/amd_smi/tests/amdsmitst > /shared/test-results/test-results-${{ matrix.os }}/amdsmi_tests.log + echo 'Completed AMDSMI Tests' + + # Run Python Unit Testing + echo 'Running Python Unit Testing' + mkdir -p /shared/test-results/test-results-${{ matrix.os }} + cd /opt/rocm/share/amd_smi/tests/python_unittest + ./integration_test.py -v > /shared/test-results/test-results-${{ matrix.os }}/integration_test_output.txt 2>&1 + ./unit_tests.py -v > /shared/test-results/test-results-${{ matrix.os }}/unit_test_output.txt 2>&1 + echo 'Completed Python Unit Testing' + + # Run Build Testing + echo 'Running Build Tests' + cd /src/build/example + ./amd_smi_drm_ex > /shared/test-results/test-results-${{ matrix.os }}/amd_smi_drm_ex.log || echo 'amd_smi_drm_ex failed' + ./amd_smi_esmi_ex > /shared/test-results/test-results-${{ matrix.os }}/amd_smi_esmi_ex.log || echo 'amd_smi_esmi_ex failed' + ./amd_smi_nodrm_ex > /shared/test-results/test-results-${{ matrix.os }}/amd_smi_nodrm_ex.log || echo 'amd_smi_nodrm_ex failed' + echo 'Completed Build Testing' " + + - name: Upload Test Results + uses: actions/upload-artifact@v4 + with: + name: test-results-${{ matrix.os }} + path: /tmp/test-results/test-results/test-results-${{ matrix.os }} + if-no-files-found: warn + + - name: AMDSMI Test Results + run: | + echo "Displaying AMDSMI test results for ${{ matrix.os }}" + cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/amdsmi_tests.log || echo "No amdsmi test results found for ${{ matrix.os }}" + + - name: Python Integration Test Results + run: | + echo "Displaying Integration test results for ${{ matrix.os }}" + cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/integration_test_output.txt || echo "No integration test results found for ${{ matrix.os }}" + + - name: Python Unit Test Results + run: | + echo "Displaying Unit Test Results for ${{ matrix.os }}" + cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/unit_test_output.txt || echo "No unit test results found for ${{ matrix.os }}" + + - name: DRM EX Test Results + run: | + echo "Displaying DRM EX Test Results for ${{ matrix.os }}" + cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/amd_smi_drm_ex.log || echo "No amd_smi_drm_ex.log found for ${{ matrix.os }}" + + - name: NO-DRM EX Test Results + run: | + echo "Displaying NO-DRM EX Test Results for ${{ matrix.os }}" + cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/amd_smi_nodrm_ex.log || echo "No amd_smi_nodrm_ex.log found for ${{ matrix.os }}" + + - name: ESMI EX Test Results + run: | + echo "Displaying ESMI EX Test Results for ${{ matrix.os }}" + cat /tmp/test-results/test-results/test-results-${{ matrix.os }}/amd_smi_esmi_ex.log || echo "No amd_smi_esmi_ex.log found for ${{ matrix.os }}"