oktest.sh 3.5 KB

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