ootest.sh 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #改变工作目录到当前脚本所在路径
  2. if [[ "$0" =~ / ]]; then cd "${0%/*}"; fi
  3. export CWD=`pwd`
  4. echo "check params ..."
  5. filescount=`./mql files? log.level=error "$@" | wc -l`
  6. if [[ "${filescount}" == "0" || "${filescount}" == "1" ]]; then
  7. ./mql "$@"
  8. exit $?
  9. fi
  10. echo "" > changed.log
  11. parseargs() {
  12. while [[ "$*" != "" ]]; do
  13. if [[ "$1" == "init=no" ]]; then
  14. noinit=1
  15. elif [[ "$1" == "bgmode" ]]; then
  16. bgmode=1
  17. fi
  18. shift
  19. done
  20. }
  21. parseargs "$@"
  22. keyspace=`./mql keyspace? log.level=error "$@"`
  23. if [[ `echo "${keyspace}" | wc -w` == "1" ]]; then
  24. logfile="${keyspace}.test.log"
  25. else
  26. logfile="test.log"
  27. fi
  28. if [[ "$bgmode" != "1" ]]; then
  29. echo mql test running in background mode
  30. nohup "$0" bgmode "$@" 2>&1 >/dev/null &
  31. tail -F $logfile
  32. exit 0
  33. fi
  34. last_odbserver=`./mqltest.sh - "help()" | grep "omdb version" | awk -F '"' '{print $4}' | awk -F " omdb " '{print "omdb " $2}'`
  35. wait_odbserver_change() {
  36. while true; do
  37. odbserver=`./mqltest.sh - "help()" | grep "omdb version" | awk -F '"' '{print $4}' | awk -F " omdb " '{print "omdb " $2}'`
  38. if [[ "${odbserver:0:12}" == "omdb version" ]]; then
  39. if [[ "$odbserver" != "$last_odbserver" ]]; then
  40. # wait for sync files complete
  41. sleep 10
  42. return 0
  43. fi
  44. fi
  45. sleep 2
  46. done
  47. }
  48. n=0
  49. while [[ true ]]; do
  50. ret=0
  51. n=`expr $n + 1`
  52. odbserver=`./mqltest.sh - "help()" | grep "omdb version" | awk -F '"' '{print $4}' | awk -F " omdb " '{print "omdb " $2}'`
  53. if [[ "${odbserver:0:12}" == "omdb version" ]]; then
  54. if [[ "$odbserver" != "$last_odbserver" ]]; then
  55. echo "odbserver changed" >> changed.log
  56. echo "$last_odbserver" >> changed.log
  57. echo "$odbserver" >> changed.log
  58. if [[ "${odbserver:42:14}" == "${last_odbserver:42:14}" ]]; then
  59. codechanged=0
  60. else
  61. codechanged=1
  62. fi
  63. last_odbserver="$odbserver"
  64. if [[ "$noinit" != "1" && "$codechanged" == "1" ]]; then
  65. ./initkeyspace.sh $keyspace
  66. ret=$?
  67. if [[ "$ret" != "0" ]]; then
  68. # init error
  69. n=0
  70. else
  71. n=1
  72. fi
  73. else
  74. n=1
  75. fi
  76. fi
  77. fi
  78. if [[ "$n" != "0" ]]; then
  79. cd "$CWD"
  80. PROCFLAG="test$n"
  81. endflag="$odbserver end of test $n return"
  82. ttt=`date +'%Y%m%d%H%M%S'`
  83. check_odbserver() {
  84. sleep 10
  85. while true; do
  86. mqlproc=`ps -ef | grep -v grep | grep mql | grep "proc.flag=${PROCFLAG}"`
  87. if [[ "$mqlproc" == "" ]]; then
  88. return 0
  89. fi
  90. odbserver=`./mqltest.sh - "help()" | grep "omdb version" | awk -F '"' '{print $4}' | awk -F " omdb " '{print "omdb " $2}'`
  91. if [[ "${odbserver:0:12}" == "omdb version" ]]; then
  92. if [[ "$odbserver" != "$last_odbserver" ]]; then
  93. ps -ef | grep -v grep | grep mql | grep "proc.flag=${PROCFLAG}" | awk '{print $2}' | xargs kill -9
  94. return 0
  95. fi
  96. fi
  97. sleep 10
  98. done
  99. }
  100. run() {
  101. ./mqltest.sh "proc.flag=${PROCFLAG}" "$@"
  102. ret=$?
  103. echo "$endflag $ret" >> $logfile
  104. if [[ "$ret" == "0" ]]; then
  105. sleep 5
  106. fi
  107. return $ret
  108. }
  109. check_odbserver &
  110. run "$@"
  111. ret=$?
  112. fi
  113. if [[ "$ret" != "0" && "$ret" != "99" ]]; then
  114. echo "wait for odbserver upgrad" | tee $logfile
  115. wait_odbserver_change
  116. fi
  117. done