[config var=PROFILE] [config var=PACKAGE_PATH] [config var=ONE_MORE_EMQX_PATH] [config var=VSN] [config var=OLD_VSN] [config var=FROM_OTP_VSN] [config var=TO_OTP_VSN] [config shell_cmd=/bin/bash] [config timeout=600000] [shell http_server] !cd http_server !rebar3 shell ???Eshell ???> !http_server:start(). ?Start http_server listener on 8080 successfully. ?ok ?> [shell emqx] !OLD_VSN=$(echo $OLD_VSN | sed -r 's/[v|e]//g') !cd $PACKAGE_PATH !unzip -q -o $PROFILE-$(echo $OLD_VSN | sed -r 's/[v|e]//g')-otp${FROM_OTP_VSN}-ubuntu20.04-amd64.zip ?SH-PROMPT !cd emqx !export EMQX_LOG__LEVEL=debug !./bin/emqx start ?EMQ X .* is started successfully! ?SH-PROMPT [shell emqx2] !OLD_VSN=$(echo $OLD_VSN | sed -r 's/[v|e]//g') !cd $PACKAGE_PATH !cp -f $ONE_MORE_EMQX_PATH/one_more_$(echo $PROFILE | sed 's/-/_/g').sh . !./one_more_$(echo $PROFILE | sed 's/-/_/g').sh emqx2 ?SH-PROMPT !cd emqx2 !export EMQX_LOG__LEVEL=debug !./bin/emqx start ?EMQ X .* is started successfully! ?SH-PROMPT !./bin/emqx_ctl cluster join emqx@127.0.0.1 ???Join the cluster successfully. ?SH-PROMPT !./bin/emqx_ctl cluster status """??? Cluster status: #{running_nodes => ['emqx2@127.0.0.1','emqx@127.0.0.1'], stopped_nodes => []} """ ?SH-PROMPT !./bin/emqx_ctl resources create 'web_hook' -i 'resource:691c29ba' -c '{"url": "http://127.0.0.1:8080/counter", "method": "POST"}' ?created ?SH-PROMPT !./bin/emqx_ctl rules create 'SELECT * FROM "t/#"' '[{"name":"data_to_webserver", "params": {"$$resource": "resource:691c29ba"}}]' ?created ?SH-PROMPT !sleep 5 ?SH-PROMPT [shell emqx] !./bin/emqx_ctl resources list ?691c29ba ?SH-PROMPT !./bin/emqx_ctl rules list ?691c29ba ?SH-PROMPT !./bin/emqx_ctl broker metrics | grep "messages.publish" ???SH-PROMPT [shell bench] !emqtt_bench pub -c 10 -I 1000 -t t/%i -s 64 -L 300 # e.g. Start with 20 workers, addrs pool size: 1 and req interval: 200 ms ?^Start [shell emqx] !echo "" > log/emqx.log.1 ?SH-PROMPT !cp -f ../$PROFILE-$VSN-otp${TO_OTP_VSN}-ubuntu20.04-amd64.zip releases/ ## upgrade to the new version !./bin/emqx install $VSN ?Made release permanent: "$VSN" ?SH-PROMPT !./bin/emqx versions |grep permanent ?(.*)$VSN ?SH-PROMPT ## downgrade to the old version !./bin/emqx install $${OLD_VSN} ?Made release permanent:.* ?SH-PROMPT !./bin/emqx versions |grep permanent | grep -qs "$${OLD_VSN}" ?SH-PROMPT: !echo ==$$?== ?^==0== ?SH-PROMPT: ## again, upgrade to the new version !./bin/emqx install $VSN ?Made release permanent: "$VSN" ?SH-PROMPT !./bin/emqx versions |grep permanent ?(.*)$VSN ?SH-PROMPT !./bin/emqx_ctl cluster status """??? Cluster status: #{running_nodes => ['emqx2@127.0.0.1','emqx@127.0.0.1'], stopped_nodes => []} """ ?SH-PROMPT !./bin/emqx_ctl plugins list | grep --color=never emqx_management ?Plugin\(emqx_management.*active=true\) ?SH-PROMPT [shell emqx2] !echo "" > log/emqx.log.1 ?SH-PROMPT !cp -f ../$PROFILE-$VSN-otp${TO_OTP_VSN}-ubuntu20.04-amd64.zip releases/ ## upgrade to the new version !./bin/emqx install $VSN ?Made release permanent: "$VSN" ?SH-PROMPT !./bin/emqx versions |grep permanent ?(.*)$VSN ?SH-PROMPT ## downgrade to the old version !./bin/emqx install $${OLD_VSN} ?Made release permanent:.* ?SH-PROMPT !./bin/emqx versions |grep permanent | grep -qs "$${OLD_VSN}" ?SH-PROMPT: !echo ==$$?== ?^==0== ?SH-PROMPT: ## again, upgrade to the new version !./bin/emqx install $VSN ?Made release permanent: "$VSN" ?SH-PROMPT !./bin/emqx versions |grep permanent ?(.*)$VSN ?SH-PROMPT !./bin/emqx_ctl cluster status """??? Cluster status: #{running_nodes => ['emqx2@127.0.0.1','emqx@127.0.0.1'], stopped_nodes => []} """ ?SH-PROMPT !./bin/emqx_ctl plugins list | grep --color=never emqx_management ?Plugin\(emqx_management.*active=true\) ?SH-PROMPT [shell bench] ?publish complete ?SH-PROMPT !sleep 30 ?SH-PROMPT [shell emqx] !./bin/emqx_ctl broker metrics | grep "messages.publish" ???SH-PROMPT ## We don't guarantee not to lose a single message! ## So even if we received 290~300 messages, we consider it as success [shell bench] !curl --user admin:public --silent --show-error http://localhost:8081/api/v4/rules | jq -M --raw-output ".data[0].metrics[] | select(.node==\"emqx@127.0.0.1\").matched" ?(29[0-9])|(300) ?SH-PROMPT !curl --user admin:public --silent --show-error http://localhost:8081/api/v4/rules | jq -M --raw-output ".data[0].actions[0].metrics[] | select(.node==\"emqx@127.0.0.1\").success" ?(29[0-9])|(300) ?SH-PROMPT ## The /counter API is provided by .ci/fvt_test/http_server !curl http://127.0.0.1:8080/counter ?\{"data":(29[0-9])|(300),"code":0\} ?SH-PROMPT [shell emqx2] !cat log/emqx.log.1 |grep -v 691c29ba |tail -n 100 -error ??SH-PROMPT: !./bin/emqx stop ?ok ?SH-PROMPT: !rm -rf $PACKAGE_PATH/emqx2 ?SH-PROMPT: [shell emqx] !cat log/emqx.log.1 |grep -v 691c29ba |tail -n 100 -error ??SH-PROMPT: !./bin/emqx stop ?ok ?SH-PROMPT: !rm -rf $PACKAGE_PATH/emqx ?SH-PROMPT: [shell http_server] !http_server:stop(). ?ok ?> !halt(3). ?SH-PROMPT: [cleanup] !echo ==$$?== ?==0==