+++ /dev/null
-#!/bin/bash
-
-#############
-# VARIABLES #
-#############
-SCR_DIR=`dirname $0`
-tmpdir=$(mktemp -d)
-SCR_BN=`basename $0`
-OPER_SCR=../../operation.sh
-RESULT_LOG=result.log
-RECV_LOG=../../launcher.log.recvfe
-
-#############
-# FUNCTIONS #
-#############
-
-sigint_handler () {
- _exit "Script interrupted. Cleanup and exit ..."
-}
-
-# $1: message; $2: optional rc (1 by default)
-_exit () {
- rc=1
- [ -n "$2" ] && rc=$2
- echo
- echo -e $1
- echo
- rm -rf $tmpdir
- exit $rc
-}
-
-# $1: hex formatted file to send to the server
-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
-# $2: timeout (request expiration) in seconds
-# Result: cats the message when completed
-wait4message () {
- 0>$1
- rm -f .msg_received
-
- [ -z "$2" ] && _exit "ERROR: must provide '$FUNCNAME' timeout (second argument)"
- sleep $2 &
- local timerPid=$!
-
- # Monitor for incoming message:
- tail -n0 -F --pid=$timerPid $1 | while read line
- do
- if echo $line | grep "^</message>" >/dev/null; then
- echo "Message received:"
- echo
- cat $1
- # stop the timer
- kill -13 $timerPid
- touch .msg_received
- fi
- done
-
- if [ ! -f .msg_received ]; then
- echo "Timeout expired"
- return 1
- fi
-
- return 0
-}
-
-# xml content is serialized (removing CR's) to ease the pattern matching:
-# $1: pattern; $2: file
-check_pattern () {
- echo -n "Matching pattern '$1' in file '$2' ... "
- cat $2 | tr '\n' ' ' | egrep "$1" >/dev/null
- [ $? -ne 0 ] && { echo "ERROR" ; test_failed ; return 1 ; }
- echo "OK"
- return 0
-}
-
-# $1: pattern file; $2: file
-check_pattern_file () {
- echo -n "Matching whole file '$1' in file '$2' ... "
- grep -f $1 $2 >/dev/null
- [ $? -ne 0 ] && { echo "ERROR" ; test_failed ; return 1 ; }
- echo "OK"
- return 0
-}
-
-# Tests result:
-test_ok () {
- echo "Verdict: $TC Ok" | tee -a $RESULT_LOG
-}
-
-test_failed () {
- echo "Verdict: $TC Failed" | tee -a $RESULT_LOG
-}
-
-process_tc () {
- local tc_dn=`dirname $TC`
-
- echo
- echo "***** Executing '$TC' ..."
-
- grep -v ^# $TC > $tmpdir/tc
- while read -r line
- do
- oper=$(echo $line | awk '{ print $1 }')
- param1="$(echo $line | cut -d' ' -f2-)"
-
- 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
-
- done < $tmpdir/tc
-
- return 0
-}
-
-
-#############
-# EXECUTION #
-#############
-
-# Trap sigint:
-trap sigint_handler SIGINT
-
-# Working directory is script dirname:
-cd $SCR_DIR
-
-# Intro:
-echo
-echo "------------------"
-echo "Test cases manager"
-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 -L1 readlink -f | tee -a $tmpdir/tc_list
-echo
-echo
-
-echo "Start processing test cases:"
-echo "----------------------------"
-# Process test cases:
-0> $RESULT_LOG
-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
-