diff --git a/.github/workflows/modem__build-host-tests.yml b/.github/workflows/modem__build-host-tests.yml index d54b5d9b23f..d49ac0e0587 100644 --- a/.github/workflows/modem__build-host-tests.yml +++ b/.github/workflows/modem__build-host-tests.yml @@ -54,105 +54,12 @@ jobs: host_test_esp_modem: if: contains(github.event.pull_request.labels.*.name, 'modem') || github.event_name == 'push' - name: Host Tests - runs-on: ubuntu-20.04 - container: espressif/idf:release-v4.3 - env: - lwip: lwip-2.1.2 - lwip_contrib: contrib-2.1.0 - lwip_uri: http://download.savannah.nongnu.org/releases/lwip - COMP_DIR: esp-protocols/components/esp_modem - steps: - - name: Checkout esp-protocols - uses: actions/checkout@v3 - with: - path: esp-protocols - - - name: Build and Test - shell: bash - run: | - apt-get update && apt-get install -y gcc-8 g++-8 - update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8 - export LWIP_PATH=`pwd`/${{ env.lwip }} - export LWIP_CONTRIB_PATH=`pwd`/${{ env.lwip_contrib }} - . ${IDF_PATH}/export.sh - $GITHUB_WORKSPACE/${{ env.COMP_DIR }}/test/host_test/env.sh $lwip $lwip_uri $lwip_contrib - cd $GITHUB_WORKSPACE/esp-protocols/components/esp_modem/examples/linux_modem - idf.py build - cd $GITHUB_WORKSPACE/esp-protocols/components/esp_modem/test/host_test - idf.py build - ./build/host_modem_test.elf -r junit -o junit.xml - - - name: Publish Results - uses: EnricoMi/publish-unit-test-result-action@v1 - if: always() - with: - files: esp-protocols/components/esp_modem/test/host_test/junit.xml - - host_test_gcov_esp_modem: - if: contains(github.event.pull_request.labels.*.name, 'modem') || github.event_name == 'push' - name: Run gcovr on esp modem host test - runs-on: ubuntu-22.04 - permissions: - contents: write - container: espressif/idf:release-v4.3 - env: - lwip: lwip-2.1.2 - lwip_contrib: contrib-2.1.0 - lwip_uri: http://download.savannah.nongnu.org/releases/lwip - COMP_DIR: esp-protocols/components/esp_modem - steps: - - name: Checkout esp-protocols - uses: actions/checkout@v3 - with: - path: esp-protocols - repository: '' - persist-credentials: false - - name: Build and Test - shell: bash - run: | - apt-get update && apt-get install -y gcc-8 g++-8 python3-pip - apt-get install -y rsync - update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8 - export DEBIAN_FRONTEND=noninteractive - export LWIP_PATH=`pwd`/${{ env.lwip }} - export LWIP_CONTRIB_PATH=`pwd`/${{ env.lwip_contrib }} - . ${IDF_PATH}/export.sh - ${{ env.COMP_DIR }}/test/host_test/env.sh $lwip $lwip_uri $lwip_contrib - cd $GITHUB_WORKSPACE/${{ env.COMP_DIR }}/test/host_test - cat sdkconfig.ci.coverage >> sdkconfig.defaults - idf.py build - ./build/host_modem_test.elf - - name: Run gcovr - shell: bash - run: | - python -m pip install gcovr - cd $GITHUB_WORKSPACE/${{ env.COMP_DIR }} - gcov-8 `find . -name "esp_modem*gcda" -printf '%h\n' | head -n 1`/* - gcovr --gcov-ignore-parse-errors -g -k -r . --html index.html -x esp_modem_coverage.xml - mkdir modem_coverage_report - cp $GITHUB_WORKSPACE/${{ env.COMP_DIR }}/index.html modem_coverage_report - cp -rf modem_coverage_report $GITHUB_WORKSPACE - - name: Code Coverage Summary Report - uses: irongut/CodeCoverageSummary@v1.3.0 - with: - filename: esp-protocols/**/esp_modem_coverage.xml - badge: true - fail_below_min: false - format: markdown - hide_branch_rate: false - hide_complexity: false - indicators: true - output: both - thresholds: '60 80' - - name: Write to Job Summary - run: cat code-coverage-results.md >> $GITHUB_STEP_SUMMARY - - - name: Upload artifacts - uses: actions/upload-artifact@v3 - if: always() - with: - name: modem_coverage_report - path: | - ${{ env.COMP_DIR }}/modem_coverage_report - if-no-files-found: error + uses: "./.github/workflows/run-host-tests.yml" + with: + idf_version: "release-v4.3" + app_name: "host_modem_test" + app_path: "esp-protocols/components/esp_modem/test/host_test" + component_path: "esp-protocols/components/esp_modem" + upload_artifacts: true + pre_run_script: "esp-protocols/components/esp_modem/test/host_test/env.sh" + publish_unit_test_result: true diff --git a/.github/workflows/run-host-tests.yml b/.github/workflows/run-host-tests.yml index 9ec61a2426e..b3c8839f8bb 100644 --- a/.github/workflows/run-host-tests.yml +++ b/.github/workflows/run-host-tests.yml @@ -18,6 +18,12 @@ on: upload_artifacts: type: boolean required: true + pre_run_script: + type: string + required: false + publish_unit_test_result: + type: boolean + required: false jobs: build: @@ -34,20 +40,31 @@ jobs: - name: Build ${{ inputs.app_name }} with IDF-${{ inputs.idf_version }} shell: bash run: | + if [ -n "${{ inputs.pre_run_script }}" ]; then + source ${{ inputs.pre_run_script }} ${{ inputs.idf_version }} + fi . ${IDF_PATH}/export.sh - cd $GITHUB_WORKSPACE/${{inputs.app_path}} + cd ${{inputs.app_path}} rm -rf sdkconfig sdkconfig.defaults build cp sdkconfig.ci.linux sdkconfig.defaults idf.py build - ./build/${{inputs.app_name}}.elf + ./build/${{inputs.app_name}}.elf -r junit -o junit.xml + - name: Publish Unit Test Result + uses: EnricoMi/publish-unit-test-result-action@v1 + if: ${{ inputs.publish_unit_test_result }} + with: + files: ${{inputs.component_path}}/**/*junit.xml - name: Build with Coverage Enabled shell: bash run: | + if [ -n "${{ inputs.pre_run_script }}" ]; then + source ${{ inputs.pre_run_script }} ${{ inputs.idf_version }} + fi . ${IDF_PATH}/export.sh cd $GITHUB_WORKSPACE/${{inputs.app_path}} rm -rf build sdkconfig sdkconfig.defaults - cp sdkconfig.ci.coverage sdkconfig.defaults idf.py fullclean + cp sdkconfig.ci.coverage sdkconfig.defaults idf.py build ./build/${{inputs.app_name}}.elf - name: Run Coverage @@ -56,7 +73,12 @@ jobs: apt-get update && apt-get install -y python3-pip rsync python -m pip install gcovr cd $GITHUB_WORKSPACE/${{inputs.component_path}} - gcov `find . -name "*gcda"` + find . -name "*gcda" + if [[ ${{ inputs.idf_version }} == "release-v4.3" ]]; then + gcov-8 `find . -name "*gcda" -printf '%h\n' | head -n 1`/* + else + gcov `find . -name "*gcda"` + fi gcovr --gcov-ignore-parse-errors -g -k -r . --html index.html -x ${{inputs.app_name}}_coverage.xml mkdir ${{inputs.app_name}}_coverage_report touch ${{inputs.app_name}}_coverage_report/.nojekyll diff --git a/components/esp_modem/examples/linux_modem/sdkconfig.ci.linux b/components/esp_modem/examples/linux_modem/sdkconfig.ci.linux new file mode 100644 index 00000000000..cd841b55e33 --- /dev/null +++ b/components/esp_modem/examples/linux_modem/sdkconfig.ci.linux @@ -0,0 +1,5 @@ +CONFIG_IDF_TARGET="linux" +CONFIG_COMPILER_CXX_EXCEPTIONS=y +CONFIG_COMPILER_CXX_RTTI=y +CONFIG_COMPILER_CXX_EXCEPTIONS_EMG_POOL_SIZE=0 +CONFIG_COMPILER_STACK_CHECK_NONE=y diff --git a/components/esp_modem/test/host_test/env.sh b/components/esp_modem/test/host_test/env.sh index 9862cbff457..88c51d22121 100755 --- a/components/esp_modem/test/host_test/env.sh +++ b/components/esp_modem/test/host_test/env.sh @@ -1,10 +1,19 @@ #!/bin/bash -lwip=$1 -lwip_uri=$2 -lwip_contrib=$3 - -wget --no-verbose ${lwip_uri}/${lwip}.zip -unzip -oq ${lwip}.zip -wget --no-verbose ${lwip_uri}/${lwip_contrib}.zip -unzip -oq ${lwip_contrib}.zip +idf_version=$1 + +if [ "$idf_version" == "release-v4.3" ]; then + lwip=lwip-2.1.2 + lwip_uri=http://download.savannah.nongnu.org/releases/lwip + lwip_contrib=contrib-2.1.0 + + wget --no-verbose ${lwip_uri}/${lwip}.zip + unzip -oq ${lwip}.zip + wget --no-verbose ${lwip_uri}/${lwip_contrib}.zip + unzip -oq ${lwip_contrib}.zip + + apt-get update && apt-get install -y gcc-8 g++-8 + update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8 + export LWIP_PATH=`pwd`/$lwip + export LWIP_CONTRIB_PATH=`pwd`/$lwip_contrib +fi diff --git a/components/esp_modem/test/host_test/sdkconfig.ci.coverage b/components/esp_modem/test/host_test/sdkconfig.ci.coverage index 3c490c09846..952127e3f6a 100644 --- a/components/esp_modem/test/host_test/sdkconfig.ci.coverage +++ b/components/esp_modem/test/host_test/sdkconfig.ci.coverage @@ -1 +1,6 @@ +CONFIG_IDF_TARGET="linux" +CONFIG_COMPILER_CXX_EXCEPTIONS=y +CONFIG_COMPILER_CXX_RTTI=y +CONFIG_COMPILER_CXX_EXCEPTIONS_EMG_POOL_SIZE=0 +CONFIG_COMPILER_STACK_CHECK_NONE=y CONFIG_GCOV_ENABLED=y diff --git a/components/esp_modem/test/host_test/sdkconfig.ci.linux b/components/esp_modem/test/host_test/sdkconfig.ci.linux new file mode 100644 index 00000000000..cd841b55e33 --- /dev/null +++ b/components/esp_modem/test/host_test/sdkconfig.ci.linux @@ -0,0 +1,5 @@ +CONFIG_IDF_TARGET="linux" +CONFIG_COMPILER_CXX_EXCEPTIONS=y +CONFIG_COMPILER_CXX_RTTI=y +CONFIG_COMPILER_CXX_EXCEPTIONS_EMG_POOL_SIZE=0 +CONFIG_COMPILER_STACK_CHECK_NONE=y