milvus/ci/scripts/run_unittest.sh

121 lines
3.9 KiB
Bash
Executable File

#!/bin/bash
set -e
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
SCRIPTS_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
HELP="
Usage:
$0 [flags] [Arguments]
-i [INSTALL_PREFIX] or --install_prefix=[INSTALL_PREFIX]
Install directory used by install.
--mysql_user=[MYSQL_USER_NAME] MySQL User Name
--mysql_password=[MYSQL_PASSWORD]
MySQL Password
--mysql_host=[MYSQL_HOST] MySQL Host
-h or --help Print help information
Use \"$0 --help\" for more information about a given command.
"
ARGS=`getopt -o "i:h" -l "install_prefix::,mysql_user::,mysql_password::,mysql_host::,help" -n "$0" -- "$@"`
eval set -- "${ARGS}"
while true ; do
case "$1" in
-i|--install_prefix)
# o has an optional argument. As we are in quoted mode,
# an empty parameter will be generated if its optional
# argument is not found.
case "$2" in
"") echo "Option install_prefix, no argument"; exit 1 ;;
*) INSTALL_PREFIX=$2 ; shift 2 ;;
esac ;;
--mysql_user)
case "$2" in
"") echo "Option mysql_user, no argument"; exit 1 ;;
*) MYSQL_USER_NAME=$2 ; shift 2 ;;
esac ;;
--mysql_password)
case "$2" in
"") echo "Option mysql_password, no argument"; exit 1 ;;
*) MYSQL_PASSWORD=$2 ; shift 2 ;;
esac ;;
--mysql_host)
case "$2" in
"") echo "Option mysql_host, no argument"; exit 1 ;;
*) MYSQL_HOST=$2 ; shift 2 ;;
esac ;;
-h|--help) echo -e "${HELP}" ; exit 0 ;;
--) shift ; break ;;
*) echo "Internal error!" ; exit 1 ;;
esac
done
# Set defaults for vars modified by flags to this script
INSTALL_PREFIX=${INSTALL_PREFIX:="/var/lib/milvus"}
MYSQL_USER_NAME=${MYSQL_USER_NAME:="root"}
MYSQL_PASSWORD=${MYSQL_PASSWORD:="123456"}
MYSQL_HOST=${MYSQL_HOST:="127.0.0.1"}
MYSQL_PORT=${MYSQL_PORT:="3306"}
DIR_UNITTEST="${INSTALL_PREFIX}/unittest"
if [ -d ${INSTALL_PREFIX}/lib ]; then
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${INSTALL_PREFIX}/lib
fi
if [ ! -d ${DIR_UNITTEST} ]; then
echo "The unittest folder does not exist!"
exit 1
fi
pushd ${SCRIPTS_DIR}
MYSQL_DB_NAME=milvus_`date +%s%N`
function mysql_exc()
{
cmd=$1
mysql -h${MYSQL_HOST} -u${MYSQL_USER_NAME} -p${MYSQL_PASSWORD} -e "${cmd}"
if [ $? -ne 0 ]; then
echo "mysql $cmd run failed"
fi
}
mysql_exc "CREATE DATABASE IF NOT EXISTS ${MYSQL_DB_NAME};"
mysql_exc "GRANT ALL PRIVILEGES ON ${MYSQL_DB_NAME}.* TO '${MYSQL_USER_NAME}'@'%';"
mysql_exc "FLUSH PRIVILEGES;"
mysql_exc "USE ${MYSQL_DB_NAME};"
for test in `ls ${DIR_UNITTEST}`; do
echo $test
case ${test} in
test_db)
# set run args for test_db
args="mysql://${MYSQL_USER_NAME}:${MYSQL_PASSWORD}@${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DB_NAME}"
;;
*test_*)
args=""
;;
esac
# run unittest
${DIR_UNITTEST}/${test} "${args}"
if [ $? -ne 0 ]; then
echo ${args}
echo ${DIR_UNITTEST}/${test} "run failed"
exit 1
fi
done
mysql_exc "DROP DATABASE IF EXISTS ${MYSQL_DB_NAME};"
popd