Improvements & fixes
[anna.git] / example / diameter / launcher / deployments / ft-client / tests / experiment1 / common.sh
diff --git a/example/diameter/launcher/deployments/ft-client/tests/experiment1/common.sh b/example/diameter/launcher/deployments/ft-client/tests/experiment1/common.sh
new file mode 100755 (executable)
index 0000000..d841491
--- /dev/null
@@ -0,0 +1,89 @@
+#!/bin/bash
+
+#############
+# FUNCTIONS #
+#############
+
+_exit () {
+  echo
+  echo $1
+  echo
+  exit 1
+}
+
+sigint_handler() {
+  _exit "Script interrupted. Cleanup & exit ..."
+}
+
+# $1: hex formatted file to send to the server
+send_xml () {
+  ../../operation.sh "sendxml|$1"
+}
+
+send_hex () {
+  sleep 1
+  ../../operation.sh "sendhex|$1"
+}
+
+# $1: pattern; $2: file
+check_pattern () {
+  echo "Matching pattern '$1' ..." 
+  cat $2 | tr '\n' ' ' | egrep "$1" >/dev/null
+  res=${PIPESTATUS[2]}
+  [ $? -ne 0 ] && _exit "Test failed: miss pattern !!"
+}
+
+test_ok () {
+  echo
+  echo $1
+  echo "Test OK !"
+  echo
+  exit 0
+}
+
+test_failed () {
+  echo
+  echo $1
+  echo "Test FAILED !"
+  echo
+  exit 1
+}
+
+
+# $1: traffic log to monitor
+# $2: timeout (request expiration) in seconds
+# Result: cats the message when completed
+monitor_4_message () {
+  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"
+      # stop the timer
+      kill -13 $timerPid
+      touch .msg_received
+    fi
+  done
+
+  if [ ! -f .msg_received ]; then
+    echo "Timeout expired"
+    return 1
+  fi
+
+  return 0
+}
+
+#############
+# EXECUTION #
+#############
+
+# Trap sigint signal:
+trap sigint_handler SIGINT
+