Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

buildAndRun 2.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. progName=serviceProgram
  2. debugFileName=$progName"Debug.log"
  3. if [ "$(uname --operating-system)" == "Msys" ]
  4. then
  5. CFLAGS='-I.. -Wall -std=c++11 -DWIN32 -pthread -DDEBUG_LOG_FILE="'
  6. CFLAGS=$CFLAGS$(pwd)/$debugFileName\"
  7. else
  8. CFLAGS='-I.. -Wall -std=c++11 -g -O0 -pthread -DDEBUG_LOG_FILE="'
  9. CFLAGS=$CFLAGS$(pwd)/$debugFileName\"
  10. CFLAGS='-I.. -Wall -std=c++11 -g -O0 -pthread'
  11. fi
  12. g++ $CFLAGS $progName.cpp ../CodeDweller/service.cpp -o $progName
  13. if [ $? -ne 0 ]
  14. then
  15. exit -1
  16. fi
  17. rm -f $debugFileName
  18. # Function to run a test.
  19. #
  20. # Usage:
  21. #
  22. # run_test <message>
  23. #
  24. run_test() {
  25. message=$1
  26. logFile=$progName$message.log
  27. rm -f $logFile
  28. if [ "$(uname --operating-system)" == "Msys" ]
  29. then
  30. sc create "Test Service" binPath= "$(pwd)/$progName.exe"
  31. sc start "Test Service" "$(pwd)/$logFile"
  32. sleep 1
  33. sc pause "Test Service" "$(pwd)/$logFile"
  34. sleep 2
  35. sc continue "Test Service" "$(pwd)/$logFile"
  36. sleep 2
  37. sc stop "Test Service"
  38. sleep 1
  39. sc delete "Test Service"
  40. else
  41. name=$(pwd)/$progName
  42. killall --exact --signal KILL --quiet $name
  43. sleep 1
  44. $name $(pwd)/$logFile $message
  45. PID=$(pidof $name)
  46. sleep 1
  47. kill -TSTP $PID
  48. if [ $message != "Pause" ]
  49. then
  50. # In the Pause test, the service should have exited.
  51. sleep 2
  52. kill -CONT $PID
  53. if [ $message != "Resume" ]
  54. then
  55. # In the Resume test, the service should have exited.
  56. sleep 2
  57. kill -TERM $PID
  58. fi
  59. fi
  60. # Wait for process to exit.
  61. exited=no
  62. for i in $(seq 10)
  63. do
  64. if pidof $name > /dev/null 2>&1
  65. then
  66. sleep 1
  67. else
  68. exited=yes
  69. break
  70. fi
  71. done
  72. if [ $exited == "no" ]
  73. then
  74. echo CodeDweller::Service $message: fail--$progName did not exit
  75. return 1
  76. fi
  77. fi
  78. if diff --strip-trailing-cr expected_$logFile $logFile > /dev/null 2>&1
  79. then
  80. echo CodeDweller::Service $message: ok
  81. else
  82. echo CodeDweller::Service $message: fail
  83. return 1
  84. fi
  85. return 0
  86. }
  87. stat=0
  88. # Normal test.
  89. run_test Nominal
  90. nominal_status=$?
  91. # Pause timeout.
  92. run_test Pause
  93. pause_status=$?
  94. # Resume timeout.
  95. run_test Resume
  96. resume_status=$?
  97. # Stop timeout.
  98. run_test Stop
  99. stop_status=$?
  100. if [ $nominal_status == "0" -a \
  101. $pause_status == "0" -a \
  102. $resume_status == "0" -a \
  103. $stop_status == "0" ]
  104. then
  105. exit 0
  106. fi
  107. exit 1