Improve error management (rc in functions)
authorEduardo Ramos Testillano <eduardo.ramos.testillano@ericsson.com>
Tue, 17 Mar 2015 23:09:28 +0000 (00:09 +0100)
committerEduardo Ramos Testillano <eduardo.ramos.testillano@ericsson.com>
Tue, 17 Mar 2015 23:09:28 +0000 (00:09 +0100)
.gitignore
example/diameter/launcher/resources/ft-client/tests/experiment2/go.sh

index 71a2bdc..5f06328 100644 (file)
@@ -20,3 +20,5 @@ docs/doxygen/man
 .sconsign.dblite
 *.log
 *.old
+.cproject
+.project
index d9a939d..7c74679 100755 (executable)
@@ -33,12 +33,14 @@ _exit () {
 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
@@ -56,7 +58,9 @@ wait4message () {
   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
@@ -71,30 +75,32 @@ wait4message () {
   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 () {
@@ -104,7 +110,6 @@ process_tc () {
   echo "***** Executing '$TC' ..."
 
   grep -v ^# $TC > $tmpdir/tc
-  TEST_FAILED=0
   while read -r line
   do
     oper=$(echo $line | awk '{ print $1 }')
@@ -113,30 +118,33 @@ process_tc () {
     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
 }
 
@@ -173,6 +181,12 @@ 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