mirror of
https://github.com/espressif/esp-protocols.git
synced 2025-07-29 18:27:31 +02:00
feat(mosq): Add target tests with localhost broker-client
This commit is contained in:
49
.github/workflows/mosq__build.yml
vendored
49
.github/workflows/mosq__build.yml
vendored
@ -9,13 +9,16 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build_mosq:
|
build_mosq:
|
||||||
if: contains(github.event.pull_request.labels.*.name, 'Comp::mosq') || github.event_name == 'push'
|
if: contains(github.event.pull_request.labels.*.name, 'mosquitto') || github.event_name == 'push'
|
||||||
name: Build
|
name: Mosquitto build
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
idf_ver: ["latest", "release-v5.3"]
|
idf_ver: ["latest", "release-v5.3"]
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
container: espressif/idf:${{ matrix.idf_ver }}
|
container: espressif/idf:${{ matrix.idf_ver }}
|
||||||
|
env:
|
||||||
|
TEST_DIR: components/mosquitto/examples/broker
|
||||||
|
TARGET_TEST_DIR: build_esp32_default
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout esp-protocols
|
- name: Checkout esp-protocols
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@ -28,4 +31,44 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
. ${IDF_PATH}/export.sh
|
. ${IDF_PATH}/export.sh
|
||||||
pip install idf-component-manager idf-build-apps --upgrade
|
pip install idf-component-manager idf-build-apps --upgrade
|
||||||
python ci/build_apps.py components/mosquitto/examples/ -c
|
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: mosq_target_esp32_${{ matrix.idf_ver }}
|
||||||
|
path: ${{ env.TEST_DIR }}/artifacts.zip
|
||||||
|
if-no-files-found: error
|
||||||
|
|
||||||
|
test_mosq:
|
||||||
|
# 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, 'mosquitto') || github.event_name == 'push' )
|
||||||
|
name: Mosquitto target test
|
||||||
|
needs: build_mosq
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
idf_ver: ["latest", "release-v5.3"]
|
||||||
|
runs-on:
|
||||||
|
- self-hosted
|
||||||
|
- ESP32-ETHERNET-KIT
|
||||||
|
env:
|
||||||
|
TEST_DIR: components/mosquitto/examples/broker
|
||||||
|
TARGET_TEST_DIR: build_esp32_default
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: mosq_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
|
||||||
|
18
components/mosquitto/examples/broker/pytest_mosq_local.py
Normal file
18
components/mosquitto/examples/broker/pytest_mosq_local.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||||
|
# SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||||
|
|
||||||
|
def test_mosq_local(dut):
|
||||||
|
"""
|
||||||
|
steps:
|
||||||
|
1. Start mosquitto broker
|
||||||
|
2. Start mqtt client
|
||||||
|
3. Checks that the client connected to broker
|
||||||
|
4. checks that the client received published data
|
||||||
|
"""
|
||||||
|
# We expect the client to connect from IPv4 localhost address
|
||||||
|
dut.expect('New client connected from 127.0.0.1')
|
||||||
|
# We expect the client to get "connected" event and receive the published data
|
||||||
|
dut.expect('MQTT_EVENT_CONNECTED')
|
||||||
|
dut.expect('MQTT_EVENT_DATA')
|
||||||
|
dut.expect('TOPIC=/topic/qos0')
|
||||||
|
dut.expect('DATA=data')
|
Reference in New Issue
Block a user