174 lines
6.5 KiB
Bash
Executable File
174 lines
6.5 KiB
Bash
Executable File
#!/bin/sh
|
|
set -x -e -u
|
|
export EMQX_NAME=${EMQX_NAME:-"emqx"}
|
|
export PACKAGE_PATH="/emqx/_packages/${EMQX_NAME}"
|
|
export RELUP_PACKAGE_PATH="/emqx/relup_packages/${EMQX_NAME}"
|
|
# export EMQX_NODE_NAME="emqx-on-$(uname -m)@127.0.0.1"
|
|
# export EMQX_NODE_COOKIE=$(date +%s%N)
|
|
|
|
emqx_prepare(){
|
|
mkdir -p ${PACKAGE_PATH}
|
|
|
|
if [ ! -d "/paho-mqtt-testing" ]; then
|
|
git clone -b develop-4.0 https://github.com/emqx/paho.mqtt.testing.git /paho-mqtt-testing
|
|
fi
|
|
pip3 install pytest
|
|
}
|
|
|
|
emqx_test(){
|
|
cd ${PACKAGE_PATH}
|
|
|
|
for var in $(ls $PACKAGE_PATH/${EMQX_NAME}-*);do
|
|
case ${var##*.} in
|
|
"zip")
|
|
packagename=`basename ${PACKAGE_PATH}/${EMQX_NAME}-*.zip`
|
|
unzip -q ${PACKAGE_PATH}/$packagename
|
|
sed -i "/zone.external.server_keepalive/c zone.external.server_keepalive = 60" ${PACKAGE_PATH}/emqx/etc/emqx.conf
|
|
sed -i "/mqtt.max_topic_alias/c mqtt.max_topic_alias = 10" ${PACKAGE_PATH}/emqx/etc/emqx.conf
|
|
sed -i '/emqx_telemetry/d' ${PACKAGE_PATH}/emqx/data/loaded_plugins
|
|
|
|
if [ ! -z $(echo ${EMQX_DEPS_DEFAULT_VSN#v} | grep -oE "[0-9]+\.[0-9]+(\.[0-9]+)?-(alpha|beta|rc)\.[0-9]") ]; then
|
|
if [ ! -d ${PACKAGE_PATH}/emqx/lib/emqx-${EMQX_DEPS_DEFAULT_VSN#v} ] || [ ! -d ${PACKAGE_PATH}/emqx/releases/${EMQX_DEPS_DEFAULT_VSN#v} ] ;then
|
|
echo "emqx zip version error"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
echo "running ${packagename} start"
|
|
${PACKAGE_PATH}/emqx/bin/emqx start || tail ${PACKAGE_PATH}/emqx/log/erlang.log.1
|
|
IDLE_TIME=0
|
|
while [ -z "$(${PACKAGE_PATH}/emqx/bin/emqx_ctl status |grep 'is running'|awk '{print $1}')" ]
|
|
do
|
|
if [ $IDLE_TIME -gt 10 ]
|
|
then
|
|
echo "emqx running error"
|
|
exit 1
|
|
fi
|
|
sleep 10
|
|
IDLE_TIME=$((IDLE_TIME+1))
|
|
done
|
|
pytest -v /paho-mqtt-testing/interoperability/test_client/V5/test_connect.py::test_basic
|
|
${PACKAGE_PATH}/emqx/bin/emqx stop
|
|
echo "running ${packagename} stop"
|
|
rm -rf ${PACKAGE_PATH}/emqx
|
|
;;
|
|
"deb")
|
|
packagename=`basename ${PACKAGE_PATH}/${EMQX_NAME}-*.deb`
|
|
dpkg -i ${PACKAGE_PATH}/$packagename
|
|
if [ $(dpkg -l |grep emqx |awk '{print $1}') != "ii" ]
|
|
then
|
|
echo "package install error"
|
|
exit 1
|
|
fi
|
|
|
|
echo "running ${packagename} start"
|
|
running_test
|
|
echo "running ${packagename} stop"
|
|
|
|
dpkg -r ${EMQX_NAME}
|
|
if [ $(dpkg -l |grep emqx |awk '{print $1}') != "rc" ]
|
|
then
|
|
echo "package remove error"
|
|
exit 1
|
|
fi
|
|
|
|
dpkg -P ${EMQX_NAME}
|
|
if [ ! -z "$(dpkg -l |grep emqx)" ]
|
|
then
|
|
echo "package uninstall error"
|
|
exit 1
|
|
fi
|
|
;;
|
|
"rpm")
|
|
packagename=`basename ${PACKAGE_PATH}/${EMQX_NAME}-*.rpm`
|
|
rpm -ivh ${PACKAGE_PATH}/$packagename
|
|
if [ -z $(rpm -q emqx | grep -o emqx) ];then
|
|
echo "package install error"
|
|
exit 1
|
|
fi
|
|
|
|
echo "running ${packagename} start"
|
|
running_test
|
|
echo "running ${packagename} stop"
|
|
|
|
rpm -e ${EMQX_NAME}
|
|
if [ "$(rpm -q emqx)" != "package emqx is not installed" ];then
|
|
echo "package uninstall error"
|
|
exit 1
|
|
fi
|
|
;;
|
|
|
|
esac
|
|
done
|
|
}
|
|
|
|
running_test(){
|
|
if [ ! -z $(echo ${EMQX_DEPS_DEFAULT_VSN#v} | grep -oE "[0-9]+\.[0-9]+(\.[0-9]+)?-(alpha|beta|rc)\.[0-9]") ]; then
|
|
if [ ! -d /usr/lib/emqx/lib/emqx-${EMQX_DEPS_DEFAULT_VSN#v} ] || [ ! -d /usr/lib/emqx/releases/${EMQX_DEPS_DEFAULT_VSN#v} ];then
|
|
echo "emqx package version error"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
sed -i "/zone.external.server_keepalive/c zone.external.server_keepalive = 60" /etc/emqx/emqx.conf
|
|
sed -i "/mqtt.max_topic_alias/c mqtt.max_topic_alias = 10" /etc/emqx/emqx.conf
|
|
sed -i '/emqx_telemetry/d' /var/lib/emqx/loaded_plugins
|
|
|
|
emqx start || tail /var/log/emqx/erlang.log.1
|
|
IDLE_TIME=0
|
|
while [ -z "$(emqx_ctl status |grep 'is running'|awk '{print $1}')" ]
|
|
do
|
|
if [ $IDLE_TIME -gt 10 ]
|
|
then
|
|
echo "emqx running error"
|
|
exit 1
|
|
fi
|
|
sleep 10
|
|
IDLE_TIME=$((IDLE_TIME+1))
|
|
done
|
|
pytest -v /paho-mqtt-testing/interoperability/test_client/V5/test_connect.py::test_basic
|
|
emqx stop || kill $(ps -ef | grep -E '\-progname\s.+emqx\s' |awk '{print $2}')
|
|
|
|
if [ $(sed -n '/^ID=/p' /etc/os-release | sed -r 's/ID=(.*)/\1/g' | sed 's/"//g') = ubuntu ] \
|
|
|| [ $(sed -n '/^ID=/p' /etc/os-release | sed -r 's/ID=(.*)/\1/g' | sed 's/"//g') = debian ] \
|
|
|| [ $(sed -n '/^ID=/p' /etc/os-release | sed -r 's/ID=(.*)/\1/g' | sed 's/"//g') = raspbian ];then
|
|
service emqx start || tail /var/log/emqx/erlang.log.1
|
|
IDLE_TIME=0
|
|
while [ -z "$(emqx_ctl status |grep 'is running'|awk '{print $1}')" ]
|
|
do
|
|
if [ $IDLE_TIME -gt 10 ]
|
|
then
|
|
echo "emqx service error"
|
|
exit 1
|
|
fi
|
|
sleep 10
|
|
IDLE_TIME=$((IDLE_TIME+1))
|
|
done
|
|
service emqx stop
|
|
fi
|
|
}
|
|
|
|
relup_test(){
|
|
if [ -d ${RELUP_PACKAGE_PATH} ];then
|
|
cd ${RELUP_PACKAGE_PATH }
|
|
|
|
for var in $(ls ${EMQX_NAME}-*-$(uname -m).zip);do
|
|
packagename=`basename ${var}`
|
|
unzip $packagename
|
|
./emqx/bin/emqx start
|
|
./emqx/bin/emqx_ctl status
|
|
./emqx/bin/emqx versions
|
|
cp ${PACKAGE_PATH}/${EMQX_NAME}-*-${EMQX_DEPS_DEFAULT_VSN#v}-$(uname -m).zip ./emqx/releases
|
|
./emqx/bin/emqx install ${EMQX_DEPS_DEFAULT_VSN#v}
|
|
[ $(./emqx/bin/emqx versions |grep permanent | grep -oE "[0-9].[0-9].[0-9]") = ${EMQX_DEPS_DEFAULT_VSN#v} ] || exit 1
|
|
./emqx/bin/emqx_ctl status
|
|
./emqx/bin/emqx stop
|
|
rm -rf emqx
|
|
done
|
|
fi
|
|
}
|
|
|
|
emqx_prepare
|
|
emqx_test
|
|
relup_test
|