- progName=serviceProgram
- debugFileName=$progName"Debug.log"
-
- if [ "$(uname --operating-system)" == "Msys" ]
- then
- CFLAGS='-I.. -Wall -std=c++11 -DWIN32 -pthread -static -DDEBUG_LOG_FILE="'
- CFLAGS=$CFLAGS$(pwd)/$debugFileName\"
- CFLAGS='-I.. -Wall -std=c++11 -DWIN32 -pthread -static'
- else
- CFLAGS='-I.. -Wall -std=c++11 -g -O0 -pthread -DDEBUG_LOG_FILE="'
- CFLAGS=$CFLAGS$(pwd)/$debugFileName\"
- CFLAGS='-I.. -Wall -std=c++11 -g -O0 -pthread'
- fi
-
- g++ $CFLAGS $progName.cpp ../CodeDweller/service.cpp -o $progName
- if [ $? -ne 0 ]
- then
- exit -1
- fi
-
- rm -f $debugFileName
-
- # Function to run a test.
- #
- # Usage:
- #
- # run_test <message>
- #
- run_test() {
-
- message=$1
-
- logFile=$progName$message.log
-
- rm -f $logFile
-
- if [ "$(uname --operating-system)" == "Msys" ]
- then
-
- sc create "Test Service" binPath= "$(pwd)/$progName.exe" > /dev/null 2>&1
-
- #echo "Starting at "$(date +"%H:%M:%S.%N")
- sc start "Test Service" "$(pwd)/$logFile" $message > /dev/null 2>&1
- #echo "Sleeping 1 s at "$(date +"%H:%M:%S.%N")
- sleep 1
-
- #echo "Pausing at "$(date +"%H:%M:%S.%N")
- sc pause "Test Service" > /dev/null 2>&1
- #echo "Sleeping 2 s at "$(date +"%H:%M:%S.%N")
- sleep 2
-
- #echo "Continuing at "$(date +"%H:%M:%S.%N")
- sc continue "Test Service" > /dev/null 2>&1
- #echo "Sleeping 2 s at "$(date +"%H:%M:%S.%N")
- sleep 2
-
- #echo "Stopping at "$(date +"%H:%M:%S.%N")
- sc stop "Test Service" > /dev/null 2>&1
- #echo "Returned at "$(date +"%H:%M:%S.%N")
- sleep 1
-
- sc delete "Test Service" > /dev/null 2>&1
-
- else
-
- name=$(pwd)/$progName
- killall --exact --signal KILL --quiet $name
- sleep 1
-
- $name $(pwd)/$logFile $message
- sleep 1
-
- PID=$(pidof $name)
-
- kill -TSTP $PID
-
- if [ $message != "Pause" ]
- then
- # In the Pause test, the service should have exited.
- sleep 2
- kill -CONT $PID
-
- if [ $message != "Resume" ]
- then
- # In the Resume test, the service should have exited.
- sleep 2
- kill -TERM $PID
- fi
- fi
-
- # Wait for process to exit.
- exited=no
- for i in $(seq 10)
- do
- if pidof $name > /dev/null 2>&1
- then
- sleep 1
- else
- exited=yes
- break
- fi
- done
-
- if [ $exited == "no" ]
- then
- echo CodeDweller::Service $message: fail--$progName did not exit
- return 1
- fi
-
- fi
-
- if diff --strip-trailing-cr expected_$logFile $logFile > /dev/null 2>&1
- then
- echo CodeDweller::Service $message: ok
- else
- echo CodeDweller::Service $message: fail
- return 1
- fi
-
- return 0
-
- }
-
- # Run tests.
- run_test Nominal
- nominal_status=$?
-
- # Stop timeout.
- run_test Stop
- stop_status=$?
-
- if [ $nominal_status == "0" -a \
- $stop_status == "0" ]
- then
- exit 0
- fi
- exit 1
-
|