#############
# VARIABLES #
#############
-CWD=`dirname $0`
+SCR_DIR=`dirname $0`
tmpdir=$(mktemp -d)
SCR_BN=`basename $0`
-OPER_SCR=`readlink -f $CWD/../../operation.sh`
-RESULT_LOG=$CWD/result.log
-RECV_LOG=`readlink -f $CWD/../../launcher.log.recvfe`
+OPER_SCR=../../operation.sh
+RESULT_LOG=result.log
+RECV_LOG=../../launcher.log.recvfe
#############
# FUNCTIONS #
operation_sendxml2e () {
sleep 0.5
$OPER_SCR "sendxml2e|$1"
+ return $?
}
# $1: hex formatted file to send to the server
operation_sendhex2e () {
sleep 0.5
$OPER_SCR "sendhex2e|$1"
+ return $?
}
# $1: file to monitor
tail -n0 -F --pid=$timerPid $1 | while read line
do
if echo $line | grep "^</message>" >/dev/null; then
- echo "Message received"
+ echo "Message received:"
+ echo
+ cat $1
# stop the timer
kill -13 $timerPid
touch .msg_received
return 0
}
-
+# xml content is serialized (removing CR's) to ease the pattern matching:
# $1: pattern; $2: file
check_pattern () {
- echo "Matching pattern '$1' in file '$2' ..."
+ echo -n "Matching pattern '$1' in file '$2' ... "
cat $2 | tr '\n' ' ' | egrep "$1" >/dev/null
- res=${PIPESTATUS[2]}
- [ $res -ne 0 ] && { echo " Cannot found pattern !!" ; test_failed ; }
+ [ $? -ne 0 ] && { echo "ERROR" ; test_failed ; return 1 ; }
+ echo "OK"
+ return 0
}
# $1: pattern file; $2: file
check_pattern_file () {
- echo "Matching file '$1' in file '$2' ..."
+ echo -n "Matching whole file '$1' in file '$2' ... "
grep -f $1 $2 >/dev/null
- [ $? -ne 0 ] && { echo " Cannot found pattern file !!" ; test_failed ; }
+ [ $? -ne 0 ] && { echo "ERROR" ; test_failed ; return 1 ; }
+ echo "OK"
+ return 0
}
# Tests result:
test_ok () {
- echo "$TC Ok" | tee -a $RESULT_LOG
+ echo "Verdict: $TC Ok" | tee -a $RESULT_LOG
}
test_failed () {
- echo "$TC Failed" | tee -a $RESULT_LOG
- TEST_FAILED=1
+ echo "Verdict: $TC Failed" | tee -a $RESULT_LOG
}
process_tc () {
echo "***** Executing '$TC' ..."
grep -v ^# $TC > $tmpdir/tc
- TEST_FAILED=0
while read -r line
do
oper=$(echo $line | awk '{ print $1 }')
case $oper in
SENDXML2E)
operation_sendxml2e $tc_dn/$param1 &
+ [ $? -ne 0 ] && return 1
;;
SENDHEX2E)
operation_sendhex2e $tc_dn/$param1 &
+ [ $? -ne 0 ] && return 1
;;
WAIT4MESSAGE)
wait4message $RECV_LOG 5
+ [ $? -ne 0 ] && return 1
;;
CHECKPATTERN)
check_pattern "$param1" $RECV_LOG
+ [ $? -ne 0 ] && return 1
;;
CHECKPATTERNFILE)
check_pattern_file "$param1" $RECV_LOG
+ [ $? -ne 0 ] && return 1
;;
esac
- [ $TEST_FAILED -eq 1 ] && return 1
done < $tmpdir/tc
- test_ok
return 0
}
trap sigint_handler SIGINT
# Working directory is script dirname:
-cd $CWD
+cd $SCR_DIR
# Intro:
echo
echo "------------------"
# Mandatory parameter:
[ -z "$1" ] && _exit "Usage: $SCR_BN <test cases parent directory (or .tc file)>"
+[ ! -f "$1" -a ! -d "$1" ] && _exit "Invalid file or directory '$1' !!"
# Gather .tc files to be processed:
[ ! -f $1 ] && echo -e "\nGathering list of test cases from '`readlink -f $1`' ..."
echo
-find $1 -name *.tc | xargs readlink -f | tee -a $tmpdir/tc_list
+find $1 -name *.tc | xargs -L1 readlink -f | tee -a $tmpdir/tc_list
echo
echo
for TC in `cat $tmpdir/tc_list`
do
process_tc
+ if [ $? -eq 0 ]; then
+ test_ok
+ else
+ test_failed
+ cat $RECV_LOG
+ fi
done
_exit "Done !" 0