From c99baac34baaa94f16c743d1e7db2559d5d7af1a Mon Sep 17 00:00:00 2001 From: David Cermak Date: Mon, 14 Oct 2024 13:47:06 +0200 Subject: [PATCH] fix(sockutls): Add CI, host tests, run example --- .github/workflows/sockutls_build.yml | 95 +++++++++++++++++++ .../examples/simple/pytest_sockutls.py | 13 +++ 2 files changed, 108 insertions(+) create mode 100644 .github/workflows/sockutls_build.yml create mode 100644 components/sock_utils/examples/simple/pytest_sockutls.py diff --git a/.github/workflows/sockutls_build.yml b/.github/workflows/sockutls_build.yml new file mode 100644 index 00000000000..00d2a6a84f9 --- /dev/null +++ b/.github/workflows/sockutls_build.yml @@ -0,0 +1,95 @@ +name: "sock_utils: build-tests" + +on: + push: + branches: + - master + pull_request: + types: [opened, synchronize, reopened, labeled] + +jobs: + build_sock_utils: + if: contains(github.event.pull_request.labels.*.name, 'sock_utils') || github.event_name == 'push' + name: Socket helpers build + strategy: + matrix: + idf_ver: ["latest", "release-v5.3"] + runs-on: ubuntu-22.04 + container: espressif/idf:${{ matrix.idf_ver }} + env: + TEST_DIR: components/sock_utils/examples/simple + TARGET_TEST_DIR: build_esp32_default + steps: + - name: Checkout esp-protocols + uses: actions/checkout@v4 + with: + submodules: recursive + - name: Build with IDF-${{ matrix.idf_ver }} + shell: bash + run: | + . ${IDF_PATH}/export.sh + pip install idf-component-manager idf-build-apps --upgrade + python ci/build_apps.py ${TEST_DIR} + cd ${TEST_DIR} + ${GITHUB_WORKSPACE}/ci/clean_build_artifacts.sh `pwd`/${TARGET_TEST_DIR} + zip -qur artifacts.zip ${TARGET_TEST_DIR} + - uses: actions/upload-artifact@v4 + with: + name: sock_utils_target_esp32_${{ matrix.idf_ver }} + path: ${{ env.TEST_DIR }}/artifacts.zip + if-no-files-found: error + host_test_sock_utils: + if: contains(github.event.pull_request.labels.*.name, 'sock_utils') || github.event_name == 'push' + name: Socket helpers host test + strategy: + matrix: + idf_ver: ["latest", "release-v5.3"] + runs-on: ubuntu-22.04 + container: espressif/idf:${{ matrix.idf_ver }} + env: + TEST_DIR: components/sock_utils/test/host + steps: + - name: Checkout esp-protocols + uses: actions/checkout@v4 + with: + submodules: recursive + - name: Build with IDF-${{ matrix.idf_ver }} + shell: bash + run: | + . ${IDF_PATH}/export.sh + pip install idf-component-manager idf-build-apps --upgrade + cd ${TEST_DIR} + idf.py build + ./build/sockutls_host_test.elf + + test_sock_utils: + # Skip running on forks since it won't have access to secrets + if: | + github.repository == 'espressif/esp-protocols' && + ( contains(github.event.pull_request.labels.*.name, 'sock_utils') || github.event_name == 'push' ) + name: Socket helpers target test + needs: build_sock_utils + strategy: + matrix: + idf_ver: ["latest", "release-v5.3"] + runs-on: + - self-hosted + - ESP32-ETHERNET-KIT + env: + TEST_DIR: components/sock_utils/examples/broker + TARGET_TEST_DIR: build_esp32_default + steps: + - uses: actions/checkout@v4 + - uses: actions/download-artifact@v4 + with: + name: sock_utils_target_esp32_${{ matrix.idf_ver }} + path: ${{ env.TEST_DIR }}/ci/ + - name: Run Test + working-directory: ${{ env.TEST_DIR }} + run: | + unzip ci/artifacts.zip -d ci + for dir in `ls -d ci/build_*`; do + rm -rf build sdkconfig.defaults + mv $dir build + python -m pytest --log-cli-level DEBUG --junit-xml=./results_esp32_${{ matrix.idf_ver }}_${dir#"ci/build_"}.xml --target=esp32 + done diff --git a/components/sock_utils/examples/simple/pytest_sockutls.py b/components/sock_utils/examples/simple/pytest_sockutls.py new file mode 100644 index 00000000000..38c93259e5d --- /dev/null +++ b/components/sock_utils/examples/simple/pytest_sockutls.py @@ -0,0 +1,13 @@ +# SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: Unlicense OR CC0-1.0 + +def test_sockutls(dut): + """ + steps: + 1. Start the example + 2. Check the resultant IPv4 address from station netif + """ + # Signal from the pipe simple implementation + dut.expect('Received signal: IP4') + # and the IPv4 address of the connected netif + dut.expect('IPv4 address of interface "sta"')