ootest.sh 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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. fi
  16. shift
  17. done
  18. }
  19. parseargs "$@"
  20. odbver=`./mql odbver? log.level=error "$@"`
  21. odbpath=`./mql odbpath? log.level=error "$@"`
  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" == "" ]]; then
  29. echo mql test running in background mode
  30. export bgmode=1
  31. nohup "$0" "$@" 2>&1 >/dev/null &
  32. tail -F $logfile
  33. exit 0
  34. fi
  35. last_odbserver="$odbver"
  36. wait_odbserver_change() {
  37. while true; do
  38. odbver=`./mql odbver? log.level=error "$@"`
  39. if [[ "$odbver" != "$last_odbserver" ]]; then
  40. # wait for sync files complete
  41. sleep 10
  42. return 0
  43. fi
  44. sleep 2
  45. done
  46. }
  47. n=0
  48. while [[ true ]]; do
  49. ret=0
  50. n=`expr $n + 1`
  51. odbver=`./mql odbver? log.level=error "$@"`
  52. if [[ "$odbver" != "$last_odbserver" ]]; then
  53. echo "odbserver changed" >> changed.log
  54. echo "$last_odbserver" >> changed.log
  55. echo "$odbver" >> changed.log
  56. last_odbserver="$odbver"
  57. if [[ "$noinit" != "1" ]]; then
  58. ./initkeyspace.sh $keyspace
  59. ret=$?
  60. if [[ "$ret" != "0" ]]; then
  61. # init error
  62. n=0
  63. else
  64. n=1
  65. fi
  66. else
  67. n=1
  68. fi
  69. fi
  70. if [[ "$n" != "0" ]]; then
  71. cd "$CWD"
  72. PROCFLAG="test$n"
  73. endflag="$odbver end of test $n return"
  74. ttt=`date +'%Y%m%d%H%M%S'`
  75. check_odbserver() {
  76. sleep 10
  77. while true; do
  78. mqlproc=`ps -ef | grep -v grep | grep mql | grep "proc.flag=${PROCFLAG}"`
  79. if [[ "$mqlproc" == "" ]]; then
  80. return 0
  81. fi
  82. odbver=`./mql odbver? log.level=error "$@"`
  83. if [[ "$odbver" != "$last_odbserver" ]]; then
  84. ps -ef | grep -v grep | grep mql | grep "proc.flag=${PROCFLAG}" | awk '{print $2}' | xargs kill -9
  85. return 0
  86. fi
  87. sleep 10
  88. done
  89. }
  90. run() {
  91. ./mqltest.sh "proc.flag=${PROCFLAG}" "$@"
  92. ret=$?
  93. echo "$endflag $ret" >> $logfile
  94. if [[ "$ret" == "0" ]]; then
  95. sleep 5
  96. fi
  97. return $ret
  98. }
  99. check_odbserver &
  100. run "$@"
  101. ret=$?
  102. fi
  103. if [[ "$ret" != "0" && "$ret" != "99" ]]; then
  104. echo "wait for odbserver upgrad" | tee $logfile
  105. wait_odbserver_change
  106. fi
  107. done