oktest.sh 3.6 KB

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