wecisecode 2 هفته پیش
والد
کامیت
65b8da5664
2فایلهای تغییر یافته به همراه130 افزوده شده و 0 حذف شده
  1. 2 0
      odbctest/mql/make.sh
  2. 128 0
      odbctest/mql/ootest.sh

+ 2 - 0
odbctest/mql/make.sh

@@ -45,6 +45,8 @@ cp -pf mqltest.sh ${installpath}/matrix/mql
 cp -pf mqltest.sh ${installpath}/linux_amd64
 cp -pf oktest.sh ${installpath}/matrix/mql
 cp -pf oktest.sh ${installpath}/linux_amd64
+cp -pf ootest.sh ${installpath}/matrix/mql
+cp -pf ootest.sh ${installpath}/linux_amd64
 cp -pf pprof.sh ${installpath}/matrix/mql
 cp -pf pprof.sh ${installpath}/linux_amd64
 

+ 128 - 0
odbctest/mql/ootest.sh

@@ -0,0 +1,128 @@
+
+#改变工作目录到当前脚本所在路径
+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
+
+echo "" > changed.log
+
+parseargs() {
+    while [[ "$*" != "" ]]; do
+        if [[ "$1" == "init=no" ]]; then
+            noinit=1
+        elif [[ "$1" == "bgmode" ]]; then
+            bgmode=1
+        fi
+        shift
+    done
+}
+parseargs "$@"
+
+keyspace=`./mql keyspace? log.level=error "$@"`
+if [[ `echo "${keyspace}" | wc -w` == "1" ]]; then
+    logfile="${keyspace}.test.log"
+else
+    logfile="test.log"
+fi
+
+if [[ "$bgmode" != "1" ]]; then
+    echo mql test running in background mode
+    nohup "$0" bgmode "$@" 2>&1 >/dev/null &
+    tail -F $logfile
+    exit 0
+fi
+
+last_odbserver=`./mqltest.sh - "help()" | grep "omdb version" | awk -F '"' '{print $4}' |  awk -F " omdb " '{print "omdb " $2}'`
+
+wait_odbserver_change() {
+    while true; do
+        odbserver=`./mqltest.sh - "help()" | grep "omdb version" | awk -F '"' '{print $4}' |  awk -F " omdb " '{print "omdb " $2}'`
+        if [[ "${odbserver:0:12}" == "omdb version" ]]; then
+            if [[ "$odbserver" != "$last_odbserver" ]]; then
+                # wait for sync files complete
+                sleep 10
+                return 0
+            fi
+        fi
+        sleep 2
+    done
+}
+
+n=0
+while [[ true ]]; do
+    ret=0
+    n=`expr $n + 1`
+    odbserver=`./mqltest.sh - "help()" | grep "omdb version" | awk -F '"' '{print $4}' |  awk -F " omdb " '{print "omdb " $2}'`
+    if [[ "${odbserver:0:12}" == "omdb version" ]]; then
+        if [[ "$odbserver" != "$last_odbserver" ]]; then
+            echo "odbserver changed" >> changed.log
+            echo "$last_odbserver" >> changed.log
+            echo "$odbserver" >> changed.log
+            if [[ "${odbserver:42:14}" == "${last_odbserver:42:14}" ]]; then
+                codechanged=0
+            else
+                codechanged=1
+            fi
+            last_odbserver="$odbserver"
+            if [[ "$noinit" != "1" && "$codechanged" == "1" ]]; then
+                ./initkeyspace.sh $keyspace
+                ret=$?
+                if [[ "$ret" != "0" ]]; then
+                    # init error
+                    n=0
+                else
+                    n=1
+                fi
+            else
+                n=1
+            fi
+        fi
+    fi
+    if [[ "$n" != "0" ]]; then
+        cd "$CWD"
+        PROCFLAG="test$n"
+        endflag="$odbserver 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
+                odbserver=`./mqltest.sh - "help()" | grep "omdb version" | awk -F '"' '{print $4}' |  awk -F " omdb " '{print "omdb " $2}'`
+                if [[ "${odbserver:0:12}" == "omdb version" ]]; then
+                    if [[ "$odbserver" != "$last_odbserver" ]]; then
+                        ps -ef | grep -v grep | grep mql | grep "proc.flag=${PROCFLAG}" | awk '{print $2}' | xargs kill -9
+                        return 0
+                    fi
+                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 $logfile
+        wait_odbserver_change
+    fi
+done