#改变工作目录到当前脚本所在路径 if [[ "$0" =~ / ]]; then cd "${0%/*}"; fi export CWD=`pwd` echo "check params ..." filescount=`./mql files? log.level=error "$@" | wc -l` if [[ "${filescount}" == "0" || "${filescount}" == "1" ]]; then ./mql "$@" exit $? fi keyspace=`./mql keyspace? log.level=error "$@"` if [[ `echo "${keyspace}" | wc -w` == "1" ]]; then logfile="${keyspace}.test.log" else logfile="test.log" fi if [[ "$bgmode" == "" ]]; then ps -ef | grep -v grep | grep "$0 bgmode=1" | awk '{print $2}' | xargs kill -9 2>&1 >/dev/null echo "" > changed.log echo mql test running in background mode export bgmode=1 nohup "$0" bgmode=1 "$@" 2>&1 >/dev/null & tail -F $logfile exit 0 fi parseargs() { while [[ "$*" != "" ]]; do if [[ "$1" == "init=no" ]]; then noinit=1 fi shift done } parseargs "$@" odbver=`./mql odbver? log.level=error "$@"` odbpath=`./mql odbpath? log.level=error "$@"` last_odbserver="$odbver" echo "odbver=$last_odbserver" >> changed.log wait_odbserver_change() { while true; do odbver=`./mql odbver? log.level=error "$@"` if [[ "$odbver" != "$last_odbserver" ]]; then # wait for sync files complete sleep 10 return 0 fi sleep 2 done } n=0 while [[ true ]]; do ret=0 n=`expr $n + 1` odbver=`./mql odbver? log.level=error "$@"` echo "$odbver" >> changed.log if [[ "$odbver" != "$last_odbserver" ]]; then echo "odbserver changed" >> changed.log echo "$last_odbserver" >> changed.log echo "$odbver" >> changed.log last_odbserver="$odbver" if [[ "$noinit" != "1" ]]; then ./initkeyspace.sh $keyspace ret=$? if [[ "$ret" != "0" ]]; then # init error n=0 else n=1 fi else n=1 fi fi if [[ "$n" != "0" ]]; then cd "$CWD" PROCFLAG="ootest$n" endflag="$odbver end of test $n return" ttt=`date +'%Y%m%d%H%M%S'` check_odbserver() { sleep 10 while true; do mqlproc=`ps -ef | grep -v grep | grep mql | grep "proc.flag=${PROCFLAG}"` if [[ "$mqlproc" == "" ]]; then return 0 fi odbver=`./mql odbver? log.level=error "$@"` if [[ "$odbver" != "$last_odbserver" ]]; then echo "$odbver" >> changed.log echo "kill last process" >> changed.log ps -ef | grep -v grep | grep mql | grep "proc.flag=${PROCFLAG}" | awk '{print $2}' | xargs kill -9 return 0 fi sleep 10 done } run() { ./mqltest.sh "proc.flag=${PROCFLAG}" "$@" ret=$? echo "$endflag $ret" >> $logfile if [[ "$ret" == "0" ]]; then sleep 5 fi return $ret } check_odbserver "$@" & run "$@" ret=$? fi if [[ "$ret" != "0" && "$ret" != "99" ]]; then echo "wait for odbserver upgrad" | tee -a $logfile wait_odbserver_change fi done