oktest.sh 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. #改变工作目录到当前脚本所在路径
  2. if [[ "$0" =~ / ]]; then cd "${0%/*}"; fi
  3. export CWD=`pwd`
  4. filescount=`./mql files? log.level=error "$@" | wc -l`
  5. if [[ "${filescount}" == "0" || "${filescount}" == "1" ]]; then
  6. ./mql "$@"
  7. exit $?
  8. fi
  9. echo "" > changed.log
  10. parseargs() {
  11. while [[ "$*" != "" ]]; do
  12. if [[ "$1" == "init=no" ]]; then
  13. noinit=1
  14. fi
  15. shift
  16. done
  17. }
  18. parseargs "$@"
  19. if [[ -e /opt/matrix/odbserver/odbserver ]]; then
  20. last_odbserver=`/opt/matrix/odbserver/odbserver -version`
  21. fi
  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. wait_odbserver_change() {
  29. while true; do
  30. if [[ -e ~/odbserver/odbserver ]]; then
  31. cp -f ~/odbserver/odbserver ~/odbserver/odbserver.new
  32. odbserver=`~/odbserver/odbserver.new -version 2>&1`
  33. if [[ "${odbserver:0:12}" == "omdb version" ]]; then
  34. if [[ "$odbserver" != "$last_odbserver" ]]; then
  35. # wait for sync files complete
  36. sleep 10
  37. return 0
  38. fi
  39. fi
  40. fi
  41. sleep 2
  42. done
  43. }
  44. n=0
  45. while [[ true ]]; do
  46. ret=0
  47. n=`expr $n + 1`
  48. if [[ -e ~/odbserver/odbserver ]]; then
  49. cp -f ~/odbserver/odbserver ~/odbserver/odbserver.new
  50. odbserver=`~/odbserver/odbserver.new -version`
  51. if [[ "${odbserver:0:12}" == "omdb version" ]]; then
  52. if [[ "$odbserver" != "$last_odbserver" ]]; then
  53. echo "odbserver changed" >> changed.log
  54. echo "$last_odbserver" >> changed.log
  55. echo "$odbserver" >> changed.log
  56. ./sync.sh
  57. cp -pf ~/odbserver/odbserver /opt/matrix/odbserver/odbserver
  58. if [[ "${odbserver:42:14}" == "${last_odbserver:42:14}" ]]; then
  59. verchanged=0
  60. else
  61. verchanged=1
  62. fi
  63. last_odbserver="$odbserver"
  64. if [[ "$noinit" != "1" && "$verchanged" == "1" ]]; then
  65. ./initkeyspace.sh $keyspace
  66. ret=$?
  67. if [[ "$ret" != "0" ]]; then
  68. n=0
  69. else
  70. n=1
  71. fi
  72. else
  73. n=1
  74. fi
  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. if [[ -e ~/odbserver/odbserver ]]; then
  91. cp -f ~/odbserver/odbserver ~/odbserver/odbserver.new
  92. odbserver=`~/odbserver/odbserver.new -version`
  93. if [[ "${odbserver:0:12}" == "omdb version" ]]; then
  94. if [[ "$odbserver" != "$last_odbserver" ]]; then
  95. ps -ef | grep -v grep | grep mql | grep "proc.flag=${PROCFLAG}" | awk '{print $2}' | xargs kill -9
  96. return 0
  97. fi
  98. fi
  99. fi
  100. sleep 10
  101. done
  102. }
  103. run() {
  104. ./mqltest.sh "proc.flag=${PROCFLAG}" "$@"
  105. ret=$?
  106. echo "$endflag $ret" >> $logfile
  107. if [[ "$ret" == "0" ]]; then
  108. sleep 5
  109. fi
  110. return $ret
  111. }
  112. check_odbserver &
  113. run "$@"
  114. ret=$?
  115. fi
  116. if [[ "$ret" != "0" && "$ret" != "99" ]]; then
  117. echo "wait for odbserver upgrad"
  118. wait_odbserver_change
  119. fi
  120. done