| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- name: Functional Verification Tests
- concurrency:
- group: fvt-${{ github.event_name }}-${{ github.ref }}
- cancel-in-progress: true
- on:
- push:
- tags:
- - v*
- pull_request:
- jobs:
- prepare:
- runs-on: ubuntu-20.04
- # prepare source with any OTP version, no need for a matrix
- container: ghcr.io/emqx/emqx-builder/5.0-2:24.1.5-2-alpine3.14
- steps:
- - uses: actions/checkout@v2
- with:
- path: source
- fetch-depth: 0
- - name: get deps
- run: |
- make -C source deps-all
- zip -ryq source.zip source/* source/.[^.]*
- - uses: actions/upload-artifact@v2
- with:
- name: source
- path: source.zip
- docker_test:
- runs-on: ubuntu-20.04
- needs: prepare
- strategy:
- fail-fast: false
- matrix:
- profile:
- - emqx
- - emqx-edge
- - emqx-enterprise
- cluster_db_backend:
- - mnesia
- - rlog
- steps:
- - uses: actions/download-artifact@v2
- with:
- name: source
- path: .
- - name: unzip source code
- run: unzip -q source.zip
- - name: make docker image
- working-directory: source
- env:
- EMQX_BUILDER: ghcr.io/emqx/emqx-builder/5.0-2:24.1.5-2-alpine3.14
- run: |
- make ${{ matrix.profile }}-docker
- - name: run emqx
- timeout-minutes: 5
- working-directory: source
- run: |
- set -x
- IMAGE=emqx/${{ matrix.profile }}:$(./pkg-vsn.sh)
- ./.ci/docker-compose-file/scripts/run-emqx.sh $IMAGE ${{ matrix.cluster_db_backend }}
- - name: make paho tests
- run: |
- if ! docker exec -i python /scripts/pytest.sh "${{ matrix.cluster_db_backend }}"; then
- echo "DUMP_CONTAINER_LOGS_BGN"
- echo "============== haproxy =============="
- docker logs haproxy
- echo "============== node1 =============="
- docker logs node1.emqx.io
- echo "============== node2 =============="
- docker logs node2.emqx.io
- echo "DUMP_CONTAINER_LOGS_END"
- exit 1
- fi
- helm_test:
- runs-on: ubuntu-20.04
- needs: prepare
- strategy:
- fail-fast: false
- matrix:
- profile:
- - emqx
- # - emqx-enterprise # TODO test enterprise
- steps:
- - uses: actions/download-artifact@v2
- with:
- name: source
- path: .
- - name: unzip source code
- run: unzip -q source.zip
- - name: make docker image
- working-directory: source
- env:
- EMQX_BUILDER: ghcr.io/emqx/emqx-builder/5.0-2:24.1.5-2-alpine3.14
- run: |
- make ${{ matrix.profile }}-docker
- echo "TARGET=emqx/${{ matrix.profile }}" >> $GITHUB_ENV
- echo "EMQX_TAG=$(./pkg-vsn.sh)" >> $GITHUB_ENV
- - run: minikube start
- - name: run emqx on chart
- timeout-minutes: 5
- working-directory: source
- run: |
- minikube image load $TARGET:$EMQX_TAG
- sed -i -r "s/^appVersion: .*$/appVersion: \"$EMQX_TAG\"/g" deploy/charts/emqx/Chart.yaml
- helm install emqx \
- --set image.repository=$TARGET \
- --set image.pullPolicy=Never \
- --set emqxAclConfig="" \
- --set image.pullPolicy=Never \
- --set emqxConfig.EMQX_ZONES__DEFAULT__MQTT__RETRY_INTERVAL=2s \
- --set emqxConfig.EMQX_ZONES__DEFAULT__MQTT__MAX_TOPIC_ALIAS=10 \
- deploy/charts/emqx \
- --debug
- while [ "$(kubectl get StatefulSet -l app.kubernetes.io/name=emqx -o jsonpath='{.items[0].status.replicas}')" \
- != "$(kubectl get StatefulSet -l app.kubernetes.io/name=emqx -o jsonpath='{.items[0].status.readyReplicas}')" ]; do
- echo "==============================";
- kubectl get pods;
- echo "==============================";
- echo "waiting emqx started";
- sleep 10;
- done
- - name: get emqx-0 pods log
- if: failure()
- run: |
- kubectl describe pods emqx-0
- kubectl logs emqx-0
- - name: get emqx-1 pods log
- if: failure()
- run: |
- kubectl describe pods emqx-1
- kubectl logs emqx-1
- - name: get emqx-2 pods log
- if: failure()
- run: |
- kubectl describe pods emqx-2
- kubectl logs emqx-2
- - uses: actions/checkout@v2
- with:
- repository: emqx/paho.mqtt.testing
- ref: develop-4.0
- path: paho.mqtt.testing
- - name: install pytest
- run: |
- pip install pytest
- echo "$HOME/.local/bin" >> $GITHUB_PATH
- - name: run paho test
- run: |
- kubectl port-forward service/emqx 1883:1883 > /dev/null &
- pytest -v paho.mqtt.testing/interoperability/test_client/V5/test_connect.py -k test_basic --host "127.0.0.1"
|