chore(relup tests): refactored relup tests
This commit is contained in:
parent
ec89781cc4
commit
ebbf567fff
|
@ -0,0 +1,40 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
USAGE="$0 profile vsn old_vsn package_path"
|
||||||
|
EXAMPLE="$0 emqx 4.3.8-b3bb6075 v4.3.2 /home/alice/relup_dubug/downloaded_packages"
|
||||||
|
|
||||||
|
if [[ $# -ne 4 ]]; then
|
||||||
|
echo "$USAGE"
|
||||||
|
echo "$EXAMPLE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
PROFILE="$1"
|
||||||
|
VSN="$2"
|
||||||
|
OLD_VSN="$3"
|
||||||
|
PACKAGE_PATH="$4"
|
||||||
|
|
||||||
|
TEMPDIR=$(mktemp -d)
|
||||||
|
trap '{ rm -rf -- "$TEMPDIR"; }' EXIT
|
||||||
|
|
||||||
|
git clone --branch=master "https://github.com/terry-xiaoyu/one_more_emqx.git" "$TEMPDIR/one_more_emqx"
|
||||||
|
cp -r "$PACKAGE_PATH" "$TEMPDIR/packages"
|
||||||
|
cp relup.lux "$TEMPDIR/"
|
||||||
|
cp -r http_server "$TEMPDIR/http_server"
|
||||||
|
|
||||||
|
exec docker run \
|
||||||
|
-v "$TEMPDIR:/relup_test" \
|
||||||
|
-w "/relup_test" \
|
||||||
|
-e REBAR_COLOR=none \
|
||||||
|
-it savonarola/emqx-relup-env:4.3 \
|
||||||
|
lux \
|
||||||
|
--case_timeout infinity \
|
||||||
|
--var PROFILE="$PROFILE" \
|
||||||
|
--var PACKAGE_PATH="/relup_test/packages" \
|
||||||
|
--var ONE_MORE_EMQX_PATH="/relup_test/one_more_emqx" \
|
||||||
|
--var VSN="$VSN" \
|
||||||
|
--var OLD_VSN="$OLD_VSN" \
|
||||||
|
relup.lux
|
||||||
|
|
|
@ -1,15 +1,12 @@
|
||||||
[config var=PROFILE]
|
[config var=PROFILE]
|
||||||
[config var=PACKAGE_PATH]
|
[config var=PACKAGE_PATH]
|
||||||
[config var=BENCH_PATH]
|
|
||||||
[config var=ONE_MORE_EMQX_PATH]
|
[config var=ONE_MORE_EMQX_PATH]
|
||||||
[config var=VSN]
|
[config var=VSN]
|
||||||
[config var=OLD_VSNS]
|
[config var=OLD_VSN]
|
||||||
|
|
||||||
[config shell_cmd=/bin/bash]
|
[config shell_cmd=/bin/bash]
|
||||||
[config timeout=600000]
|
[config timeout=600000]
|
||||||
|
|
||||||
[loop old_vsn $OLD_VSNS]
|
|
||||||
|
|
||||||
[shell http_server]
|
[shell http_server]
|
||||||
!cd http_server
|
!cd http_server
|
||||||
!rebar3 shell
|
!rebar3 shell
|
||||||
|
@ -22,7 +19,7 @@
|
||||||
|
|
||||||
[shell emqx]
|
[shell emqx]
|
||||||
!cd $PACKAGE_PATH
|
!cd $PACKAGE_PATH
|
||||||
!unzip -q -o $PROFILE-ubuntu20.04-$(echo $old_vsn | sed -r 's/[v|e]//g')-amd64.zip
|
!unzip -q -o $PROFILE-ubuntu20.04-$(echo $OLD_VSN | sed -r 's/[v|e]//g')-amd64.zip
|
||||||
?SH-PROMPT
|
?SH-PROMPT
|
||||||
|
|
||||||
!cd emqx
|
!cd emqx
|
||||||
|
@ -81,9 +78,7 @@
|
||||||
???SH-PROMPT
|
???SH-PROMPT
|
||||||
|
|
||||||
[shell bench]
|
[shell bench]
|
||||||
!cd $BENCH_PATH
|
!emqtt_bench pub -c 10 -I 1000 -t t/%i -s 64 -L 300
|
||||||
|
|
||||||
!./emqtt_bench pub -c 10 -I 1000 -t t/%i -s 64 -L 300
|
|
||||||
???sent
|
???sent
|
||||||
|
|
||||||
[shell emqx]
|
[shell emqx]
|
||||||
|
@ -107,7 +102,7 @@
|
||||||
"""
|
"""
|
||||||
?SH-PROMPT
|
?SH-PROMPT
|
||||||
|
|
||||||
!./bin/emqx_ctl plugins list | grep emqx_management
|
!./bin/emqx_ctl plugins list | grep --color=never emqx_management
|
||||||
?Plugin\(emqx_management.*active=true\)
|
?Plugin\(emqx_management.*active=true\)
|
||||||
?SH-PROMPT
|
?SH-PROMPT
|
||||||
|
|
||||||
|
@ -132,7 +127,7 @@
|
||||||
"""
|
"""
|
||||||
?SH-PROMPT
|
?SH-PROMPT
|
||||||
|
|
||||||
!./bin/emqx_ctl plugins list | grep emqx_management
|
!./bin/emqx_ctl plugins list | grep --color=never emqx_management
|
||||||
?Plugin\(emqx_management.*active=true\)
|
?Plugin\(emqx_management.*active=true\)
|
||||||
?SH-PROMPT
|
?SH-PROMPT
|
||||||
|
|
||||||
|
@ -190,8 +185,6 @@
|
||||||
!halt(3).
|
!halt(3).
|
||||||
?SH-PROMPT:
|
?SH-PROMPT:
|
||||||
|
|
||||||
[endloop]
|
|
||||||
|
|
||||||
[cleanup]
|
[cleanup]
|
||||||
!echo ==$$?==
|
!echo ==$$?==
|
||||||
?==0==
|
?==0==
|
||||||
|
|
|
@ -178,76 +178,78 @@ jobs:
|
||||||
fi
|
fi
|
||||||
exit $RESULT
|
exit $RESULT
|
||||||
|
|
||||||
relup_test:
|
relup_test_plan:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
container: emqx/build-env:erl23.2.7.2-emqx-2-ubuntu20.04
|
||||||
|
outputs:
|
||||||
|
profile: ${{ steps.profile-and-versions.outputs.profile }}
|
||||||
|
vsn: ${{ steps.profile-and-versions.outputs.vsn }}
|
||||||
|
old_vsns: ${{ steps.profile-and-versions.outputs.old_vsns }}
|
||||||
|
broker: ${{ steps.profile-and-versions.outputs.broker }}
|
||||||
|
matrix: ${{ steps.generate-matrix.outputs.matrix }}
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: bash
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
name: Checkout
|
||||||
|
with:
|
||||||
|
path: emqx
|
||||||
|
fetch-depth: 0
|
||||||
|
- name: Get profile and version list
|
||||||
|
id: profile-and-versions
|
||||||
|
run: |
|
||||||
|
cd emqx
|
||||||
|
vsn="$(./pkg-vsn.sh)"
|
||||||
|
pre_vsn="$(echo $vsn | grep -oE '^[0-9]+.[0-9]')"
|
||||||
|
|
||||||
|
if make emqx-ee --dry-run > /dev/null 2>&1; then
|
||||||
|
profile="emqx-ee"
|
||||||
|
old_vsns="$(git tag -l "e$pre_vsn.[0-9]" | xargs echo -n | sed "s/e$vsn//")"
|
||||||
|
broker="emqx-ee"
|
||||||
|
|
||||||
|
else
|
||||||
|
profile="emqx"
|
||||||
|
old_vsns="$(git tag -l "v$pre_vsn.[0-9]" | xargs echo -n | sed "s/v$vsn//")"
|
||||||
|
broker="emqx-ce"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "OLD_VSNS=$old_vsns" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
echo "::set-output name=vsn::$vsn"
|
||||||
|
echo "::set-output name=profile::$profile"
|
||||||
|
echo "::set-output name=broker::$broker"
|
||||||
|
echo "::set-output name=old_vsns::$old_vsns"
|
||||||
|
- name: Generate matrix
|
||||||
|
id: generate-matrix
|
||||||
|
run: |
|
||||||
|
matrix=$(echo -n "$OLD_VSNS" | jq -R -s -c 'split(" ")')
|
||||||
|
echo "::set-output name=matrix::$matrix"
|
||||||
|
|
||||||
|
relup_test_build:
|
||||||
|
needs: relup_test_plan
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
container: emqx/build-env:erl23.2.7.2-emqx-2-ubuntu20.04
|
container: emqx/build-env:erl23.2.7.2-emqx-2-ubuntu20.04
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
shell: bash
|
shell: bash
|
||||||
|
env:
|
||||||
|
OLD_VSNS: "${{ needs.relup_test_plan.outputs.old_vsns }}"
|
||||||
|
PROFILE: "${{ needs.relup_test_plan.outputs.profile }}"
|
||||||
|
BROKER: "${{ needs.relup_test_plan.outputs.broker }}"
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/setup-python@v2
|
|
||||||
with:
|
|
||||||
python-version: '3.8'
|
|
||||||
architecture: 'x64'
|
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
name: Checkout
|
||||||
with:
|
with:
|
||||||
repository: emqx/paho.mqtt.testing
|
|
||||||
ref: develop-4.0
|
|
||||||
path: paho.mqtt.testing
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
repository: terry-xiaoyu/one_more_emqx
|
|
||||||
ref: master
|
|
||||||
path: one_more_emqx
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
repository: emqx/emqtt-bench
|
|
||||||
ref: '0.3.3'
|
|
||||||
path: emqtt-bench
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
repository: hawk/lux
|
|
||||||
ref: lux-2.6
|
|
||||||
path: lux
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
repository: ${{ github.repository }}
|
|
||||||
path: emqx
|
path: emqx
|
||||||
fetch-depth: 0
|
- name: Prepare credentials
|
||||||
- name: prepare
|
|
||||||
run: |
|
run: |
|
||||||
if make -C emqx emqx-ee --dry-run > /dev/null 2>&1; then
|
if [ "$PROFILE" = "emqx-ee" ]; then
|
||||||
echo "https://ci%40emqx.io:${{ secrets.CI_GIT_TOKEN }}@github.com" > $HOME/.git-credentials
|
echo "https://ci%40emqx.io:${{ secrets.CI_GIT_TOKEN }}@github.com" > $HOME/.git-credentials
|
||||||
git config --global credential.helper store
|
git config --global credential.helper store
|
||||||
echo "${{ secrets.CI_GIT_TOKEN }}" >> emqx/scripts/git-token
|
echo "${{ secrets.CI_GIT_TOKEN }}" >> emqx/scripts/git-token
|
||||||
echo "PROFILE=emqx-ee" >> $GITHUB_ENV
|
|
||||||
else
|
|
||||||
echo "PROFILE=emqx" >> $GITHUB_ENV
|
|
||||||
fi
|
fi
|
||||||
- name: get version
|
- name: Download bases
|
||||||
run: |
|
|
||||||
set -e -x -u
|
|
||||||
cd emqx
|
|
||||||
if [ $PROFILE = "emqx" ];then
|
|
||||||
broker="emqx-ce"
|
|
||||||
edition='opensource'
|
|
||||||
else
|
|
||||||
broker="emqx-ee"
|
|
||||||
edition='enterprise'
|
|
||||||
fi
|
|
||||||
echo "BROKER=$broker" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
vsn="$(./pkg-vsn.sh)"
|
|
||||||
echo "VSN=$vsn" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
pre_vsn="$(echo $vsn | grep -oE '^[0-9]+.[0-9]')"
|
|
||||||
if [ $PROFILE = "emqx" ]; then
|
|
||||||
old_vsns="$(git tag -l "v$pre_vsn.[0-9]" | xargs echo -n | sed "s/v$vsn//")"
|
|
||||||
else
|
|
||||||
old_vsns="$(git tag -l "e$pre_vsn.[0-9]" | xargs echo -n | sed "s/e$vsn//")"
|
|
||||||
fi
|
|
||||||
echo "OLD_VSNS=$old_vsns" >> $GITHUB_ENV
|
|
||||||
- name: download emqx
|
|
||||||
run: |
|
run: |
|
||||||
set -e -x -u
|
set -e -x -u
|
||||||
mkdir -p emqx/_upgrade_base
|
mkdir -p emqx/_upgrade_base
|
||||||
|
@ -256,53 +258,70 @@ jobs:
|
||||||
for old_vsn in ${old_vsns[@]}; do
|
for old_vsn in ${old_vsns[@]}; do
|
||||||
wget --no-verbose https://s3-us-west-2.amazonaws.com/packages.emqx/$BROKER/$old_vsn/$PROFILE-ubuntu20.04-${old_vsn#[e|v]}-amd64.zip
|
wget --no-verbose https://s3-us-west-2.amazonaws.com/packages.emqx/$BROKER/$old_vsn/$PROFILE-ubuntu20.04-${old_vsn#[e|v]}-amd64.zip
|
||||||
done
|
done
|
||||||
- name: build emqx
|
- name: Build emqx
|
||||||
run: make -C emqx ${PROFILE}-zip
|
run: make -C emqx ${PROFILE}-zip
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v2
|
||||||
|
name: Upload built emqx and test scenario
|
||||||
with:
|
with:
|
||||||
name: emqx
|
name: emqx_built
|
||||||
path: emqx/_packages/**/*.zip
|
path: |
|
||||||
- name: build emqtt-bench
|
emqx/_packages/*/*.zip
|
||||||
run: make -C emqtt-bench
|
emqx/.ci/fvt_tests
|
||||||
- name: build lux
|
|
||||||
run: |
|
relup_test_run:
|
||||||
set -e -u -x
|
needs:
|
||||||
cd lux
|
- relup_test_plan
|
||||||
autoconf
|
- relup_test_build
|
||||||
./configure
|
runs-on: ubuntu-20.04
|
||||||
make
|
container: emqx/relup-test-env:erl23.2.7.2-emqx-2-ubuntu20.04
|
||||||
make install
|
strategy:
|
||||||
- name: run relup test
|
matrix:
|
||||||
timeout-minutes: 30
|
old_vsn: ${{ fromJson(needs.relup_test_plan.outputs.matrix) }}
|
||||||
|
env:
|
||||||
|
OLD_VSN: "${{ matrix.old_vsn }}"
|
||||||
|
PROFILE: "${{ needs.relup_test_plan.outputs.profile }}"
|
||||||
|
VSN: "${{ needs.relup_test_plan.outputs.vsn }}"
|
||||||
|
BROKER: "${{ needs.relup_test_plan.outputs.broker }}"
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: bash
|
||||||
|
steps:
|
||||||
|
- uses: actions/download-artifact@v2
|
||||||
|
name: Dowload built emqx and test scenario
|
||||||
|
with:
|
||||||
|
name: emqx_built
|
||||||
|
path: emqx_built
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
name: Checkout one_more_emqx
|
||||||
|
with:
|
||||||
|
repository: terry-xiaoyu/one_more_emqx
|
||||||
|
ref: master
|
||||||
|
path: one_more_emqx
|
||||||
|
- name: Prepare packages
|
||||||
run: |
|
run: |
|
||||||
set -e -x -u
|
set -e -x -u
|
||||||
if [ -n "$OLD_VSNS" ]; then
|
|
||||||
mkdir -p packages
|
mkdir -p packages
|
||||||
cp emqx/_packages/${PROFILE}/*.zip packages
|
cp emqx_built/_packages/*/*.zip packages
|
||||||
cp emqx/_upgrade_base/*.zip packages
|
cd packages
|
||||||
|
wget --no-verbose https://s3-us-west-2.amazonaws.com/packages.emqx/$BROKER/$OLD_VSN/$PROFILE-ubuntu20.04-${OLD_VSN#[e|v]}-amd64.zip
|
||||||
|
- name: Run relup test scenario
|
||||||
|
timeout-minutes: 5
|
||||||
|
run: |
|
||||||
lux \
|
lux \
|
||||||
--case_timeout infinity \
|
--case_timeout infinity \
|
||||||
--var PROFILE=$PROFILE \
|
--var PROFILE=$PROFILE \
|
||||||
--var PACKAGE_PATH=$(pwd)/packages \
|
--var PACKAGE_PATH=$(pwd)/packages \
|
||||||
--var BENCH_PATH=$(pwd)/emqtt-bench \
|
|
||||||
--var ONE_MORE_EMQX_PATH=$(pwd)/one_more_emqx \
|
--var ONE_MORE_EMQX_PATH=$(pwd)/one_more_emqx \
|
||||||
--var VSN="$VSN" \
|
--var VSN="$VSN" \
|
||||||
--var OLD_VSNS="$OLD_VSNS" \
|
--var OLD_VSN="$OLD_VSN" \
|
||||||
emqx/.ci/fvt_tests/relup.lux
|
emqx_built/.ci/fvt_tests/relup.lux
|
||||||
fi
|
- uses: actions/upload-artifact@v2
|
||||||
- uses: actions/upload-artifact@v1
|
name: Save debug data
|
||||||
if: failure()
|
if: failure()
|
||||||
with:
|
with:
|
||||||
name: emqx_logs
|
name: debug_data
|
||||||
path: packages/emqx/log/emqx.log.1
|
path: |
|
||||||
- uses: actions/upload-artifact@v1
|
packages/emqx/log/emqx.log.1
|
||||||
if: failure()
|
packages/emqx2/log/emqx.log.1
|
||||||
with:
|
packages/*.zip
|
||||||
name: emqx2_logs
|
lux_logs
|
||||||
path: packages/emqx2/log/emqx.log.1
|
|
||||||
- uses: actions/upload-artifact@v1
|
|
||||||
if: failure()
|
|
||||||
with:
|
|
||||||
name: lux_logs
|
|
||||||
path: lux_logs
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue