Launcher resources refactoring. New type included: FT testing client.
authorEduardo Ramos Testillano <eduardo.ramos.testillano@gmail.com>
Sun, 15 Mar 2015 03:44:38 +0000 (04:44 +0100)
committerEduardo Ramos Testillano <eduardo.ramos.testillano@gmail.com>
Sun, 15 Mar 2015 03:44:38 +0000 (04:44 +0100)
65 files changed:
example/diameter/launcher/DEPLOY.sh
example/diameter/launcher/resources/1.xml [deleted file]
example/diameter/launcher/resources/1xml-23.txt [deleted file]
example/diameter/launcher/resources/README [deleted file]
example/diameter/launcher/resources/advanced/1.xml [new file with mode: 0644]
example/diameter/launcher/resources/advanced/1xml-23.txt [new file with mode: 0644]
example/diameter/launcher/resources/advanced/README [new file with mode: 0644]
example/diameter/launcher/resources/advanced/answerXml.sh [new file with mode: 0755]
example/diameter/launcher/resources/advanced/args.txt [new file with mode: 0755]
example/diameter/launcher/resources/advanced/batch.sh [new file with mode: 0755]
example/diameter/launcher/resources/advanced/burst.sh [new file with mode: 0755]
example/diameter/launcher/resources/advanced/clientSocketManager.sh [new file with mode: 0755]
example/diameter/launcher/resources/advanced/code.sh [new file with mode: 0755]
example/diameter/launcher/resources/advanced/collect.sh [new file with mode: 0755]
example/diameter/launcher/resources/advanced/data-initial.msk [new file with mode: 0644]
example/diameter/launcher/resources/advanced/data-termination.msk [new file with mode: 0644]
example/diameter/launcher/resources/advanced/data-update1.msk [new file with mode: 0644]
example/diameter/launcher/resources/advanced/data-update2.msk [new file with mode: 0644]
example/diameter/launcher/resources/advanced/data.sh [new file with mode: 0755]
example/diameter/launcher/resources/advanced/decode.sh [new file with mode: 0755]
example/diameter/launcher/resources/advanced/diameterServerSessions.sh [new file with mode: 0755]
example/diameter/launcher/resources/advanced/help.sh [new file with mode: 0755]
example/diameter/launcher/resources/advanced/loadXml.sh [new file with mode: 0755]
example/diameter/launcher/resources/advanced/pre-start.sh [new file with mode: 0755]
example/diameter/launcher/resources/advanced/sendXml.sh [new file with mode: 0755]
example/diameter/launcher/resources/advanced/sms.msk [new file with mode: 0644]
example/diameter/launcher/resources/advanced/sms.sh [new file with mode: 0755]
example/diameter/launcher/resources/answerXml.sh [deleted file]
example/diameter/launcher/resources/args.txt [deleted file]
example/diameter/launcher/resources/basic/README [new file with mode: 0644]
example/diameter/launcher/resources/basic/configure.sh [new file with mode: 0755]
example/diameter/launcher/resources/basic/hex_examples/tspCCA.hex [new file with mode: 0644]
example/diameter/launcher/resources/basic/hex_examples/tspCCR.hex [new file with mode: 0644]
example/diameter/launcher/resources/basic/operation.sh [new file with mode: 0755]
example/diameter/launcher/resources/basic/xml_examples/ccr.xml [new file with mode: 0644]
example/diameter/launcher/resources/batch.sh [deleted file]
example/diameter/launcher/resources/burst.sh [deleted file]
example/diameter/launcher/resources/clientSocketManager.sh [deleted file]
example/diameter/launcher/resources/code.sh [deleted file]
example/diameter/launcher/resources/collect.sh [deleted file]
example/diameter/launcher/resources/data-initial.msk [deleted file]
example/diameter/launcher/resources/data-termination.msk [deleted file]
example/diameter/launcher/resources/data-update1.msk [deleted file]
example/diameter/launcher/resources/data-update2.msk [deleted file]
example/diameter/launcher/resources/data.sh [deleted file]
example/diameter/launcher/resources/decode.sh [deleted file]
example/diameter/launcher/resources/diameterServerSessions.sh [deleted file]
example/diameter/launcher/resources/ft-client/README [new file with mode: 0644]
example/diameter/launcher/resources/ft-client/args.txt [new file with mode: 0755]
example/diameter/launcher/resources/ft-client/hex_examples [new symlink]
example/diameter/launcher/resources/ft-client/operation.sh [new symlink]
example/diameter/launcher/resources/ft-client/pre-start.sh [new file with mode: 0755]
example/diameter/launcher/resources/ft-client/xml_examples [new symlink]
example/diameter/launcher/resources/help.sh [deleted file]
example/diameter/launcher/resources/loadXml.sh [deleted file]
example/diameter/launcher/resources/pre-start.sh [deleted file]
example/diameter/launcher/resources/sendXml.sh [deleted file]
example/diameter/launcher/resources/sms.msk [deleted file]
example/diameter/launcher/resources/sms.sh [deleted file]
example/diameter/launcher/resources_lite/README [deleted file]
example/diameter/launcher/resources_lite/configure.sh [deleted file]
example/diameter/launcher/resources_lite/hex_examples/tspCCA.hex [deleted file]
example/diameter/launcher/resources_lite/hex_examples/tspCCR.hex [deleted file]
example/diameter/launcher/resources_lite/operation.sh [deleted file]
example/diameter/launcher/resources_lite/xml_examples/ccr.xml [deleted file]

index 04361e2..d3725d3 100755 (executable)
@@ -1,14 +1,18 @@
 #!/bin/bash
 
-# Functions & variables
+#############
+# VARIABLES #
+#############
 SETUPS_DIR=../../../source/diameter/stack/setups
 MSGDTD=../../../include/anna/diameter/codec/message.dtd
 DCTDTD=../../../include/anna/diameter/stack/dictionary.dtd
 BASE_PROT=commands_baseProtocol.xml
 EXEC=./debug/example_diameter_launcher
 DPATH_dflt=$HOME/ADL
-RESOURCES_DIR=resources
 
+#############
+# FUNCTIONS #
+#############
 _exit () {
    echo
    echo $1
@@ -16,30 +20,32 @@ _exit () {
    exit
 }
 
+# $1: deployment type
 createRunScript () {
 
-  echo "#!/bin/bash" > run.sh
-  echo "EXE=\`cat .exe 2>/dev/null\`" >> run.sh
-  echo "STARTED=\`pgrep \$EXE2>/dev/null\`" >> run.sh
-  echo "[ \$? -eq 0 ] && { echo \"Already started!\"; echo \"\$STARTED\" ; exit 1 ; }" >> run.sh
-  echo "./pre-start.sh" >> run.sh
-  echo "> launcher.traces" >> run.sh
-  echo "EXE=\"./ADL-launcher\"" >> run.sh
-  echo "echo \$EXE > .exe"  >> run.sh
-  echo >> run.sh
-  echo -n "\$EXE " >> run.sh
-  for i in `cat args.txt | grep -v "^#"`
-  do
-    echo -n "$i " >> run.sh
-  done
-  echo -n "-cntDir counters " >> run.sh
-  echo "&" >> run.sh
+  # Basic launcher 'run.sh' will be created at deployment configuration: 
+  [ "$1" = "b" ] && return
+  [ "$1" = "a" ] && exe=ADL-launcher
+  [ "$1" = "f" ] && { exe=ADL-ftclient ; ln -s ADL-launcher $exe ; }
+
+  cat << EOF > run.sh
+#!/bin/bash
+cd \`dirname \$0\`
+EXE=$exe
+STARTED=\`pgrep \$EXE 2>/dev/null\`
+[ \$? -eq 0 ] && { echo "Already started!"; echo "\$STARTED" ; exit 1 ; }
+./pre-start.sh
+0> launcher.traces
+# Execution line:
+./\$EXE -cntDir counters $(for i in `cat args.txt | grep -v "^#"`; do echo -n "$i "; done)&
+echo \$! > .pid
+EOF
+
   chmod a+x run.sh
   rm args.txt
 }
 
 createDictionaryPaths () {
-
   for i in stacks/*commands*xml
   do
     stacks/dependence.sh $i >/dev/null
@@ -81,10 +87,32 @@ echo "Basic checkings ..."
 [ ! -d $SETUPS_DIR ] && _exit "Diameter stacks not found ($SETUPS_DIR). Perhaps you executed this script out of its parent path."
 
 echo
-echo "Deploy (f)ull version or (l)ite version [l]:"
-read deploy_type
-[ "$deploy_type" = "" ] && deploy_type=l
-[ "$deploy_type" = "l" ] && RESOURCES_DIR=resources_lite
+echo "Deploy one of these versions:"
+echo
+echo " (a)dvanced version:     includes burst management script and templates for different scenarios. Automatic configuration during start."
+echo " (b)asic version:        4 types of launcher (client, server, balancer, dummy), lightly configured and managed through SIGURS2 method."
+echo " (f)unction test client: special client with regexp scheduler script based on splitted traffic logs."
+echo
+echo "Input option [b]:"
+read option
+[ "$option" = "" ] && option=b
+case $option in
+  a)
+    RESOURCES_DIR=resources/advanced
+  ;;
+
+  b)
+    RESOURCES_DIR=resources/basic
+  ;;
+
+  f)
+    RESOURCES_DIR=resources/ft-client
+  ;;
+
+  *)
+    _exit "Unknown option !!"
+  ;;
+esac
 
 echo "Copying ..."
 mkdir -p $DPATH
@@ -92,7 +120,7 @@ mkdir -p $DPATH/stacks
 mkdir -p $DPATH/DTDs
 mkdir -p $DPATH/counters
 cp $EXEC $DPATH/ADL-launcher
-cp -r $RESOURCES_DIR/* $DPATH
+cp -rL $RESOURCES_DIR/* $DPATH
 cp $SETUPS_DIR/*xml $DPATH/stacks
 cp $SETUPS_DIR/*sh $DPATH/stacks
 cp $SETUPS_DIR/readme.txt $DPATH/stacks
@@ -101,7 +129,7 @@ cp $DCTDTD $DPATH/DTDs
 
 echo "Preparing ..."
 cd $DPATH
-[ "$deploy_type" != "l" ] && createRunScript
+createRunScript $option
 createDictionaryPaths
 cd - >/dev/null
 
diff --git a/example/diameter/launcher/resources/1.xml b/example/diameter/launcher/resources/1.xml
deleted file mode 100644 (file)
index dcd18b9..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<message version="1" code="265" flags="0" application-id="0" hop-by-hop-id="1" end-by-end-id="2">
-   <avp name="Session-Id" data="ocs3;1332909618;0;1332909618"/>
-   <avp name="Auth-Application-Id" data="16777236"/>
-   <avp name="Origin-Host" data="OCS3"/>
-   <avp name="Origin-Realm" data="OCS3"/>
-</message>
-
diff --git a/example/diameter/launcher/resources/1xml-23.txt b/example/diameter/launcher/resources/1xml-23.txt
deleted file mode 100644 (file)
index c0d8b4c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Encode 1.xml to 2.hex|code|1.xml|2.hex
-Decode 2.hex to 3.xml (we will diff 1.xml and 3.xml)|decode|2.hex|3.xml
diff --git a/example/diameter/launcher/resources/README b/example/diameter/launcher/resources/README
deleted file mode 100644 (file)
index 52393f8..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-
-ABOUT CONTENT
--------------
-Stacks available at './stacks'.
-The launcher uses the configuration given by '.dictionary' which points to a specification list.
-Available different setups by mean files named as '.dictionary__<stack description>'.
-
-Template for xml messages (message.dtd) and dictionaries (dictionary.dtd) are informative, not
-actually required by process. Located at './DTDs'.
-
-STARTING THE PROCESS
---------------------
-Start with 'run.sh'. You could manually edit such script adding parameters as '-trace debug' to
-get complete 'launcher.traces'. Execute 'ADL-launcher' without arguments to see a complete
-command-line help.
-
-DEPLOYED SCRIPTS
-----------------
-You could get help about installed resources by mean 'help.sh', which launch a help request to
-the started ADL-launcher process http interface. All the implemented http operations could be
-launched through a script to make easy use. The http client 'curl' is used by default due to
-its presence on common linux distributions.
-
diff --git a/example/diameter/launcher/resources/advanced/1.xml b/example/diameter/launcher/resources/advanced/1.xml
new file mode 100644 (file)
index 0000000..dcd18b9
--- /dev/null
@@ -0,0 +1,7 @@
+<message version="1" code="265" flags="0" application-id="0" hop-by-hop-id="1" end-by-end-id="2">
+   <avp name="Session-Id" data="ocs3;1332909618;0;1332909618"/>
+   <avp name="Auth-Application-Id" data="16777236"/>
+   <avp name="Origin-Host" data="OCS3"/>
+   <avp name="Origin-Realm" data="OCS3"/>
+</message>
+
diff --git a/example/diameter/launcher/resources/advanced/1xml-23.txt b/example/diameter/launcher/resources/advanced/1xml-23.txt
new file mode 100644 (file)
index 0000000..c0d8b4c
--- /dev/null
@@ -0,0 +1,2 @@
+Encode 1.xml to 2.hex|code|1.xml|2.hex
+Decode 2.hex to 3.xml (we will diff 1.xml and 3.xml)|decode|2.hex|3.xml
diff --git a/example/diameter/launcher/resources/advanced/README b/example/diameter/launcher/resources/advanced/README
new file mode 100644 (file)
index 0000000..52393f8
--- /dev/null
@@ -0,0 +1,23 @@
+
+ABOUT CONTENT
+-------------
+Stacks available at './stacks'.
+The launcher uses the configuration given by '.dictionary' which points to a specification list.
+Available different setups by mean files named as '.dictionary__<stack description>'.
+
+Template for xml messages (message.dtd) and dictionaries (dictionary.dtd) are informative, not
+actually required by process. Located at './DTDs'.
+
+STARTING THE PROCESS
+--------------------
+Start with 'run.sh'. You could manually edit such script adding parameters as '-trace debug' to
+get complete 'launcher.traces'. Execute 'ADL-launcher' without arguments to see a complete
+command-line help.
+
+DEPLOYED SCRIPTS
+----------------
+You could get help about installed resources by mean 'help.sh', which launch a help request to
+the started ADL-launcher process http interface. All the implemented http operations could be
+launched through a script to make easy use. The http client 'curl' is used by default due to
+its presence on common linux distributions.
+
diff --git a/example/diameter/launcher/resources/advanced/answerXml.sh b/example/diameter/launcher/resources/advanced/answerXml.sh
new file mode 100755 (executable)
index 0000000..ce4aa40
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/bash
+> curl_log.txt
+TRACE="--trace-ascii curl_log.txt"
+SERVER=`cat .httpServer`
+
+echo
+echo
+echo "Use: $0 [xml_file] [2e]"
+echo
+echo "Programm 'xml_file' answer to the diameter client or to the server (entity) when"
+echo "'2e' parameter is provided. If missing xml file, current programmed answers will"
+echo "be shown: '$0' (answers to client), '$0 2e' (answers to server)."
+echo
+if test "$1" != ""
+then
+   if test "$1" = "2e"
+   then
+     operation="answerxml2e"
+   else 
+     [[ ! -f "$1" ]] && { echo "ERROR: file '$1' not found" ; echo; echo; exit ; }
+     operation="answerxml|$1"
+     [[ "$2" = "2e" ]] && operation="answerxml2e|$1"
+   fi
+else
+   operation="answerxml"
+fi
+echo
+curl -m 1 --data "$operation" $TRACE ${SERVER}
+
diff --git a/example/diameter/launcher/resources/advanced/args.txt b/example/diameter/launcher/resources/advanced/args.txt
new file mode 100755 (executable)
index 0000000..d5f4afb
--- /dev/null
@@ -0,0 +1,6 @@
+-httpServer `grep -v ^# .httpServer`
+-dictionary `grep -v ^# .dictionary`
+-diameterServer `grep -v ^# .diameterServer`
+-diameterServerSessions `grep -v ^# .diameterServerSessions`
+-entity `grep -v ^# .entity`
+-entityServerSessions `grep -v ^# .entityServerSessions`
diff --git a/example/diameter/launcher/resources/advanced/batch.sh b/example/diameter/launcher/resources/advanced/batch.sh
new file mode 100755 (executable)
index 0000000..9699243
--- /dev/null
@@ -0,0 +1,60 @@
+#!/bin/bash
+> curl_log.txt
+TRACE="--trace-ascii curl_log.txt"
+SERVER=`cat .httpServer`
+
+use () {
+
+   echo "Use: $0 <test file> [time between operations: 0 second by default]"
+   echo
+   echo "     Batch launcher script"
+   echo "     ---------------------"
+   echo
+   echo "     Test file must contain a operations with this syntax: <description>|<operation>|<arg1>|..."
+   echo "     Three operations: code, decode and sendxml:"
+   echo
+   echo "       code|<source>|<target>      i.e.: code|1.xml|2.hex"
+   echo "       decode|<source>|<target>    i.e.: decode|2.hex|1.xml-bis"
+   echo "       sendxml|<source>            i.e.: sendxml|1.xml"
+   echo
+   echo "     Test file example:"
+   echo
+   echo "     $0 1xml-23.txt"
+   echo
+   echo "     where 1xml-23.txt contains:"
+   echo "        Encode 1.xml to 2.hex|code|1.xml|2.hex"
+   echo "        Decode 2.hex to 3.xml (we will diff 1.xml and 3.xml)|decode|2.hex|3.xml"
+   echo
+   echo
+   echo "     Test file could contain any number of operations and could include comments (will be ignored)."
+   echo
+   exit
+}
+
+echo
+echo
+[[ "$1" = "" ]] && use
+LAPSE=${2:-0}
+echo
+echo "Test '$1' is going to be launched:"
+echo
+cat $1
+echo
+echo "Pulse ENTER para lanzar, CTRL+C para abortar..."
+read dummy
+
+while read -r line
+do
+   comment=$(echo $line | grep "^#")
+   ok=
+   [[ "$comment" = "" ]] && { [[ "$line" != "" ]] && ok=s ; }
+   if test "$ok" = "s"
+   then
+      echo "Launching $(echo $line | cut -d'|' -f1) ..."
+      sleep $LAPSE
+      operation=$(echo $line | cut -d'|' -f2-)
+      curl -m 1 --data "$operation" $TRACE ${SERVER}
+   fi
+
+done < $1
+
diff --git a/example/diameter/launcher/resources/advanced/burst.sh b/example/diameter/launcher/resources/advanced/burst.sh
new file mode 100755 (executable)
index 0000000..b05b6e0
--- /dev/null
@@ -0,0 +1,184 @@
+#!/bin/bash
+> curl_log.txt
+TRACE="--trace-ascii curl_log.txt"
+SERVER=`cat .httpServer`
+burstMargin__dflt=1
+
+salir () {
+   echo
+   echo $1
+   echo
+   exit
+}
+
+calc () { echo "$1" | bc -l ; }
+
+entero () {
+   limpio=$(calc "scale=0;${1}/1")
+   [[ $limpio != $1 ]] && salir "Invalid value '$1'. Must be integer"
+}
+
+uso () {
+
+   echo "Load tests configuration script"
+   echo
+   echo "Use: $0 <action: clear | load | start | push | pop | stop | resume | repeat | send | goto | look> [action parameters]"
+   echo
+   echo "     clear:"
+   echo "        Clears all loaded burst messages."
+   echo
+   echo "     load <amount> <traffic type: mms | sms | voice | data | content>:"
+   echo "        Loads 'amount' messages for the provided traffic type. For example:"
+   echo "           $0 load 2000 sms"
+   echo
+   echo "     start [initial launch: default $burstMargin__dflt]:"
+   echo "        Starts the message sending from the begining of the burst list loaded,"
+   echo "        with a certain initial load. For example:"
+   echo "           $0 start 200"
+   echo
+   echo "     push [amount: default $burstMargin__dflt]:"
+   echo "        Launch 'amount' messages as initial load does (non-asynchronous mode)."
+   echo "        It works even if burst launch is stopped. Useful to achieve congestion"
+   echo "        conditions. For example:"
+   echo "           $0 push 300"
+   echo
+   echo "     pop [amount: default $burstMargin__dflt]:"
+   echo "        Skip send burst messages in order to reduce over-the-air requests."
+   echo
+   echo "     stop:"
+   echo "        Stops the burst cycle at the current position. It could affect sessions"
+   echo "        on the air (i.e. data contexts). Totally safe for IEC scenaries as SMS."
+   echo
+   echo "     resume:"
+   echo "        Resume an stopped burst launch from the same point (start will reset"
+   echo "        the work pointer to the first burst list position). This is equivalent" 
+   echo "        to one-message-push operation."
+   echo
+   echo "     repeat [[yes] | no]:"
+   echo "        Restarts the burst launch cycle when finished."
+   echo
+   echo "     send [amount: default 1]:"
+   echo "        send messages from burst list. The main difference with start/push operations"
+   echo "        is that burst won't be awaken. Externally we could control sending time (no"
+   echo "        request will be sent for answers). When reach the last position, starts again."
+   echo
+   echo "     sendXS <requests per second> [amount: default -1 (no limit)]:"
+   echo "        send messages from burst list with the TPS provided. User could hot change"
+   echo "        speed by mean 'echo <TPS> > .tps' at another shell. You can stop the load"
+   echo "        removing that hidden file or using CTRL+C from the shell where you launched"
+   echo "        the burst command. Real tps is dumped on '.real_tps' file during testing."
+   echo "        You could limit the amount of messages sent by mean the second parameter."
+   echo "        No limit is established by default (-1 or negative value)."
+   echo
+   echo "     goto <order>:"
+   echo "        Updates current burst pointer position."
+   echo
+   echo "     look <order>:"
+   echo "        Show programmed burst message for order provided."
+   echo
+   echo
+   salir 
+}
+
+_curl () {
+   curl -m 5 --data "$1" $TRACE ${SERVER}
+}
+
+echo
+echo
+[[ "$1" = "" ]] && uso
+case $1 in
+   clear) _curl "burst|clear"
+   ;;
+   load) [[ "$3" = "" ]] && uso
+         [[ ! -f "${3}.sh" ]] && salir "Burst generation file '${3}.sh' not found!"
+         entero $2
+         if test "$3" = "data"
+         then
+            count=$2
+            RESTO=$((count%4))
+            [[ "$RESTO" != "0" ]] && salir "Data context should load a multiple of 4 (messages generated by data.sh)" 
+         fi
+         count=1
+         while test "$count" -le "$2"
+         do
+            ${3}.sh $count > .${3}.xml
+            echo -n "Loading message ${count}; "
+            _curl "burst|load|.${3}.xml"
+            count=$((count+1))
+         done
+   ;;
+   start) load=$burstMargin__dflt
+          [[ "$2" != "" ]] && load=$2
+          entero $load
+          _curl "burst|start|$load"
+   ;;
+   pop) release=$burstMargin__dflt
+          [[ "$2" != "" ]] && release=$2
+          entero $release
+          _curl "burst|pop|$release"
+   ;;
+   push) [[ "$2" = "" ]] && uso
+         entero $2
+         _curl "burst|push|$2"
+   ;;
+   stop) _curl "burst|stop"
+   ;;
+   resume) _curl "burst|push|1"
+   ;;
+   repeat) repeat=yes
+          [[ "$2" != "" ]] && repeat=$2
+          _curl "burst|repeat|$repeat"
+   ;;
+   send) amount=1
+         [[ "$2" != "" ]] && amount=$2
+         entero $amount
+         _curl "burst|send|$amount"
+   ;;
+   sendXS) [[ "$2" = "" ]] && uso
+         limit=$3
+         [[ "$limit" = "" ]] && limit=-1
+         entero $2
+         entero $limit
+         TPS=0
+         count=0
+         amount=1
+         echo $2 > .tps
+         while test -f .tps
+         do
+            [[ "$count" = "$limit" ]] && break
+            BEFORE_ns=`date +%s%N`
+            READ_TPS=`cat .tps`
+            # Hot change could make .tps still unavailable:
+            [[ "$READ_TPS" = "" ]] && READ_TPS=$TPS
+            # Volvemos a calcular medias (REAL_TPS) cada 10 segundos o cuando cambia el TPS en caliente:
+            [[ "$READ_TPS" != "$TPS" ]] && { BEGIN_ns=$BEFORE_ns ; count=0 ; }
+            [[ $count = $((10*TPS)) ]] && { BEGIN_ns=$BEFORE_ns ; count=0 ; }
+            TPS=$READ_TPS
+            [[ "$TPS" = "0" ]] && salir "Test stopped due to 0-tps value read"
+            # Background:
+            _curl "burst|send|$amount" &
+            count=$((count+amount))
+            AFTER_ns=`date +%s%N`
+            # Real tps:
+            REAL_TPS=$(calc "1000000000 * $count / ($AFTER_ns - $BEGIN_ns)")
+            echo $REAL_TPS > .real_tps
+            
+            COEF=1
+            [[ $(calc "$TPS > $REAL_TPS") = "1" ]] && COEF=$(calc "$REAL_TPS / $TPS")
+            K=$(calc "$COEF ^ 10")
+            amount=$(calc "scale=0;1/$K")
+            usleep $(calc "$K * 1000000/$TPS")
+         done
+   ;;
+   goto) [[ "$2" = "" ]] && uso
+         entero $2
+         _curl "burst|goto|$2"
+   ;;
+   look) [[ "$2" = "" ]] && uso
+         entero $2
+         _curl "burst|look|$2"
+   ;;
+   *) uso
+esac
+
diff --git a/example/diameter/launcher/resources/advanced/clientSocketManager.sh b/example/diameter/launcher/resources/advanced/clientSocketManager.sh
new file mode 100755 (executable)
index 0000000..4c801b2
--- /dev/null
@@ -0,0 +1,70 @@
+#!/bin/bash
+> curl_log.txt
+TRACE="--trace-ascii curl_log.txt"
+SERVER=`cat .httpServer`
+ENTITY=`cat .entity 2>/dev/null`
+# If missing following, 1 is assigned (ENTITY_SS_1 is ENTITY_SS - 1)
+ENTITY_SS=`cat .entityServerSessions 2>/dev/null`
+[[ "$ENTITY_SS" = "" ]] && ENTITY_SS=1
+TARGET=$2
+
+use () {
+   echo
+   echo
+   echo "Use: $0 <hide|show|hidden|shown> \"[<address>:<port>]|[socket id]\""
+   echo
+   echo "Hides/shows/query hidden state/query shown state, the socket/s provided."
+   echo "If missing server (first parameter) all applications sockets will be affected by action."
+   echo "If missing socket (second parameter) for specific server, all its sockets will be affected by action."
+   echo
+   exit
+}
+
+states () {
+   echo
+   echo "Select option to switch (0 = quit):"
+   echo
+   option=1 
+   for i in `echo $ENTITY | sed 's/,/ /g'`
+   do
+      for j in `seq 0 $ENTITY_SS_1`
+      do
+         TARGET="${i}|${j}"
+         RES=$(curl -m 1 --data "shown|$TARGET" ${SERVER} 2>&1 | tail -1 | grep "true$")
+         res=hidden
+         [[ "$RES" != "" ]] && res=shown
+         echo "${option}. $TARGET     ($res)"
+         action=show
+         [[ "$RES" != "" ]] && action=hide
+         echo "curl -m 1 --data \"$action|$TARGET\" ${SERVER}" > .switch_${option}
+         chmod a+x .switch_${option}
+         option=$((option+1))
+      done
+   done
+   echo
+}
+
+if test "$ENTITY" != ""
+then
+   ENTITY_SS_1=$((ENTITY_SS-1))
+   while true
+   do
+      states
+      read option
+      [[ "$option" = "0" ]] && break
+      .switch_${option} 
+   done
+   echo
+   echo "Exiting"
+   rm .switch_*
+   exit
+else
+   [[ "$1" = "" ]] && use
+fi
+
+echo
+echo
+operation="$1|$TARGET"
+[[ "$TARGET" = "" ]] && operation="$1"
+curl -m 1 --data "$operation" $TRACE ${SERVER}
+
diff --git a/example/diameter/launcher/resources/advanced/code.sh b/example/diameter/launcher/resources/advanced/code.sh
new file mode 100755 (executable)
index 0000000..9ca200c
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/bash
+> curl_log.txt
+TRACE="--trace-ascii curl_log.txt"
+SERVER=`cat .httpServer`
+
+use () {
+
+   echo "Use: $0 <xml_file>"
+   echo
+   echo "Creates '<xml_file>.hex' with encoded result."
+   echo
+   exit
+}
+
+echo
+[[ "$1" = "" ]] && use
+[[ ! -f "$1" ]] && { echo "ERROR: file '$1' not found" ; echo; echo; exit ; }
+echo
+operation="code|$1|${1}.hex"
+curl -m 1 --data "$operation" $TRACE ${SERVER}
+
diff --git a/example/diameter/launcher/resources/advanced/collect.sh b/example/diameter/launcher/resources/advanced/collect.sh
new file mode 100755 (executable)
index 0000000..5fb95ec
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/bash
+> curl_log.txt
+TRACE="--trace-ascii curl_log.txt"
+SERVER=`cat .httpServer`
+curl -m 1 --data "collect" $TRACE ${SERVER}
+
diff --git a/example/diameter/launcher/resources/advanced/data-initial.msk b/example/diameter/launcher/resources/advanced/data-initial.msk
new file mode 100644 (file)
index 0000000..fa6d324
--- /dev/null
@@ -0,0 +1,44 @@
+<message version="1" name="Credit-Control-Request" p-bit="yes" application-id="4" hop-by-hop-id="__HBH_ETE__" end-by-end-id="__HBH_ETE__">
+   <avp name="Session-Id" data="__SID_DI__;__SID_HIGH__;__SID_LOW__;__SID_SUFFIX__"/>
+   <avp name="Origin-Host" data="__SID_DI__"/>
+   <avp name="Origin-Realm" data="sandvine.com"/>
+   <avp name="Destination-Realm" data="telefonica.com.co"/>
+   <avp name="Auth-Application-Id" data="4"/>
+   <avp name="Service-Context-Id" data="770.32251@3gpp.org"/>
+   <avp name="CC-Request-Type" data="1" alias="INITIAL_REQUEST"/>
+   <avp name="CC-Request-Number" data="0"/>
+   <avp name="User-Name" data="__MSISDN__"/>
+   <avp name="Origin-State-Id" data="1339077627"/>
+   <avp name="Event-Timestamp" data="__NTPTIMESTAMP__"/>
+   <avp name="Subscription-Id">
+      <avp name="Subscription-Id-Type" data="0" alias="END_USER_E164"/>
+      <avp name="Subscription-Id-Data" data="__MSISDN__"/>
+   </avp>
+   <avp name="Multiple-Services-Indicator" data="1" alias="MULTIPLE_SERVICES_SUPPORTED"/>
+   <avp name="User-Equipment-Info">
+      <avp name="User-Equipment-Info-Type" data="0" alias="IMEISV"/>
+      <avp name="User-Equipment-Info-Value" hex-data="33353430343630343130363438333030"/>
+   </avp>
+   <avp name="Service-Information">
+      <avp name="PS-Information">
+         <avp name="3GPP-Charging-Id" data="29"/>
+         <avp name="3GPP-PDP-Type" data="0" alias="IPV4"/>
+         <avp name="PDP-Address" data="10.193.49.133"/>
+         <avp name="3GPP-GPRS-Neg-QoS-Profile" data="05-1b921f7196fefe74fbfefe00"/>
+         <avp name="SGSN-Address" data="190.98.183.240"/>
+         <avp name="GGSN-Address" data="190.98.183.243"/>
+         <avp name="CG-Address" data="10.193.249.1"/>
+         <avp name="3GPP-IMSI-MCC-MNC" data="71204"/>
+         <avp name="3GPP-GGSN-MCC-MNC" data="71204"/>
+         <avp name="3GPP-NSAPI" data="5"/>
+         <avp name="Called-Station-Id" data="internet.movistar.ni"/>
+         <avp name="3GPP-Selection-Mode" data="0"/>
+         <avp name="3GPP-Charging-Characteristics" data="0800"/>
+         <avp name="3GPP-SGSN-MCC-MNC" data="33403"/>
+         <avp name="3GPP-MS-TimeZone" hex-data="4a00"/>
+         <avp name="3GPP-User-Location-Info" hex-data="0117f240a4780218"/>
+         <avp name="3GPP-Rat-Type" hex-data="01"/>
+         <avp name="PDP-Context-Type" data="0"/>
+      </avp>
+   </avp>
+</message>
diff --git a/example/diameter/launcher/resources/advanced/data-termination.msk b/example/diameter/launcher/resources/advanced/data-termination.msk
new file mode 100644 (file)
index 0000000..f15396f
--- /dev/null
@@ -0,0 +1,55 @@
+<message version="1" name="Credit-Control-Request" p-bit="yes" application-id="4" hop-by-hop-id="__HBH_ETE__" end-by-end-id="__HBH_ETE__">
+   <avp name="Session-Id" data="__SID_DI__;__SID_HIGH__;__SID_LOW__;__SID_SUFFIX__"/>
+   <avp name="Origin-Host" data="__SID_DI__"/>
+   <avp name="Origin-Realm" data="sandvine.com"/>
+   <avp name="Destination-Realm" data="telefonica.com.co"/>
+   <avp name="Auth-Application-Id" data="4"/>
+   <avp name="Service-Context-Id" data="770.32251@3gpp.org"/>
+   <avp name="CC-Request-Type" data="3" alias="TERMINATION_REQUEST"/>
+   <avp name="CC-Request-Number" data="3"/>
+   <avp name="Destination-Host" data="mqmty1besdp1.movistar.pa"/>
+   <avp name="User-Name" data="__MSISDN__"/>
+   <avp name="Origin-State-Id" data="1339077627"/>
+   <avp name="Event-Timestamp" data="__NTPTIMESTAMP__"/>
+   <avp name="Subscription-Id">
+      <avp name="Subscription-Id-Type" data="0" alias="END_USER_E164"/>
+      <avp name="Subscription-Id-Data" data="__MSISDN__"/>
+   </avp>
+   <avp name="Termination-Cause" data="1" alias="DIAMETER_LOGOUT"/>
+   <avp name="Multiple-Services-Indicator" data="1" alias="MULTIPLE_SERVICES_SUPPORTED"/>
+   <avp name="Multiple-Services-Credit-Control">
+      <avp name="Used-Service-Unit">
+         <avp name="CC-Total-Octets" data="524288"/>
+         <avp name="CC-Input-Octets" data="424288"/>
+         <avp name="CC-Output-Octets" data="100000"/>
+         <avp name="Reporting-Reason" data="2" alias="FINAL"/>
+      </avp>
+      <avp name="Rating-Group" data="99"/>
+   </avp>
+   <avp name="User-Equipment-Info">
+      <avp name="User-Equipment-Info-Type" data="0" alias="IMEISV"/>
+      <avp name="User-Equipment-Info-Value" hex-data="33353430343630343130363438333030"/>
+   </avp>
+   <avp name="Service-Information">
+      <avp name="PS-Information">
+         <avp name="3GPP-Charging-Id" data="29"/>
+         <avp name="3GPP-PDP-Type" data="0" alias="IPV4"/>
+         <avp name="PDP-Address" data="10.193.49.133"/>
+         <avp name="3GPP-GPRS-Neg-QoS-Profile" data="05-1b921f7196fefe74fbfefe00"/>
+         <avp name="SGSN-Address" data="190.98.183.240"/>
+         <avp name="GGSN-Address" data="190.98.183.243"/>
+         <avp name="CG-Address" data="10.193.249.1"/>
+         <avp name="3GPP-IMSI-MCC-MNC" data="71204"/>
+         <avp name="3GPP-GGSN-MCC-MNC" data="71204"/>
+         <avp name="3GPP-NSAPI" data="5"/>
+         <avp name="Called-Station-Id" data="internet.movistar.ni"/>
+         <avp name="3GPP-Session-Stop-Indicator" hex-data="ff"/>
+         <avp name="3GPP-Selection-Mode" data="0"/>
+         <avp name="3GPP-Charging-Characteristics" data="0800"/>
+         <avp name="3GPP-SGSN-MCC-MNC" data="33403"/>
+         <avp name="3GPP-MS-TimeZone" hex-data="4a00"/>
+         <avp name="3GPP-User-Location-Info" hex-data="0117f240a4780218"/>
+         <avp name="3GPP-Rat-Type" hex-data="01"/>
+      </avp>
+   </avp>
+</message>
diff --git a/example/diameter/launcher/resources/advanced/data-update1.msk b/example/diameter/launcher/resources/advanced/data-update1.msk
new file mode 100644 (file)
index 0000000..8883c60
--- /dev/null
@@ -0,0 +1,47 @@
+<message version="1" name="Credit-Control-Request" p-bit="yes" application-id="4" hop-by-hop-id="__HBH_ETE__" end-by-end-id="__HBH_ETE__">
+   <avp name="Session-Id" data="__SID_DI__;__SID_HIGH__;__SID_LOW__;__SID_SUFFIX__"/>
+   <avp name="Origin-Host" data="__SID_DI__"/>
+   <avp name="Origin-Realm" data="sandvine.com"/>
+   <avp name="Destination-Realm" data="telefonica.com.co"/>
+   <avp name="Auth-Application-Id" data="4"/>
+   <avp name="Service-Context-Id" data="770.32251@3gpp.org"/>
+   <avp name="CC-Request-Type" data="2" alias="UPDATE_REQUEST"/>
+   <avp name="CC-Request-Number" data="1"/>
+   <avp name="Destination-Host" data="mqmty1besdp1.movistar.pa"/>
+   <avp name="Origin-State-Id" data="1339077627"/>
+   <avp name="Event-Timestamp" data="__NTPTIMESTAMP__"/>
+   <avp name="Subscription-Id">
+      <avp name="Subscription-Id-Type" data="0" alias="END_USER_E164"/>
+      <avp name="Subscription-Id-Data" data="__MSISDN__"/>
+   </avp>
+   <avp name="Multiple-Services-Indicator" data="1" alias="MULTIPLE_SERVICES_SUPPORTED"/>
+   <avp name="Multiple-Services-Credit-Control">
+      <avp name="Requested-Service-Unit"/>
+      <avp name="Rating-Group" data="99"/>
+   </avp>
+   <avp name="User-Equipment-Info">
+      <avp name="User-Equipment-Info-Type" data="0" alias="IMEISV"/>
+      <avp name="User-Equipment-Info-Value" hex-data="33353430343630343130363438333030"/>
+   </avp>
+   <avp name="Service-Information">
+      <avp name="PS-Information">
+         <avp name="3GPP-Charging-Id" data="29"/>
+         <avp name="3GPP-PDP-Type" data="0" alias="IPV4"/>
+         <avp name="PDP-Address" data="10.193.49.133"/>
+         <avp name="3GPP-GPRS-Neg-QoS-Profile" data="05-1b921f7196fefe74fbfefe00"/>
+         <avp name="SGSN-Address" data="190.98.183.240"/>
+         <avp name="GGSN-Address" data="190.98.183.243"/>
+         <avp name="CG-Address" data="10.193.249.1"/>
+         <avp name="3GPP-IMSI-MCC-MNC" data="71204"/>
+         <avp name="3GPP-GGSN-MCC-MNC" data="71204"/>
+         <avp name="3GPP-NSAPI" data="5"/>
+         <avp name="Called-Station-Id" data="internet.movistar.ni"/>
+         <avp name="3GPP-Selection-Mode" data="0"/>
+         <avp name="3GPP-Charging-Characteristics" data="0800"/>
+         <avp name="3GPP-SGSN-MCC-MNC" data="33403"/>
+         <avp name="3GPP-MS-TimeZone" hex-data="4a00"/>
+         <avp name="3GPP-User-Location-Info" hex-data="0117f240a4780218"/>
+         <avp name="3GPP-Rat-Type" hex-data="01"/>
+      </avp>
+   </avp>
+</message>
diff --git a/example/diameter/launcher/resources/advanced/data-update2.msk b/example/diameter/launcher/resources/advanced/data-update2.msk
new file mode 100644 (file)
index 0000000..8784172
--- /dev/null
@@ -0,0 +1,53 @@
+<message version="1" name="Credit-Control-Request" p-bit="yes" application-id="4" hop-by-hop-id="__HBH_ETE__" end-by-end-id="__HBH_ETE__">
+   <avp name="Session-Id" data="__SID_DI__;__SID_HIGH__;__SID_LOW__;__SID_SUFFIX__"/>
+   <avp name="Origin-Host" data="__SID_DI__"/>
+   <avp name="Origin-Realm" data="sandvine.com"/>
+   <avp name="Destination-Realm" data="telefonica.com.co"/>
+   <avp name="Auth-Application-Id" data="4"/>
+   <avp name="Service-Context-Id" data="770.32251@3gpp.org"/>
+   <avp name="CC-Request-Type" data="2" alias="UPDATE_REQUEST"/>
+   <avp name="CC-Request-Number" data="2"/>
+   <avp name="Destination-Host" data="mqmty1besdp1.movistar.pa"/>
+   <avp name="User-Name" data="__MSISDN__"/>
+   <avp name="Origin-State-Id" data="1339077627"/>
+   <avp name="Event-Timestamp" data="__NTPTIMESTAMP__"/>
+   <avp name="Subscription-Id">
+      <avp name="Subscription-Id-Type" data="0" alias="END_USER_E164"/>
+      <avp name="Subscription-Id-Data" data="__MSISDN__"/>
+   </avp>
+   <avp name="Multiple-Services-Indicator" data="1" alias="MULTIPLE_SERVICES_SUPPORTED"/>
+   <avp name="Multiple-Services-Credit-Control">
+      <avp name="Requested-Service-Unit"/>
+      <avp name="Used-Service-Unit">
+         <avp name="CC-Total-Octets" data="524288"/>
+         <avp name="CC-Input-Octets" data="224288"/>
+         <avp name="CC-Output-Octets" data="300000"/>
+      </avp>
+      <avp name="Rating-Group" data="99"/>
+   </avp>
+   <avp name="User-Equipment-Info">
+      <avp name="User-Equipment-Info-Type" data="0" alias="IMEISV"/>
+      <avp name="User-Equipment-Info-Value" hex-data="33353430343630343130363438333030"/>
+   </avp>
+   <avp name="Service-Information">
+      <avp name="PS-Information">
+         <avp name="3GPP-Charging-Id" data="29"/>
+         <avp name="3GPP-PDP-Type" data="0" alias="IPV4"/>
+         <avp name="PDP-Address" data="10.193.49.133"/>
+         <avp name="3GPP-GPRS-Neg-QoS-Profile" data="05-1b921f7196fefe74fbfefe00"/>
+         <avp name="SGSN-Address" data="190.98.183.240"/>
+         <avp name="GGSN-Address" data="190.98.183.243"/>
+         <avp name="CG-Address" data="10.193.249.1"/>
+         <avp name="3GPP-IMSI-MCC-MNC" data="71204"/>
+         <avp name="3GPP-GGSN-MCC-MNC" data="71204"/>
+         <avp name="3GPP-NSAPI" data="5"/>
+         <avp name="Called-Station-Id" data="internet.movistar.ni"/>
+         <avp name="3GPP-Selection-Mode" data="0"/>
+         <avp name="3GPP-Charging-Characteristics" data="0800"/>
+         <avp name="3GPP-SGSN-MCC-MNC" data="33403"/>
+         <avp name="3GPP-MS-TimeZone" hex-data="4a00"/>
+         <avp name="3GPP-User-Location-Info" hex-data="0117f240a4780218"/>
+         <avp name="3GPP-Rat-Type" hex-data="01"/>
+      </avp>
+   </avp>
+</message>
diff --git a/example/diameter/launcher/resources/advanced/data.sh b/example/diameter/launcher/resources/advanced/data.sh
new file mode 100755 (executable)
index 0000000..09949ad
--- /dev/null
@@ -0,0 +1,74 @@
+#!/bin/bash
+
+# Generates DATA burst sequence for provided order number (1: first, 2: second, etc.)
+# We will generate a simple scenario with initial, two updates and termination, that is to say: four messages:
+#  1,2,3,4  5,6,7,8  9,10,11,12   etc.
+#
+# Category = ((Number-1) % 4) + 1 = 1 for initial, 2 for first update, 3 for second update and 4 for termination
+SEQN=$1
+OFFSET=$((SEQN-1))
+CAT=$((OFFSET%4 + 1))
+
+salir () {
+   echo
+   echo $1
+   echo
+   exit
+}
+
+check_template () {
+   [[ ! -f $1 ]] && salir "Template file ($1) not found!"
+}
+
+parse () {
+   cat $1 | sed 's/__HBH_ETE__/'$HBH_ETE'/g' | sed 's/__SID_SUFFIX__/'$SID_SUFFIX'/' \
+            | sed 's/__MSISDN__/'$MSISDN'/' | sed 's/__NTPTIMESTAMP__/'$NTP'/' \
+            | sed 's/__SID_DI__/'$SID_DI'/' | sed 's/__SID_HIGH__/'$SID_HIGH'/' | sed 's/__SID_LOW__/'$SI_LOW'/'
+}
+
+
+[[ "$SEQN" = "" ]] && salir "Use: $0 <sequence number: 1..N>"
+check_template data-initial.msk
+check_template data-update1.msk
+check_template data-update2.msk
+check_template data-termination.msk
+
+# Session-Id: '<DiameterIdentity>;<high 32 bits>;<low 32 bits>[;<optional value>="">]'
+#   <avp name="Session-Id" data="module-2.PTS2-BOG.sandvine.com;1287115741;0;49"/>
+# We will sequence the otional value with __SID_SUFFIX__, low and high will be constant.
+
+# Sequence values at templates:
+# __HBH_ETE__:    1, 3, 5, etc. (hop-by-hop and end-to-end)
+# __SID_SUFFIX__: It could be MSISDN, but we put OFFSET (0, 1, 2, 3, etc.). It's the Session-Id optional part.
+# __MSISDN__:     50583211675, 50583211676, 50583211677, etc. Used for User-Name and Subscription-Id-Data 
+# __NTPTIMESTAMP__: Four values for initial, update1, update2 and termination: 3548171033, 3548171136 (103+), 3548171136(idem), 3548171524(388+)
+#                   This initial time (aproximately 8 Jun 2012 at 19:00).
+CUARTO=$((OFFSET/4))
+HBH_ETE=$((1 + 2*OFFSET))
+SID_SUFFIX=$CUARTO
+# Example if you want to fix to two sockets (-sessionIdPartForClientSocketIdSelection must be 'optional'): SID_SUFFIX=$((CUARTO%2))
+MSISDN=$((50583211675+CUARTO))
+NTP=$((3548171033+CUARTO))
+
+# Helpers to guide derivery (fixed at the moment)
+# __SID_DI__:     Session-Id diameter identity
+# __SID_HIGH__:   Session-Id high part
+# __SID_LOW__:    Session-Id low part
+SID_DI=module-2.PTS2-BOG.sandvine.com
+SID_HIGH=1287115741
+SI_LOW=0
+
+case $CAT in
+   1) parse data-initial.msk
+   ;;
+   2) NTP=$((NTP+103))
+      parse data-update1.msk
+   ;;
+   3) NTP=$((NTP+103))
+      parse data-update2.msk
+   ;;
+   4) NTP=$((NTP+491))
+      parse data-termination.msk
+   ;;
+esac
+
diff --git a/example/diameter/launcher/resources/advanced/decode.sh b/example/diameter/launcher/resources/advanced/decode.sh
new file mode 100755 (executable)
index 0000000..3924f73
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/bash
+> curl_log.txt
+TRACE="--trace-ascii curl_log.txt"
+SERVER=`cat .httpServer`
+
+use () {
+
+   echo "Use: $0 <hex_file>"
+   echo
+   echo "Creates '<hex_file>.xml' with decoded result."
+   echo
+   exit
+}
+
+echo
+[[ "$1" = "" ]] && use
+[[ ! -f "$1" ]] && { echo "ERROR: file '$1' not found" ; echo; echo; exit ; }
+echo
+operation="decode|$1|${1}.xml"
+curl -m 1 --data "$operation" $TRACE ${SERVER}
+
diff --git a/example/diameter/launcher/resources/advanced/diameterServerSessions.sh b/example/diameter/launcher/resources/advanced/diameterServerSessions.sh
new file mode 100755 (executable)
index 0000000..dc72c87
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/bash
+> curl_log.txt
+TRACE="--trace-ascii curl_log.txt"
+SERVER=`cat .httpServer`
+
+use () {
+
+   echo "Use: $0 <integer>"
+   echo
+   echo "Updates the maximum number of accepted connections over diameter server socket."
+   echo
+   exit
+}
+
+echo
+[[ "$1" = "" ]] && use
+echo
+operation="diameterServerSessions|$1"
+curl -m 1 --data "$operation" $TRACE ${SERVER}
+
diff --git a/example/diameter/launcher/resources/advanced/help.sh b/example/diameter/launcher/resources/advanced/help.sh
new file mode 100755 (executable)
index 0000000..ebeafff
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/bash
+> curl_log.txt
+TRACE="--trace-ascii curl_log.txt"
+SERVER=`cat .httpServer`
+curl -m 1 --data "help" $TRACE ${SERVER}
+
diff --git a/example/diameter/launcher/resources/advanced/loadXml.sh b/example/diameter/launcher/resources/advanced/loadXml.sh
new file mode 100755 (executable)
index 0000000..26749d5
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/bash
+> curl_log.txt
+TRACE="--trace-ascii curl_log.txt"
+SERVER=`cat .httpServer`
+
+use () {
+
+   echo "Use: $0 <xml_file>"
+   echo
+   echo "Load xml file and show on stdout again."
+   echo "It is useful to test xml loader and xml viewer, but also for show aliases and,"
+   echo "if '-ignoreFlags' commandline option is missing, for flag coherence checking."
+   echo
+   exit
+}
+
+echo
+[[ "$1" = "" ]] && use
+[[ ! -f "$1" ]] && { echo "ERROR: file '$1' not found" ; echo; echo; exit ; }
+echo
+operation="loadxml|$1"
+curl -m 1 --data "$operation" $TRACE ${SERVER}
+
diff --git a/example/diameter/launcher/resources/advanced/pre-start.sh b/example/diameter/launcher/resources/advanced/pre-start.sh
new file mode 100755 (executable)
index 0000000..49a83ff
--- /dev/null
@@ -0,0 +1,92 @@
+#!/bin/bash
+
+# Remove logs:
+rm *.log* *.csv 2>/dev/null
+
+# Server sockets:
+httpServer_dflt=`cat .httpServer 2>/dev/null`
+diameterServer_dflt=`cat .diameterServer 2>/dev/null`
+diameterServerSessions_dflt=`cat .diameterServerSessions 2>/dev/null`
+
+# Client sockets:
+entity_dflt=`cat .entity 2>/dev/null`
+entityServerSessions_dflt=`cat .entityServerSessions 2>/dev/null`
+
+# Stack:
+dictionary_dflt=`cat .dictionary 2>/dev/null`
+
+echo
+echo
+# If all have values:
+if [ "$httpServer_dflt" != ""  -a "$diameterServer_dflt" != "" -a "$diameterServerSessions_dflt" != "" -a \
+  "$entity_dflt" != ""  -a "$entityServerSessions_dflt" != "" -a \
+  "$dictionary_dflt" != "" ]
+then
+  echo "Do you wish to answer wizard commandline configuration ? (y/n) [n]:"
+  read wizard
+  [ "$wizard" = "" ] && wizard=n
+  [ "$wizard" = "n" ] && exit
+fi
+
+# DEFAULTS
+[ "$httpServer_dflt" = "" ] && httpServer_dflt="localhost:9000"
+[ "$diameterServer_dflt" = "" ] && diameterServer_dflt="localhost:3868"
+[ "$diameterServerSessions_dflt" = "" ] && diameterServerSessions_dflt=1
+[ "$entity_dflt" = "" ] && entity_dflt="localhost:4000,localhost:4001"
+[ "$entityServerSessions_dflt" = "" ] && entityServerSessions_dflt=0
+[ "$dictionary_dflt" = "" ] && dictionary_dflt=dictionary.xml
+
+
+# Wizard
+echo "HTTP Management interface address (using i.e. curl tool) as <ip|hostname>:<port> socket literal [$httpServer_dflt]:"
+read httpServer
+[ "$httpServer" = "" ] && httpServer=$httpServer_dflt
+
+echo "Diameter dictionary: you could use '/opt/bin/anna/example_diameter_stackManagement' tool in order to build"
+echo " autonomous dictionaries for any kind of application. The key is to concatenate xml contents (ietf, 3gpp,"
+echo " vendor-specific, etc.). See 'example/diameter/stackManagement/self_ruling_setups.sh' for this."
+echo
+echo "This launcher can also join them providing a comma-separated list (dictionaries available on ./stack)."
+echo "By default, a QoS Application setup is suggested. Input the desired configuration instead, or press ENTER:"
+echo
+echo " [$dictionary_dflt]:"
+read dictionary
+[ "$dictionary" = "" ] && dictionary=$dictionary_dflt
+
+# As server:
+echo "Diameter own server available connections (0: diameter server disabled) [$diameterServerSessions_dflt]:"
+read diameterServerSessions
+[ "$diameterServerSessions" = "" ] && diameterServerSessions=$diameterServerSessions_dflt
+
+diameterServer=
+if test "$diameterServerSessions" != "0"
+then
+  echo "Diameter own server address as <ip|hostname>:<port> socket literal [$diameterServer_dflt]:"
+  read diameterServer
+fi
+[ "$diameterServer" = "" ] && diameterServer=$diameterServer_dflt
+
+# As client:
+echo "Diameter entity server sessions (0: diameter entity disabled) [$entityServerSessions_dflt]:"
+read entityServerSessions
+[ "$entityServerSessions" = "" ] && entityServerSessions=$entityServerSessions_dflt
+
+entity=
+if test "$entityServerSessions" != "0"
+then
+  echo "Target diameter entity (pipe-separated <ip|hostname>:<port> socket literal list) ["$entity_dflt"]:"
+  read entity
+fi
+[ "$entity" = "" ] && entity="$entity_dflt"
+
+# Configure:
+echo $httpServer > .httpServer
+echo $dictionary > .dictionary
+echo $diameterServer > .diameterServer
+echo $diameterServerSessions > .diameterServerSessions
+echo $entity > .entity
+echo $entityServerSessions > .entityServerSessions
+
+echo
+echo
+
diff --git a/example/diameter/launcher/resources/advanced/sendXml.sh b/example/diameter/launcher/resources/advanced/sendXml.sh
new file mode 100755 (executable)
index 0000000..d9aaa33
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/bash
+> curl_log.txt
+TRACE="--trace-ascii curl_log.txt"
+SERVER=`cat .httpServer`
+
+use () {
+
+   echo "Use: $0 <xml_file> [2c]"
+   echo
+   echo "Sends 'xml_file' to the diameter server or to the client when '2c' parameter is provided."
+   echo
+   exit
+}
+
+echo
+[[ "$1" = "" ]] && use
+[[ ! -f "$1" ]] && { echo "ERROR: file '$1' not found" ; echo; echo; exit ; }
+echo
+operation="sendxml|$1"
+[[ "$2" = "2c" ]] && operation="sendxml2c|$1"
+
+curl -m 1 --data "$operation" $TRACE ${SERVER}
+
diff --git a/example/diameter/launcher/resources/advanced/sms.msk b/example/diameter/launcher/resources/advanced/sms.msk
new file mode 100644 (file)
index 0000000..7bec3c8
--- /dev/null
@@ -0,0 +1,90 @@
+<message version="1" name="Credit-Control-Request" p-bit="yes" application-id="4" hop-by-hop-id="__HBH_ETE__" end-by-end-id="__HBH_ETE__">
+   <avp name="Session-Id" data="gbg.acision.com;421411;__SID_LOW__"/>
+   <avp name="Origin-Host" data="gbg.acision.com"/>
+   <avp name="Origin-Realm" data="SMSC.orig.OCS2.o2online.de"/>
+   <avp name="Destination-Realm" data="SMSC.dest.OCS1.o2online.de"/>
+   <avp name="Auth-Application-Id" data="4"/>
+   <avp name="Service-Context-Id" data="8.6.0.07.262.8.32274@3gpp.org"/>
+   <avp name="CC-Request-Type" data="4" alias="EVENT_REQUEST"/>
+   <avp name="CC-Request-Number" data="1"/>
+   <avp name="Destination-Host" data="OCS1"/>
+   <avp name="Event-Timestamp" data="1"/>
+   <avp name="Subscription-Id">
+      <avp name="Subscription-Id-Type" data="0" alias="END_USER_E164"/>
+      <avp name="Subscription-Id-Data" data="__MSISDN__"/>
+   </avp>
+   <avp name="Requested-Action" data="0" alias="DIRECT_DEBITING"/>
+   <avp name="Multiple-Services-Indicator" data="0" alias="MULTIPLE_SERVICES_NOT_SUPPORTED"/>
+   <avp name="Multiple-Services-Credit-Control">
+      <avp name="Requested-Service-Unit">
+         <avp name="CC-Service-Specific-Units" data="1"/>
+      </avp>
+      <avp name="Service-Identifier" data="1"/>
+   </avp>
+   <avp name="Service-Information">
+      <avp name="MMS-Information">
+         <avp name="Originator-Address">
+            <avp name="Address-Type" data="1" alias="MSISDN"/>
+            <avp name="Address-Data" data="__MSISDN__"/>
+            <avp name="Address-Domain">
+               <avp name="3GPP-IMSI-MCC-MNC" data="26207"/>
+            </avp>
+         </avp>
+         <avp name="Originator-Address">
+            <avp name="Address-Type" data="6" alias="Other"/>
+            <avp name="Address-Data" data="__IMSI__"/>
+         </avp>
+         <avp name="Submission-Time" data="3486294858"/>
+         <avp name="Message-Size" data="4"/>
+      </avp>
+      <avp name="SMS-Information">
+         <avp name="SMS-Node" data="3" alias="SMS-SC"/>
+         <avp name="Client-Address" data="8|541760000405"/>
+         <avp name="Originator-SCCP-Address" data="8|541760000005"/>
+         <avp name="Originator-Received-Address">
+            <avp name="Address-Type" data="1" alias="MSISDN"/>
+            <avp name="Address-Data" data="__MSISDN__"/>
+            <avp name="Address-Domain">
+               <avp name="3GPP-IMSI-MCC-MNC" data="26207"/>
+            </avp>
+         </avp>
+         <avp name="Recipient-Info">
+            <avp name="Destination-Interface">
+               <avp name="Interface-Id" data="5417607020601"/>
+               <avp name="Interface-Type" data="2" alias="MOBILE_TERMINATING"/>
+            </avp>
+            <avp name="Recipient-Address">
+               <avp name="Address-Type" data="1" alias="MSISDN"/>
+               <avp name="Address-Data" data="5417607020601"/>
+               <avp name="Address-Domain">
+                  <avp name="3GPP-IMSI-MCC-MNC" data="26207"/>
+               </avp>
+            </avp>
+            <avp name="Recipient-Address">
+               <avp name="Address-Type" data="6" alias="Other"/>
+               <avp name="Address-Data" data="262074900005771"/>
+            </avp>
+            <avp name="Recipient-Received-Address">
+               <avp name="Address-Type" data="1" alias="MSISDN"/>
+               <avp name="Address-Data" data="5417607020601"/>
+               <avp name="Address-Domain">
+                  <avp name="3GPP-IMSI-MCC-MNC" data="26207"/>
+               </avp>
+            </avp>
+            <avp name="Recipient-SCCP-Address" data="8|541760000005"/>
+         </avp>
+         <avp name="SMSC-Address" data="8|541760000405"/>
+         <avp name="Data-Coding-Scheme" data="0"/>
+         <avp name="SM-Message-Type" data="0" alias="SUBMISSION"/>
+         <avp name="Originator-Interface">
+            <avp name="Interface-Id" data="262074900005771"/>
+            <avp name="Interface-Type" data="1" alias="MOBILE_ORIGINATING"/>
+         </avp>
+         <avp name="Number-Of-Messages-Sent" data="1"/>
+      </avp>
+   </avp>
+<!--
+   El Correlation Id no se usa en el Sertamsjt
+   <avp name="CC-Correlation-Id" data="gbg.acision.com;421411;__SID_LOW__"/>
+-->
+</message>
diff --git a/example/diameter/launcher/resources/advanced/sms.sh b/example/diameter/launcher/resources/advanced/sms.sh
new file mode 100755 (executable)
index 0000000..d0b1e63
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+# Generates SMS burst sequence for provided order number (1: first, 2: second, etc.)
+SEQN=$1
+
+salir () {
+   echo
+   echo $1
+   echo
+   exit
+}
+
+[[ "$SEQN" = "" ]] && salir "Use: $0 <sequence number: 1..N>"
+[[ ! -f sms.msk ]] && salir "Template file (sms.msk) not found!"
+
+# Sequence values at template sms.msk:
+# __HBH_ETE__: 1, 3, 5, etc. (hop-by-hop and end-to-end)
+# __SID_LOW__: 1000, 1001, 1002, etc. (Session-Id sequence append)
+# __MSISDN__:  5555100000, 5555100001, 5555100002, etc. (First and Third Address-Data)
+# __IMSI__:    262075555100000, 262075555100001, 262075555100002, etc. (Second Address-Data)
+
+OFFSET=$((SEQN-1))
+
+HBH_ETE=$((1 + 2*OFFSET))
+SID_LOW=$((1000+OFFSET))
+MSISDN=$((5555100000+OFFSET))
+IMSI=$((262075555100000+OFFSET))
+
+cat sms.msk | sed 's/__HBH_ETE__/'$HBH_ETE'/g' | sed 's/__SID_LOW__/'$SID_LOW'/' \
+            | sed 's/__MSISDN__/'$MSISDN'/' | sed 's/__IMSI__/'$IMSI'/'
diff --git a/example/diameter/launcher/resources/answerXml.sh b/example/diameter/launcher/resources/answerXml.sh
deleted file mode 100755 (executable)
index ce4aa40..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash
-> curl_log.txt
-TRACE="--trace-ascii curl_log.txt"
-SERVER=`cat .httpServer`
-
-echo
-echo
-echo "Use: $0 [xml_file] [2e]"
-echo
-echo "Programm 'xml_file' answer to the diameter client or to the server (entity) when"
-echo "'2e' parameter is provided. If missing xml file, current programmed answers will"
-echo "be shown: '$0' (answers to client), '$0 2e' (answers to server)."
-echo
-if test "$1" != ""
-then
-   if test "$1" = "2e"
-   then
-     operation="answerxml2e"
-   else 
-     [[ ! -f "$1" ]] && { echo "ERROR: file '$1' not found" ; echo; echo; exit ; }
-     operation="answerxml|$1"
-     [[ "$2" = "2e" ]] && operation="answerxml2e|$1"
-   fi
-else
-   operation="answerxml"
-fi
-echo
-curl -m 1 --data "$operation" $TRACE ${SERVER}
-
diff --git a/example/diameter/launcher/resources/args.txt b/example/diameter/launcher/resources/args.txt
deleted file mode 100755 (executable)
index d5f4afb..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
--httpServer `grep -v ^# .httpServer`
--dictionary `grep -v ^# .dictionary`
--diameterServer `grep -v ^# .diameterServer`
--diameterServerSessions `grep -v ^# .diameterServerSessions`
--entity `grep -v ^# .entity`
--entityServerSessions `grep -v ^# .entityServerSessions`
diff --git a/example/diameter/launcher/resources/basic/README b/example/diameter/launcher/resources/basic/README
new file mode 100644 (file)
index 0000000..dc46f77
--- /dev/null
@@ -0,0 +1,33 @@
+ABOUT CONTENT
+-------------
+Template for xml messages (message.dtd) and dictionaries (dictionary.dtd) are informative, not
+actually required by process. They are located at './DTDs'. Stacks are available at './stacks'.
+There are also some stuff (hex/xml examples, etc.) which could be useful.
+
+Firstly you have to configure this directory in order to choose the type of launcher which will
+be preconfigured for your basic needs: client, server, balancer (proxy) and dummy process (this
+last is used for code/encode and does not launch any communication interface).
+
+If you are going to launch different processes, we recommend to clone this whole directory into
+another one (call it 'ADL-client', 'ADL-server_2', 'Diameter_proxy', or whatever you want), and
+then configure it again.
+
+Execute './configure.sh' and follow the intructions. You can call this several times, but the
+last configuration will be the one which prevails.
+
+STARTING THE PROCESS
+--------------------
+After configuring the ADL execution context, a new script has been created: 'run.sh'.
+You can manually edit such script adding parameters as '-trace debug' to get complete traces,
+or adapt the communication endpoints for your environment.
+
+Launch the executable process without arguments to see a complete command-line help.
+Don't be scared. There are plenty of possibilities but the 'run.sh' script has been prepared
+for the type of launcher you wanted.
+
+OPERATION
+---------
+Management interface for lite version is based on SIGUSR2 signal caugh. Use './operation.sh'
+script to send any operation to the process. Ask for help with that script to see all the
+operations supported.
+
diff --git a/example/diameter/launcher/resources/basic/configure.sh b/example/diameter/launcher/resources/basic/configure.sh
new file mode 100755 (executable)
index 0000000..39a1e82
--- /dev/null
@@ -0,0 +1,106 @@
+#!/bin/bash
+
+#############
+# VARIABLES #
+#############
+
+# Diameter dictionary:
+STD_DICTIONARY=stacks/avps_etsi.xml,stacks/avps_ietf.xml,stacks/avps_tgpp.xml,stacks/commands_baseProtocol.xml
+APP_DICTIONARY=stacks/commands_pccPS_EricssonSAPC_se.xml
+DICTIONARY=$STD_DICTIONARY,$APP_DICTIONARY
+# Perhaps the stack is not fully defined:
+KINDNESS=-ignoreErrors
+
+# Communication endpoints:
+LOCAL_STANDARD_ENDPOINT=localhost:3868
+EXAMPLE_ENTITY_4_BALANCER=192.168.12.11:3868,192.168.12.21:3868
+CONNS=10
+
+# General
+EXE_BN=ADL-launcher
+
+# Tracing:
+TRACING="-cntDir counters"
+# need detailed traces ?:
+#TRACING="$TRACING -trace debug"
+
+#############
+# FUNCTIONS #
+#############
+
+_exit () {
+  echo
+  echo $1
+  echo
+  exit 1
+}
+
+# $1: process name
+createRunScript () {
+
+  cat << EOF > run.sh
+#!/bin/bash
+cd \`dirname \$0\`
+STARTED=\`pgrep $1 2>/dev/null\`
+[ \$? -eq 0 ] && { echo "Already started!"; echo "\$STARTED" ; exit 1 ; }
+0> launcher.traces
+# Execution line:
+./$@ &
+echo \$! > .pid
+EOF
+
+  chmod a+x run.sh
+}
+
+# $1: input option (c, s, b, d)
+# Retuns the type of launcher logical name for the input option
+get_tol () {
+  [ "$1" = "c" ] && echo client
+  [ "$1" = "s" ] && echo server
+  [ "$1" = "b" ] && echo balancer
+  [ "$1" = "d" ] && echo dummy
+}
+
+#############
+# EXECUTION #
+#############
+cd `dirname $0`
+SCR_DIR=`pwd`
+echo
+echo
+echo "Configure a (c)lient, (s)erver, (b)alancer or (d)ummy [c]:"
+read option
+[ "$option" = "" ] && option=c
+tol=$(get_tol $option)
+[ "$tol" = "" ] && _exit "Option '$option' not implemented !!"
+
+# Run script:
+EXE_LINK=ADL-$tol
+ln -sf $EXE_BN $EXE_LINK
+
+case $tol in
+
+  client)
+    ENTITY=$LOCAL_STANDARD_ENDPOINT
+    createRunScript $EXE_LINK -dictionary $DICTIONARY -entity $ENTITY -entityServerSessions $CONNS -diameterServerSessions 0 $KINDNESS $TRACING &
+    ;;
+
+  server)
+    SERVER=$LOCAL_STANDARD_ENDPOINT
+    createRunScript $EXE_LINK -dictionary $DICTIONARY -diameterServer $SERVER -diameterServerSessions $CONNS -entityServerSessions 0 $KINDNESS $TRACING &
+    ;;
+
+  balancer)
+    SERVER=$LOCAL_STANDARD_ENDPOINT
+    ENTITY=$EXAMPLE_ENTITY_4_BALANCER
+    createRunScript $EXE_LINK -dictionary $DICTIONARY -entity $ENTITY -entityServerSessions $CONNS -diameterServer $SERVER -diameterServerSessions $CONNS -balance $KINDNESS $TRACING &
+    ;;
+
+  dummy)
+    createRunScript $EXE_LINK -dictionary $DICTIONARY -entityServerSessions 0 -diameterServerSessions 0 $KINDNESS $TRACING &
+    ;;
+
+esac
+
+echo "Created 'run.sh' script !"
+echo
diff --git a/example/diameter/launcher/resources/basic/hex_examples/tspCCA.hex b/example/diameter/launcher/resources/basic/hex_examples/tspCCA.hex
new file mode 100644 (file)
index 0000000..401687a
--- /dev/null
@@ -0,0 +1 @@
+0100018c4000011001000016ff7f245e9b81ce71000001074000003f63302d31302d37302d3233382d37342d7735703176657067312e766570632e6572696373736f6e2e73653b313430323932373534343b33000000010c4000000c000007d10000010840000019657063322e6570637265616c6d2e636f6d00000000000128400000146570637265616c6d2e636f6d000001026000000c01000016000001a06000000c000000010000019f6000000c00000000000003f8c000002c000028af00000410c0000010000028af004e200000000411c0000010000028af0007d00000000419c0000058000028af00000404c0000010000028af000000060000040ac000003c000028af00000416c0000010000028af000000030000041780000010000028af000000010000041880000010000028af000000000000027480000038000028af0000010a4000000c000028af0000027580000010000028af000000010000027680000010000028af00000003000003ffc0000010000028af00000002000001164000000c00000005
diff --git a/example/diameter/launcher/resources/basic/hex_examples/tspCCR.hex b/example/diameter/launcher/resources/basic/hex_examples/tspCCR.hex
new file mode 100644 (file)
index 0000000..492384a
--- /dev/null
@@ -0,0 +1 @@
+010002e8c000011001000016ff7f245e9b81ce71000001074000003f63302d31302d37302d3233382d37342d7735703176657067312e766570632e6572696373736f6e2e73653b313430323932373534343b3300000001026000000c01000016000001084000003263302d31302d37302d3233382d37342d7735703176657067312e766570632e6572696373736f6e2e736500000000012840000018766570632e6572696373736f6e2e73650000011b600000146570637265616c6d2e636f6d000001a06000000c000000010000019f6000000c0000000000000017c000000e000028af80010000000001166000000c00000000000001bb60000028000001c26000000c00000000000001bc60000013343637303139343034313800000000086000000c0a46ee6200000403c0000010000028af0000000500000015e000000d000028af060000000000040880000010000028af000003ec000001ca6000002c000001cb2000000c00000000000001cc2000001833353734373330343030363632383030000003f8c000002c000028af0000041080000010000028af08f0d1800000041180000010000028af02faf0800000041980000058000028af00000404c0000010000028af000000090000040ac000003c000028af0000041680000010000028af000000020000041780000010000028af000000010000041880000010000028af0000000000000012e0000011000028af32343039390000000000041a80000012000028af00010a46ee3a000000000016c0000019000028af8242f099006742f0990186a4010000000000001e6000000d7665706731000000000003e8c0000010000028af0000000000000400c0000010000028af00000001000001f5c0000012000028af00010a46ee3a0000000003fec0000020000028af000001f7c0000013000028af34383030303438000000027480000038000028af0000010a4000000c000028af0000027580000010000028af000000010000027680000010000028af00000003
diff --git a/example/diameter/launcher/resources/basic/operation.sh b/example/diameter/launcher/resources/basic/operation.sh
new file mode 100755 (executable)
index 0000000..5f3afc0
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+#############
+# FUNCTIONS #
+#############
+_exit () {
+  echo
+  echo -e $1
+  echo
+  exit 1
+}
+
+#############
+# EXECUTION #
+#############
+cd `dirname $0`
+echo
+# Get the PID:
+[ ! -f .pid ] && _exit "Can't found '`pwd`/.pid'.\nTry to pgrep your process name and dump pid to that file."
+PID=`cat .pid`
+
+# Send operation:
+[ "$1" = "" ] && _exit "Use: $0 <operation string>; i.e.: $0 help"
+echo $1 > sigusr2.tasks.input
+kill -s SIGUSR2 $PID
+
+sleep 1
+echo
+echo
+echo "You could see results on '`pwd`/sigusr2.tasks.output' file."
+echo
+echo
+
diff --git a/example/diameter/launcher/resources/basic/xml_examples/ccr.xml b/example/diameter/launcher/resources/basic/xml_examples/ccr.xml
new file mode 100644 (file)
index 0000000..46483a2
--- /dev/null
@@ -0,0 +1,44 @@
+<message version="1" name="Credit-Control-Request" p-bit="yes" application-id="4" hop-by-hop-id="1" end-by-end-id="1">
+   <avp name="Session-Id" data="module-2.PTS2-BOG.sandvine.com;1287115741;0;0"/>
+   <avp name="Origin-Host" data="module-2.PTS2-BOG.sandvine.com"/>
+   <avp name="Origin-Realm" data="sandvine.com"/>
+   <avp name="Destination-Realm" data="telefonica.com.co"/>
+   <avp name="Auth-Application-Id" data="4"/>
+   <avp name="Service-Context-Id" data="770.32251@3gpp.org"/>
+   <avp name="CC-Request-Type" data="1" alias="INITIAL_REQUEST"/>
+   <avp name="CC-Request-Number" data="0"/>
+   <avp name="User-Name" data="50583211675"/>
+   <avp name="Origin-State-Id" data="1339077627"/>
+   <avp name="Event-Timestamp" data="3548171033"/>
+   <avp name="Subscription-Id">
+      <avp name="Subscription-Id-Type" data="0" alias="END_USER_E164"/>
+      <avp name="Subscription-Id-Data" data="50583211675"/>
+   </avp>
+   <avp name="Multiple-Services-Indicator" data="1" alias="MULTIPLE_SERVICES_SUPPORTED"/>
+   <avp name="User-Equipment-Info">
+      <avp name="User-Equipment-Info-Type" data="0" alias="IMEISV"/>
+      <avp name="User-Equipment-Info-Value" hex-data="33353430343630343130363438333030"/>
+   </avp>
+   <avp name="Service-Information">
+      <avp name="PS-Information">
+         <avp name="3GPP-Charging-Id" data="29"/>
+         <avp name="3GPP-PDP-Type" data="0" alias="IPV4"/>
+         <avp name="PDP-Address" data="10.193.49.133"/>
+         <avp name="3GPP-GPRS-Neg-QoS-Profile" data="05-1b921f7196fefe74fbfefe00"/>
+         <avp name="SGSN-Address" data="190.98.183.240"/>
+         <avp name="GGSN-Address" data="190.98.183.243"/>
+         <avp name="CG-Address" data="10.193.249.1"/>
+         <avp name="3GPP-IMSI-MCC-MNC" data="71204"/>
+         <avp name="3GPP-GGSN-MCC-MNC" data="71204"/>
+         <avp name="3GPP-NSAPI" data="5"/>
+         <avp name="Called-Station-Id" data="internet.movistar.ni"/>
+         <avp name="3GPP-Selection-Mode" data="0"/>
+         <avp name="3GPP-Charging-Characteristics" data="0800"/>
+         <avp name="3GPP-SGSN-MCC-MNC" data="33403"/>
+         <avp name="3GPP-MS-TimeZone" hex-data="4a00"/>
+         <avp name="3GPP-User-Location-Info" hex-data="0117f240a4780218"/>
+         <avp name="3GPP-Rat-Type" hex-data="01"/>
+         <avp name="PDP-Context-Type" data="0"/>
+      </avp>
+   </avp>
+</message>
diff --git a/example/diameter/launcher/resources/batch.sh b/example/diameter/launcher/resources/batch.sh
deleted file mode 100755 (executable)
index 9699243..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/bin/bash
-> curl_log.txt
-TRACE="--trace-ascii curl_log.txt"
-SERVER=`cat .httpServer`
-
-use () {
-
-   echo "Use: $0 <test file> [time between operations: 0 second by default]"
-   echo
-   echo "     Batch launcher script"
-   echo "     ---------------------"
-   echo
-   echo "     Test file must contain a operations with this syntax: <description>|<operation>|<arg1>|..."
-   echo "     Three operations: code, decode and sendxml:"
-   echo
-   echo "       code|<source>|<target>      i.e.: code|1.xml|2.hex"
-   echo "       decode|<source>|<target>    i.e.: decode|2.hex|1.xml-bis"
-   echo "       sendxml|<source>            i.e.: sendxml|1.xml"
-   echo
-   echo "     Test file example:"
-   echo
-   echo "     $0 1xml-23.txt"
-   echo
-   echo "     where 1xml-23.txt contains:"
-   echo "        Encode 1.xml to 2.hex|code|1.xml|2.hex"
-   echo "        Decode 2.hex to 3.xml (we will diff 1.xml and 3.xml)|decode|2.hex|3.xml"
-   echo
-   echo
-   echo "     Test file could contain any number of operations and could include comments (will be ignored)."
-   echo
-   exit
-}
-
-echo
-echo
-[[ "$1" = "" ]] && use
-LAPSE=${2:-0}
-echo
-echo "Test '$1' is going to be launched:"
-echo
-cat $1
-echo
-echo "Pulse ENTER para lanzar, CTRL+C para abortar..."
-read dummy
-
-while read -r line
-do
-   comment=$(echo $line | grep "^#")
-   ok=
-   [[ "$comment" = "" ]] && { [[ "$line" != "" ]] && ok=s ; }
-   if test "$ok" = "s"
-   then
-      echo "Launching $(echo $line | cut -d'|' -f1) ..."
-      sleep $LAPSE
-      operation=$(echo $line | cut -d'|' -f2-)
-      curl -m 1 --data "$operation" $TRACE ${SERVER}
-   fi
-
-done < $1
-
diff --git a/example/diameter/launcher/resources/burst.sh b/example/diameter/launcher/resources/burst.sh
deleted file mode 100755 (executable)
index b05b6e0..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-#!/bin/bash
-> curl_log.txt
-TRACE="--trace-ascii curl_log.txt"
-SERVER=`cat .httpServer`
-burstMargin__dflt=1
-
-salir () {
-   echo
-   echo $1
-   echo
-   exit
-}
-
-calc () { echo "$1" | bc -l ; }
-
-entero () {
-   limpio=$(calc "scale=0;${1}/1")
-   [[ $limpio != $1 ]] && salir "Invalid value '$1'. Must be integer"
-}
-
-uso () {
-
-   echo "Load tests configuration script"
-   echo
-   echo "Use: $0 <action: clear | load | start | push | pop | stop | resume | repeat | send | goto | look> [action parameters]"
-   echo
-   echo "     clear:"
-   echo "        Clears all loaded burst messages."
-   echo
-   echo "     load <amount> <traffic type: mms | sms | voice | data | content>:"
-   echo "        Loads 'amount' messages for the provided traffic type. For example:"
-   echo "           $0 load 2000 sms"
-   echo
-   echo "     start [initial launch: default $burstMargin__dflt]:"
-   echo "        Starts the message sending from the begining of the burst list loaded,"
-   echo "        with a certain initial load. For example:"
-   echo "           $0 start 200"
-   echo
-   echo "     push [amount: default $burstMargin__dflt]:"
-   echo "        Launch 'amount' messages as initial load does (non-asynchronous mode)."
-   echo "        It works even if burst launch is stopped. Useful to achieve congestion"
-   echo "        conditions. For example:"
-   echo "           $0 push 300"
-   echo
-   echo "     pop [amount: default $burstMargin__dflt]:"
-   echo "        Skip send burst messages in order to reduce over-the-air requests."
-   echo
-   echo "     stop:"
-   echo "        Stops the burst cycle at the current position. It could affect sessions"
-   echo "        on the air (i.e. data contexts). Totally safe for IEC scenaries as SMS."
-   echo
-   echo "     resume:"
-   echo "        Resume an stopped burst launch from the same point (start will reset"
-   echo "        the work pointer to the first burst list position). This is equivalent" 
-   echo "        to one-message-push operation."
-   echo
-   echo "     repeat [[yes] | no]:"
-   echo "        Restarts the burst launch cycle when finished."
-   echo
-   echo "     send [amount: default 1]:"
-   echo "        send messages from burst list. The main difference with start/push operations"
-   echo "        is that burst won't be awaken. Externally we could control sending time (no"
-   echo "        request will be sent for answers). When reach the last position, starts again."
-   echo
-   echo "     sendXS <requests per second> [amount: default -1 (no limit)]:"
-   echo "        send messages from burst list with the TPS provided. User could hot change"
-   echo "        speed by mean 'echo <TPS> > .tps' at another shell. You can stop the load"
-   echo "        removing that hidden file or using CTRL+C from the shell where you launched"
-   echo "        the burst command. Real tps is dumped on '.real_tps' file during testing."
-   echo "        You could limit the amount of messages sent by mean the second parameter."
-   echo "        No limit is established by default (-1 or negative value)."
-   echo
-   echo "     goto <order>:"
-   echo "        Updates current burst pointer position."
-   echo
-   echo "     look <order>:"
-   echo "        Show programmed burst message for order provided."
-   echo
-   echo
-   salir 
-}
-
-_curl () {
-   curl -m 5 --data "$1" $TRACE ${SERVER}
-}
-
-echo
-echo
-[[ "$1" = "" ]] && uso
-case $1 in
-   clear) _curl "burst|clear"
-   ;;
-   load) [[ "$3" = "" ]] && uso
-         [[ ! -f "${3}.sh" ]] && salir "Burst generation file '${3}.sh' not found!"
-         entero $2
-         if test "$3" = "data"
-         then
-            count=$2
-            RESTO=$((count%4))
-            [[ "$RESTO" != "0" ]] && salir "Data context should load a multiple of 4 (messages generated by data.sh)" 
-         fi
-         count=1
-         while test "$count" -le "$2"
-         do
-            ${3}.sh $count > .${3}.xml
-            echo -n "Loading message ${count}; "
-            _curl "burst|load|.${3}.xml"
-            count=$((count+1))
-         done
-   ;;
-   start) load=$burstMargin__dflt
-          [[ "$2" != "" ]] && load=$2
-          entero $load
-          _curl "burst|start|$load"
-   ;;
-   pop) release=$burstMargin__dflt
-          [[ "$2" != "" ]] && release=$2
-          entero $release
-          _curl "burst|pop|$release"
-   ;;
-   push) [[ "$2" = "" ]] && uso
-         entero $2
-         _curl "burst|push|$2"
-   ;;
-   stop) _curl "burst|stop"
-   ;;
-   resume) _curl "burst|push|1"
-   ;;
-   repeat) repeat=yes
-          [[ "$2" != "" ]] && repeat=$2
-          _curl "burst|repeat|$repeat"
-   ;;
-   send) amount=1
-         [[ "$2" != "" ]] && amount=$2
-         entero $amount
-         _curl "burst|send|$amount"
-   ;;
-   sendXS) [[ "$2" = "" ]] && uso
-         limit=$3
-         [[ "$limit" = "" ]] && limit=-1
-         entero $2
-         entero $limit
-         TPS=0
-         count=0
-         amount=1
-         echo $2 > .tps
-         while test -f .tps
-         do
-            [[ "$count" = "$limit" ]] && break
-            BEFORE_ns=`date +%s%N`
-            READ_TPS=`cat .tps`
-            # Hot change could make .tps still unavailable:
-            [[ "$READ_TPS" = "" ]] && READ_TPS=$TPS
-            # Volvemos a calcular medias (REAL_TPS) cada 10 segundos o cuando cambia el TPS en caliente:
-            [[ "$READ_TPS" != "$TPS" ]] && { BEGIN_ns=$BEFORE_ns ; count=0 ; }
-            [[ $count = $((10*TPS)) ]] && { BEGIN_ns=$BEFORE_ns ; count=0 ; }
-            TPS=$READ_TPS
-            [[ "$TPS" = "0" ]] && salir "Test stopped due to 0-tps value read"
-            # Background:
-            _curl "burst|send|$amount" &
-            count=$((count+amount))
-            AFTER_ns=`date +%s%N`
-            # Real tps:
-            REAL_TPS=$(calc "1000000000 * $count / ($AFTER_ns - $BEGIN_ns)")
-            echo $REAL_TPS > .real_tps
-            
-            COEF=1
-            [[ $(calc "$TPS > $REAL_TPS") = "1" ]] && COEF=$(calc "$REAL_TPS / $TPS")
-            K=$(calc "$COEF ^ 10")
-            amount=$(calc "scale=0;1/$K")
-            usleep $(calc "$K * 1000000/$TPS")
-         done
-   ;;
-   goto) [[ "$2" = "" ]] && uso
-         entero $2
-         _curl "burst|goto|$2"
-   ;;
-   look) [[ "$2" = "" ]] && uso
-         entero $2
-         _curl "burst|look|$2"
-   ;;
-   *) uso
-esac
-
diff --git a/example/diameter/launcher/resources/clientSocketManager.sh b/example/diameter/launcher/resources/clientSocketManager.sh
deleted file mode 100755 (executable)
index 4c801b2..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/bin/bash
-> curl_log.txt
-TRACE="--trace-ascii curl_log.txt"
-SERVER=`cat .httpServer`
-ENTITY=`cat .entity 2>/dev/null`
-# If missing following, 1 is assigned (ENTITY_SS_1 is ENTITY_SS - 1)
-ENTITY_SS=`cat .entityServerSessions 2>/dev/null`
-[[ "$ENTITY_SS" = "" ]] && ENTITY_SS=1
-TARGET=$2
-
-use () {
-   echo
-   echo
-   echo "Use: $0 <hide|show|hidden|shown> \"[<address>:<port>]|[socket id]\""
-   echo
-   echo "Hides/shows/query hidden state/query shown state, the socket/s provided."
-   echo "If missing server (first parameter) all applications sockets will be affected by action."
-   echo "If missing socket (second parameter) for specific server, all its sockets will be affected by action."
-   echo
-   exit
-}
-
-states () {
-   echo
-   echo "Select option to switch (0 = quit):"
-   echo
-   option=1 
-   for i in `echo $ENTITY | sed 's/,/ /g'`
-   do
-      for j in `seq 0 $ENTITY_SS_1`
-      do
-         TARGET="${i}|${j}"
-         RES=$(curl -m 1 --data "shown|$TARGET" ${SERVER} 2>&1 | tail -1 | grep "true$")
-         res=hidden
-         [[ "$RES" != "" ]] && res=shown
-         echo "${option}. $TARGET     ($res)"
-         action=show
-         [[ "$RES" != "" ]] && action=hide
-         echo "curl -m 1 --data \"$action|$TARGET\" ${SERVER}" > .switch_${option}
-         chmod a+x .switch_${option}
-         option=$((option+1))
-      done
-   done
-   echo
-}
-
-if test "$ENTITY" != ""
-then
-   ENTITY_SS_1=$((ENTITY_SS-1))
-   while true
-   do
-      states
-      read option
-      [[ "$option" = "0" ]] && break
-      .switch_${option} 
-   done
-   echo
-   echo "Exiting"
-   rm .switch_*
-   exit
-else
-   [[ "$1" = "" ]] && use
-fi
-
-echo
-echo
-operation="$1|$TARGET"
-[[ "$TARGET" = "" ]] && operation="$1"
-curl -m 1 --data "$operation" $TRACE ${SERVER}
-
diff --git a/example/diameter/launcher/resources/code.sh b/example/diameter/launcher/resources/code.sh
deleted file mode 100755 (executable)
index 9ca200c..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash
-> curl_log.txt
-TRACE="--trace-ascii curl_log.txt"
-SERVER=`cat .httpServer`
-
-use () {
-
-   echo "Use: $0 <xml_file>"
-   echo
-   echo "Creates '<xml_file>.hex' with encoded result."
-   echo
-   exit
-}
-
-echo
-[[ "$1" = "" ]] && use
-[[ ! -f "$1" ]] && { echo "ERROR: file '$1' not found" ; echo; echo; exit ; }
-echo
-operation="code|$1|${1}.hex"
-curl -m 1 --data "$operation" $TRACE ${SERVER}
-
diff --git a/example/diameter/launcher/resources/collect.sh b/example/diameter/launcher/resources/collect.sh
deleted file mode 100755 (executable)
index 5fb95ec..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/bash
-> curl_log.txt
-TRACE="--trace-ascii curl_log.txt"
-SERVER=`cat .httpServer`
-curl -m 1 --data "collect" $TRACE ${SERVER}
-
diff --git a/example/diameter/launcher/resources/data-initial.msk b/example/diameter/launcher/resources/data-initial.msk
deleted file mode 100644 (file)
index fa6d324..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<message version="1" name="Credit-Control-Request" p-bit="yes" application-id="4" hop-by-hop-id="__HBH_ETE__" end-by-end-id="__HBH_ETE__">
-   <avp name="Session-Id" data="__SID_DI__;__SID_HIGH__;__SID_LOW__;__SID_SUFFIX__"/>
-   <avp name="Origin-Host" data="__SID_DI__"/>
-   <avp name="Origin-Realm" data="sandvine.com"/>
-   <avp name="Destination-Realm" data="telefonica.com.co"/>
-   <avp name="Auth-Application-Id" data="4"/>
-   <avp name="Service-Context-Id" data="770.32251@3gpp.org"/>
-   <avp name="CC-Request-Type" data="1" alias="INITIAL_REQUEST"/>
-   <avp name="CC-Request-Number" data="0"/>
-   <avp name="User-Name" data="__MSISDN__"/>
-   <avp name="Origin-State-Id" data="1339077627"/>
-   <avp name="Event-Timestamp" data="__NTPTIMESTAMP__"/>
-   <avp name="Subscription-Id">
-      <avp name="Subscription-Id-Type" data="0" alias="END_USER_E164"/>
-      <avp name="Subscription-Id-Data" data="__MSISDN__"/>
-   </avp>
-   <avp name="Multiple-Services-Indicator" data="1" alias="MULTIPLE_SERVICES_SUPPORTED"/>
-   <avp name="User-Equipment-Info">
-      <avp name="User-Equipment-Info-Type" data="0" alias="IMEISV"/>
-      <avp name="User-Equipment-Info-Value" hex-data="33353430343630343130363438333030"/>
-   </avp>
-   <avp name="Service-Information">
-      <avp name="PS-Information">
-         <avp name="3GPP-Charging-Id" data="29"/>
-         <avp name="3GPP-PDP-Type" data="0" alias="IPV4"/>
-         <avp name="PDP-Address" data="10.193.49.133"/>
-         <avp name="3GPP-GPRS-Neg-QoS-Profile" data="05-1b921f7196fefe74fbfefe00"/>
-         <avp name="SGSN-Address" data="190.98.183.240"/>
-         <avp name="GGSN-Address" data="190.98.183.243"/>
-         <avp name="CG-Address" data="10.193.249.1"/>
-         <avp name="3GPP-IMSI-MCC-MNC" data="71204"/>
-         <avp name="3GPP-GGSN-MCC-MNC" data="71204"/>
-         <avp name="3GPP-NSAPI" data="5"/>
-         <avp name="Called-Station-Id" data="internet.movistar.ni"/>
-         <avp name="3GPP-Selection-Mode" data="0"/>
-         <avp name="3GPP-Charging-Characteristics" data="0800"/>
-         <avp name="3GPP-SGSN-MCC-MNC" data="33403"/>
-         <avp name="3GPP-MS-TimeZone" hex-data="4a00"/>
-         <avp name="3GPP-User-Location-Info" hex-data="0117f240a4780218"/>
-         <avp name="3GPP-Rat-Type" hex-data="01"/>
-         <avp name="PDP-Context-Type" data="0"/>
-      </avp>
-   </avp>
-</message>
diff --git a/example/diameter/launcher/resources/data-termination.msk b/example/diameter/launcher/resources/data-termination.msk
deleted file mode 100644 (file)
index f15396f..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<message version="1" name="Credit-Control-Request" p-bit="yes" application-id="4" hop-by-hop-id="__HBH_ETE__" end-by-end-id="__HBH_ETE__">
-   <avp name="Session-Id" data="__SID_DI__;__SID_HIGH__;__SID_LOW__;__SID_SUFFIX__"/>
-   <avp name="Origin-Host" data="__SID_DI__"/>
-   <avp name="Origin-Realm" data="sandvine.com"/>
-   <avp name="Destination-Realm" data="telefonica.com.co"/>
-   <avp name="Auth-Application-Id" data="4"/>
-   <avp name="Service-Context-Id" data="770.32251@3gpp.org"/>
-   <avp name="CC-Request-Type" data="3" alias="TERMINATION_REQUEST"/>
-   <avp name="CC-Request-Number" data="3"/>
-   <avp name="Destination-Host" data="mqmty1besdp1.movistar.pa"/>
-   <avp name="User-Name" data="__MSISDN__"/>
-   <avp name="Origin-State-Id" data="1339077627"/>
-   <avp name="Event-Timestamp" data="__NTPTIMESTAMP__"/>
-   <avp name="Subscription-Id">
-      <avp name="Subscription-Id-Type" data="0" alias="END_USER_E164"/>
-      <avp name="Subscription-Id-Data" data="__MSISDN__"/>
-   </avp>
-   <avp name="Termination-Cause" data="1" alias="DIAMETER_LOGOUT"/>
-   <avp name="Multiple-Services-Indicator" data="1" alias="MULTIPLE_SERVICES_SUPPORTED"/>
-   <avp name="Multiple-Services-Credit-Control">
-      <avp name="Used-Service-Unit">
-         <avp name="CC-Total-Octets" data="524288"/>
-         <avp name="CC-Input-Octets" data="424288"/>
-         <avp name="CC-Output-Octets" data="100000"/>
-         <avp name="Reporting-Reason" data="2" alias="FINAL"/>
-      </avp>
-      <avp name="Rating-Group" data="99"/>
-   </avp>
-   <avp name="User-Equipment-Info">
-      <avp name="User-Equipment-Info-Type" data="0" alias="IMEISV"/>
-      <avp name="User-Equipment-Info-Value" hex-data="33353430343630343130363438333030"/>
-   </avp>
-   <avp name="Service-Information">
-      <avp name="PS-Information">
-         <avp name="3GPP-Charging-Id" data="29"/>
-         <avp name="3GPP-PDP-Type" data="0" alias="IPV4"/>
-         <avp name="PDP-Address" data="10.193.49.133"/>
-         <avp name="3GPP-GPRS-Neg-QoS-Profile" data="05-1b921f7196fefe74fbfefe00"/>
-         <avp name="SGSN-Address" data="190.98.183.240"/>
-         <avp name="GGSN-Address" data="190.98.183.243"/>
-         <avp name="CG-Address" data="10.193.249.1"/>
-         <avp name="3GPP-IMSI-MCC-MNC" data="71204"/>
-         <avp name="3GPP-GGSN-MCC-MNC" data="71204"/>
-         <avp name="3GPP-NSAPI" data="5"/>
-         <avp name="Called-Station-Id" data="internet.movistar.ni"/>
-         <avp name="3GPP-Session-Stop-Indicator" hex-data="ff"/>
-         <avp name="3GPP-Selection-Mode" data="0"/>
-         <avp name="3GPP-Charging-Characteristics" data="0800"/>
-         <avp name="3GPP-SGSN-MCC-MNC" data="33403"/>
-         <avp name="3GPP-MS-TimeZone" hex-data="4a00"/>
-         <avp name="3GPP-User-Location-Info" hex-data="0117f240a4780218"/>
-         <avp name="3GPP-Rat-Type" hex-data="01"/>
-      </avp>
-   </avp>
-</message>
diff --git a/example/diameter/launcher/resources/data-update1.msk b/example/diameter/launcher/resources/data-update1.msk
deleted file mode 100644 (file)
index 8883c60..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<message version="1" name="Credit-Control-Request" p-bit="yes" application-id="4" hop-by-hop-id="__HBH_ETE__" end-by-end-id="__HBH_ETE__">
-   <avp name="Session-Id" data="__SID_DI__;__SID_HIGH__;__SID_LOW__;__SID_SUFFIX__"/>
-   <avp name="Origin-Host" data="__SID_DI__"/>
-   <avp name="Origin-Realm" data="sandvine.com"/>
-   <avp name="Destination-Realm" data="telefonica.com.co"/>
-   <avp name="Auth-Application-Id" data="4"/>
-   <avp name="Service-Context-Id" data="770.32251@3gpp.org"/>
-   <avp name="CC-Request-Type" data="2" alias="UPDATE_REQUEST"/>
-   <avp name="CC-Request-Number" data="1"/>
-   <avp name="Destination-Host" data="mqmty1besdp1.movistar.pa"/>
-   <avp name="Origin-State-Id" data="1339077627"/>
-   <avp name="Event-Timestamp" data="__NTPTIMESTAMP__"/>
-   <avp name="Subscription-Id">
-      <avp name="Subscription-Id-Type" data="0" alias="END_USER_E164"/>
-      <avp name="Subscription-Id-Data" data="__MSISDN__"/>
-   </avp>
-   <avp name="Multiple-Services-Indicator" data="1" alias="MULTIPLE_SERVICES_SUPPORTED"/>
-   <avp name="Multiple-Services-Credit-Control">
-      <avp name="Requested-Service-Unit"/>
-      <avp name="Rating-Group" data="99"/>
-   </avp>
-   <avp name="User-Equipment-Info">
-      <avp name="User-Equipment-Info-Type" data="0" alias="IMEISV"/>
-      <avp name="User-Equipment-Info-Value" hex-data="33353430343630343130363438333030"/>
-   </avp>
-   <avp name="Service-Information">
-      <avp name="PS-Information">
-         <avp name="3GPP-Charging-Id" data="29"/>
-         <avp name="3GPP-PDP-Type" data="0" alias="IPV4"/>
-         <avp name="PDP-Address" data="10.193.49.133"/>
-         <avp name="3GPP-GPRS-Neg-QoS-Profile" data="05-1b921f7196fefe74fbfefe00"/>
-         <avp name="SGSN-Address" data="190.98.183.240"/>
-         <avp name="GGSN-Address" data="190.98.183.243"/>
-         <avp name="CG-Address" data="10.193.249.1"/>
-         <avp name="3GPP-IMSI-MCC-MNC" data="71204"/>
-         <avp name="3GPP-GGSN-MCC-MNC" data="71204"/>
-         <avp name="3GPP-NSAPI" data="5"/>
-         <avp name="Called-Station-Id" data="internet.movistar.ni"/>
-         <avp name="3GPP-Selection-Mode" data="0"/>
-         <avp name="3GPP-Charging-Characteristics" data="0800"/>
-         <avp name="3GPP-SGSN-MCC-MNC" data="33403"/>
-         <avp name="3GPP-MS-TimeZone" hex-data="4a00"/>
-         <avp name="3GPP-User-Location-Info" hex-data="0117f240a4780218"/>
-         <avp name="3GPP-Rat-Type" hex-data="01"/>
-      </avp>
-   </avp>
-</message>
diff --git a/example/diameter/launcher/resources/data-update2.msk b/example/diameter/launcher/resources/data-update2.msk
deleted file mode 100644 (file)
index 8784172..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<message version="1" name="Credit-Control-Request" p-bit="yes" application-id="4" hop-by-hop-id="__HBH_ETE__" end-by-end-id="__HBH_ETE__">
-   <avp name="Session-Id" data="__SID_DI__;__SID_HIGH__;__SID_LOW__;__SID_SUFFIX__"/>
-   <avp name="Origin-Host" data="__SID_DI__"/>
-   <avp name="Origin-Realm" data="sandvine.com"/>
-   <avp name="Destination-Realm" data="telefonica.com.co"/>
-   <avp name="Auth-Application-Id" data="4"/>
-   <avp name="Service-Context-Id" data="770.32251@3gpp.org"/>
-   <avp name="CC-Request-Type" data="2" alias="UPDATE_REQUEST"/>
-   <avp name="CC-Request-Number" data="2"/>
-   <avp name="Destination-Host" data="mqmty1besdp1.movistar.pa"/>
-   <avp name="User-Name" data="__MSISDN__"/>
-   <avp name="Origin-State-Id" data="1339077627"/>
-   <avp name="Event-Timestamp" data="__NTPTIMESTAMP__"/>
-   <avp name="Subscription-Id">
-      <avp name="Subscription-Id-Type" data="0" alias="END_USER_E164"/>
-      <avp name="Subscription-Id-Data" data="__MSISDN__"/>
-   </avp>
-   <avp name="Multiple-Services-Indicator" data="1" alias="MULTIPLE_SERVICES_SUPPORTED"/>
-   <avp name="Multiple-Services-Credit-Control">
-      <avp name="Requested-Service-Unit"/>
-      <avp name="Used-Service-Unit">
-         <avp name="CC-Total-Octets" data="524288"/>
-         <avp name="CC-Input-Octets" data="224288"/>
-         <avp name="CC-Output-Octets" data="300000"/>
-      </avp>
-      <avp name="Rating-Group" data="99"/>
-   </avp>
-   <avp name="User-Equipment-Info">
-      <avp name="User-Equipment-Info-Type" data="0" alias="IMEISV"/>
-      <avp name="User-Equipment-Info-Value" hex-data="33353430343630343130363438333030"/>
-   </avp>
-   <avp name="Service-Information">
-      <avp name="PS-Information">
-         <avp name="3GPP-Charging-Id" data="29"/>
-         <avp name="3GPP-PDP-Type" data="0" alias="IPV4"/>
-         <avp name="PDP-Address" data="10.193.49.133"/>
-         <avp name="3GPP-GPRS-Neg-QoS-Profile" data="05-1b921f7196fefe74fbfefe00"/>
-         <avp name="SGSN-Address" data="190.98.183.240"/>
-         <avp name="GGSN-Address" data="190.98.183.243"/>
-         <avp name="CG-Address" data="10.193.249.1"/>
-         <avp name="3GPP-IMSI-MCC-MNC" data="71204"/>
-         <avp name="3GPP-GGSN-MCC-MNC" data="71204"/>
-         <avp name="3GPP-NSAPI" data="5"/>
-         <avp name="Called-Station-Id" data="internet.movistar.ni"/>
-         <avp name="3GPP-Selection-Mode" data="0"/>
-         <avp name="3GPP-Charging-Characteristics" data="0800"/>
-         <avp name="3GPP-SGSN-MCC-MNC" data="33403"/>
-         <avp name="3GPP-MS-TimeZone" hex-data="4a00"/>
-         <avp name="3GPP-User-Location-Info" hex-data="0117f240a4780218"/>
-         <avp name="3GPP-Rat-Type" hex-data="01"/>
-      </avp>
-   </avp>
-</message>
diff --git a/example/diameter/launcher/resources/data.sh b/example/diameter/launcher/resources/data.sh
deleted file mode 100755 (executable)
index 09949ad..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/bin/bash
-
-# Generates DATA burst sequence for provided order number (1: first, 2: second, etc.)
-# We will generate a simple scenario with initial, two updates and termination, that is to say: four messages:
-#  1,2,3,4  5,6,7,8  9,10,11,12   etc.
-#
-# Category = ((Number-1) % 4) + 1 = 1 for initial, 2 for first update, 3 for second update and 4 for termination
-SEQN=$1
-OFFSET=$((SEQN-1))
-CAT=$((OFFSET%4 + 1))
-
-salir () {
-   echo
-   echo $1
-   echo
-   exit
-}
-
-check_template () {
-   [[ ! -f $1 ]] && salir "Template file ($1) not found!"
-}
-
-parse () {
-   cat $1 | sed 's/__HBH_ETE__/'$HBH_ETE'/g' | sed 's/__SID_SUFFIX__/'$SID_SUFFIX'/' \
-            | sed 's/__MSISDN__/'$MSISDN'/' | sed 's/__NTPTIMESTAMP__/'$NTP'/' \
-            | sed 's/__SID_DI__/'$SID_DI'/' | sed 's/__SID_HIGH__/'$SID_HIGH'/' | sed 's/__SID_LOW__/'$SI_LOW'/'
-}
-
-
-[[ "$SEQN" = "" ]] && salir "Use: $0 <sequence number: 1..N>"
-check_template data-initial.msk
-check_template data-update1.msk
-check_template data-update2.msk
-check_template data-termination.msk
-
-# Session-Id: '<DiameterIdentity>;<high 32 bits>;<low 32 bits>[;<optional value>="">]'
-#   <avp name="Session-Id" data="module-2.PTS2-BOG.sandvine.com;1287115741;0;49"/>
-# We will sequence the otional value with __SID_SUFFIX__, low and high will be constant.
-
-# Sequence values at templates:
-# __HBH_ETE__:    1, 3, 5, etc. (hop-by-hop and end-to-end)
-# __SID_SUFFIX__: It could be MSISDN, but we put OFFSET (0, 1, 2, 3, etc.). It's the Session-Id optional part.
-# __MSISDN__:     50583211675, 50583211676, 50583211677, etc. Used for User-Name and Subscription-Id-Data 
-# __NTPTIMESTAMP__: Four values for initial, update1, update2 and termination: 3548171033, 3548171136 (103+), 3548171136(idem), 3548171524(388+)
-#                   This initial time (aproximately 8 Jun 2012 at 19:00).
-CUARTO=$((OFFSET/4))
-HBH_ETE=$((1 + 2*OFFSET))
-SID_SUFFIX=$CUARTO
-# Example if you want to fix to two sockets (-sessionIdPartForClientSocketIdSelection must be 'optional'): SID_SUFFIX=$((CUARTO%2))
-MSISDN=$((50583211675+CUARTO))
-NTP=$((3548171033+CUARTO))
-
-# Helpers to guide derivery (fixed at the moment)
-# __SID_DI__:     Session-Id diameter identity
-# __SID_HIGH__:   Session-Id high part
-# __SID_LOW__:    Session-Id low part
-SID_DI=module-2.PTS2-BOG.sandvine.com
-SID_HIGH=1287115741
-SI_LOW=0
-
-case $CAT in
-   1) parse data-initial.msk
-   ;;
-   2) NTP=$((NTP+103))
-      parse data-update1.msk
-   ;;
-   3) NTP=$((NTP+103))
-      parse data-update2.msk
-   ;;
-   4) NTP=$((NTP+491))
-      parse data-termination.msk
-   ;;
-esac
-
diff --git a/example/diameter/launcher/resources/decode.sh b/example/diameter/launcher/resources/decode.sh
deleted file mode 100755 (executable)
index 3924f73..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash
-> curl_log.txt
-TRACE="--trace-ascii curl_log.txt"
-SERVER=`cat .httpServer`
-
-use () {
-
-   echo "Use: $0 <hex_file>"
-   echo
-   echo "Creates '<hex_file>.xml' with decoded result."
-   echo
-   exit
-}
-
-echo
-[[ "$1" = "" ]] && use
-[[ ! -f "$1" ]] && { echo "ERROR: file '$1' not found" ; echo; echo; exit ; }
-echo
-operation="decode|$1|${1}.xml"
-curl -m 1 --data "$operation" $TRACE ${SERVER}
-
diff --git a/example/diameter/launcher/resources/diameterServerSessions.sh b/example/diameter/launcher/resources/diameterServerSessions.sh
deleted file mode 100755 (executable)
index dc72c87..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-> curl_log.txt
-TRACE="--trace-ascii curl_log.txt"
-SERVER=`cat .httpServer`
-
-use () {
-
-   echo "Use: $0 <integer>"
-   echo
-   echo "Updates the maximum number of accepted connections over diameter server socket."
-   echo
-   exit
-}
-
-echo
-[[ "$1" = "" ]] && use
-echo
-operation="diameterServerSessions|$1"
-curl -m 1 --data "$operation" $TRACE ${SERVER}
-
diff --git a/example/diameter/launcher/resources/ft-client/README b/example/diameter/launcher/resources/ft-client/README
new file mode 100644 (file)
index 0000000..37c1353
--- /dev/null
@@ -0,0 +1,26 @@
+ABOUT CONTENT
+-------------
+Template for xml messages (message.dtd) and dictionaries (dictionary.dtd) are informative, not
+actually required by process. They are located at './DTDs'. Stacks are available at './stacks'.
+There are also some stuff (hex/xml examples, etc.) which could be useful.
+
+The script 'test.sh is an example of scheduler which launch a request to the server and then
+waits for a specific answer to continuing testing. Some functions could be reused to prepare
+any kind of testing. The method used is quite simple: monitor the launcher traffic log for
+incoming activity. An advanced FT test framework involves the use of the ANNA::diameter API
+in an ad-hoc diameter client executable (for example we could define an incoming handler in
+different libraries which represent different test cases, linking them to a common simple
+diameter client agent). 
+
+STARTING THE PROCESS
+--------------------
+Launch the executable process without arguments to see a complete command-line help.
+Don't be scared. There are plenty of possibilities but the 'run.sh' script has been prepared
+for the type of launcher you wanted.
+
+OPERATION
+---------
+Management interface for this version is based on SIGUSR2 signal caugh. Use './operation.sh'
+script to send any operation to the process. Ask for help with that script to see all the
+operations supported.
+
diff --git a/example/diameter/launcher/resources/ft-client/args.txt b/example/diameter/launcher/resources/ft-client/args.txt
new file mode 100755 (executable)
index 0000000..2ee9a85
--- /dev/null
@@ -0,0 +1,4 @@
+-dictionary `grep -v ^# .dictionary`
+-entity `grep -v ^# .entity`
+-entityServerSessions `grep -v ^# .entityServerSessions`
+-splitLog
diff --git a/example/diameter/launcher/resources/ft-client/hex_examples b/example/diameter/launcher/resources/ft-client/hex_examples
new file mode 120000 (symlink)
index 0000000..9eee58b
--- /dev/null
@@ -0,0 +1 @@
+../basic/hex_examples
\ No newline at end of file
diff --git a/example/diameter/launcher/resources/ft-client/operation.sh b/example/diameter/launcher/resources/ft-client/operation.sh
new file mode 120000 (symlink)
index 0000000..a61ab5e
--- /dev/null
@@ -0,0 +1 @@
+../basic/operation.sh
\ No newline at end of file
diff --git a/example/diameter/launcher/resources/ft-client/pre-start.sh b/example/diameter/launcher/resources/ft-client/pre-start.sh
new file mode 100755 (executable)
index 0000000..b1863af
--- /dev/null
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+# Remove logs:
+rm *.log* *.csv 2>/dev/null
+
+# Client sockets:
+entity_dflt=`cat .entity 2>/dev/null`
+entityServerSessions_dflt=`cat .entityServerSessions 2>/dev/null`
+
+# Stack:
+dictionary_dflt=`cat .dictionary 2>/dev/null`
+
+echo
+echo
+# If all have values:
+if [ "$entity_dflt" != ""  -a "$entityServerSessions_dflt" != "" -a "$dictionary_dflt" != "" ]
+then
+  echo "Do you wish to answer wizard commandline configuration ? (y/n) [n]:"
+  read wizard
+  [ "$wizard" = "" ] && wizard=n
+  [ "$wizard" = "n" ] && exit
+fi
+
+# DEFAULTS
+#[ "$entity_dflt" = "" ] && entity_dflt="192.168.12.11:3868,192.168.12.21:3868"
+[ "$entity_dflt" = "" ] && entity_dflt="localhost:3868"
+[ "$entityServerSessions_dflt" = "" ] && entityServerSessions_dflt=10
+[ "$dictionary_dflt" = "" ] && dictionary_dflt=dictionary.xml
+
+
+# Wizard
+echo "Diameter dictionary: you could use '/opt/bin/anna/example_diameter_stackManagement' tool in order to build"
+echo " autonomous dictionaries for any kind of application. The key is to concatenate xml contents (ietf, 3gpp,"
+echo " vendor-specific, etc.). See 'example/diameter/stackManagement/self_ruling_setups.sh' for this."
+echo
+echo "This launcher can also join them providing a comma-separated list (dictionaries available on ./stack)."
+echo "By default, a QoS Application setup is suggested. Input the desired configuration instead, or press ENTER:"
+echo
+echo " [$dictionary_dflt]:"
+read dictionary
+[ "$dictionary" = "" ] && dictionary=$dictionary_dflt
+
+# As client:
+echo "Diameter entity server sessions (0: diameter entity disabled) [$entityServerSessions_dflt]:"
+read entityServerSessions
+[ "$entityServerSessions" = "" ] && entityServerSessions=$entityServerSessions_dflt
+
+entity=
+if test "$entityServerSessions" != "0"
+then
+  echo "Target diameter entity (pipe-separated <ip|hostname>:<port> socket literal list) ["$entity_dflt"]:"
+  read entity
+fi
+[ "$entity" = "" ] && entity="$entity_dflt"
+
+# Configure:
+echo $dictionary > .dictionary
+echo $entity > .entity
+echo $entityServerSessions > .entityServerSessions
+
+echo
+echo
+
diff --git a/example/diameter/launcher/resources/ft-client/xml_examples b/example/diameter/launcher/resources/ft-client/xml_examples
new file mode 120000 (symlink)
index 0000000..903e6fe
--- /dev/null
@@ -0,0 +1 @@
+../basic/xml_examples
\ No newline at end of file
diff --git a/example/diameter/launcher/resources/help.sh b/example/diameter/launcher/resources/help.sh
deleted file mode 100755 (executable)
index ebeafff..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/bash
-> curl_log.txt
-TRACE="--trace-ascii curl_log.txt"
-SERVER=`cat .httpServer`
-curl -m 1 --data "help" $TRACE ${SERVER}
-
diff --git a/example/diameter/launcher/resources/loadXml.sh b/example/diameter/launcher/resources/loadXml.sh
deleted file mode 100755 (executable)
index 26749d5..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-> curl_log.txt
-TRACE="--trace-ascii curl_log.txt"
-SERVER=`cat .httpServer`
-
-use () {
-
-   echo "Use: $0 <xml_file>"
-   echo
-   echo "Load xml file and show on stdout again."
-   echo "It is useful to test xml loader and xml viewer, but also for show aliases and,"
-   echo "if '-ignoreFlags' commandline option is missing, for flag coherence checking."
-   echo
-   exit
-}
-
-echo
-[[ "$1" = "" ]] && use
-[[ ! -f "$1" ]] && { echo "ERROR: file '$1' not found" ; echo; echo; exit ; }
-echo
-operation="loadxml|$1"
-curl -m 1 --data "$operation" $TRACE ${SERVER}
-
diff --git a/example/diameter/launcher/resources/pre-start.sh b/example/diameter/launcher/resources/pre-start.sh
deleted file mode 100755 (executable)
index e009d71..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/bin/bash
-
-# Remove logs:
-rm *.log* *.csv 2>/dev/null
-
-# Server sockets:
-httpServer_dflt=`cat .httpServer 2>/dev/null`
-diameterServer_dflt=`cat .diameterServer 2>/dev/null`
-diameterServerSessions_dflt=`cat .diameterServerSessions 2>/dev/null`
-
-# Client sockets:
-entity_dflt=`cat .entity 2>/dev/null`
-entityServerSessions_dflt=`cat .entityServerSessions 2>/dev/null`
-
-# Stack:
-dictionary_dflt=`cat .dictionary 2>/dev/null`
-
-echo
-echo
-# If all have values:
-if [ "$httpServer_dflt" != ""  -a "$diameterServer_dflt" != "" -a "$diameterServerSessions_dflt" != "" -a \
-  "$entity_dflt" != ""  -a "$entityServerSessions_dflt" != "" -a \
-  "$dictionary_dflt" != "" ]
-then
-  echo "Do you wish to answer wizard commandline configuration ? (y/n) [n]:"
-  read wizard
-  [[ "$wizard" = "" ]] && wizard=n
-  [[ "$wizard" = "n" ]] && exit
-fi
-
-# DEFAULTS
-[[ "$httpServer_dflt" = "" ]] && httpServer_dflt="localhost:9000"
-[[ "$diameterServer_dflt" = "" ]] && diameterServer_dflt="localhost:3868"
-[[ "$diameterServerSessions_dflt" = "" ]] && diameterServerSessions_dflt=1
-[[ "$entity_dflt" = "" ]] && entity_dflt="localhost:4000,localhost:4001"
-[[ "$entityServerSessions_dflt" = "" ]] && entityServerSessions_dflt=0
-[[ "$dictionary_dflt" = "" ]] && dictionary_dflt=dictionary.xml
-
-
-# Wizard
-echo "HTTP Management interface address (using i.e. curl tool) as <ip|hostname>:<port> socket literal [$httpServer_dflt]:"
-read httpServer
-[[ "$httpServer" = "" ]] && httpServer=$httpServer_dflt
-
-echo "Diameter dictionary: you could use '/opt/bin/anna/example_diameter_stackManagement' tool in order to build"
-echo " autonomous dictionaries for any kind of application. The key is to concatenate xml contents (ietf, 3gpp,"
-echo " vendor-specific, etc.). See 'example/diameter/stackManagement/self_ruling_setups.sh' for this."
-echo
-echo "This launcher can also join them providing a comma-separated list (dictionaries available on ./stack)."
-echo "By default, a QoS Application setup is suggested. Input the desired configuration instead, or press ENTER:"
-echo
-echo " [$dictionary_dflt]:"
-read dictionary
-[[ "$dictionary" = "" ]] && dictionary=$dictionary_dflt
-
-# As server:
-echo "Diameter own server available connections (0: diameter server disabled) [$diameterServerSessions_dflt]:"
-read diameterServerSessions
-[[ "$diameterServerSessions" = "" ]] && diameterServerSessions=$diameterServerSessions_dflt
-
-diameterServer=
-if test "$diameterServerSessions" != "0"
-then
-  echo "Diameter own server address as <ip|hostname>:<port> socket literal [$diameterServer_dflt]:"
-  read diameterServer
-fi
-[[ "$diameterServer" = "" ]] && diameterServer=$diameterServer_dflt
-
-# As client:
-echo "Diameter entity server sessions (0: diameter entity disabled) [$entityServerSessions_dflt]:"
-read entityServerSessions
-[[ "$entityServerSessions" = "" ]] && entityServerSessions=$entityServerSessions_dflt
-
-entity=
-if test "$entityServerSessions" != "0"
-then
-  echo "Target diameter entity (pipe-separated <ip|hostname>:<port> socket literal list) ["$entity_dflt"]:"
-  read entity
-fi
-[[ "$entity" = "" ]] && entity="$entity_dflt"
-
-# Configure:
-echo $httpServer > .httpServer
-echo $dictionary > .dictionary
-echo $diameterServer > .diameterServer
-echo $diameterServerSessions > .diameterServerSessions
-echo $entity > .entity
-echo $entityServerSessions > .entityServerSessions
-
-echo
-echo
-
diff --git a/example/diameter/launcher/resources/sendXml.sh b/example/diameter/launcher/resources/sendXml.sh
deleted file mode 100755 (executable)
index d9aaa33..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-> curl_log.txt
-TRACE="--trace-ascii curl_log.txt"
-SERVER=`cat .httpServer`
-
-use () {
-
-   echo "Use: $0 <xml_file> [2c]"
-   echo
-   echo "Sends 'xml_file' to the diameter server or to the client when '2c' parameter is provided."
-   echo
-   exit
-}
-
-echo
-[[ "$1" = "" ]] && use
-[[ ! -f "$1" ]] && { echo "ERROR: file '$1' not found" ; echo; echo; exit ; }
-echo
-operation="sendxml|$1"
-[[ "$2" = "2c" ]] && operation="sendxml2c|$1"
-
-curl -m 1 --data "$operation" $TRACE ${SERVER}
-
diff --git a/example/diameter/launcher/resources/sms.msk b/example/diameter/launcher/resources/sms.msk
deleted file mode 100644 (file)
index 7bec3c8..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-<message version="1" name="Credit-Control-Request" p-bit="yes" application-id="4" hop-by-hop-id="__HBH_ETE__" end-by-end-id="__HBH_ETE__">
-   <avp name="Session-Id" data="gbg.acision.com;421411;__SID_LOW__"/>
-   <avp name="Origin-Host" data="gbg.acision.com"/>
-   <avp name="Origin-Realm" data="SMSC.orig.OCS2.o2online.de"/>
-   <avp name="Destination-Realm" data="SMSC.dest.OCS1.o2online.de"/>
-   <avp name="Auth-Application-Id" data="4"/>
-   <avp name="Service-Context-Id" data="8.6.0.07.262.8.32274@3gpp.org"/>
-   <avp name="CC-Request-Type" data="4" alias="EVENT_REQUEST"/>
-   <avp name="CC-Request-Number" data="1"/>
-   <avp name="Destination-Host" data="OCS1"/>
-   <avp name="Event-Timestamp" data="1"/>
-   <avp name="Subscription-Id">
-      <avp name="Subscription-Id-Type" data="0" alias="END_USER_E164"/>
-      <avp name="Subscription-Id-Data" data="__MSISDN__"/>
-   </avp>
-   <avp name="Requested-Action" data="0" alias="DIRECT_DEBITING"/>
-   <avp name="Multiple-Services-Indicator" data="0" alias="MULTIPLE_SERVICES_NOT_SUPPORTED"/>
-   <avp name="Multiple-Services-Credit-Control">
-      <avp name="Requested-Service-Unit">
-         <avp name="CC-Service-Specific-Units" data="1"/>
-      </avp>
-      <avp name="Service-Identifier" data="1"/>
-   </avp>
-   <avp name="Service-Information">
-      <avp name="MMS-Information">
-         <avp name="Originator-Address">
-            <avp name="Address-Type" data="1" alias="MSISDN"/>
-            <avp name="Address-Data" data="__MSISDN__"/>
-            <avp name="Address-Domain">
-               <avp name="3GPP-IMSI-MCC-MNC" data="26207"/>
-            </avp>
-         </avp>
-         <avp name="Originator-Address">
-            <avp name="Address-Type" data="6" alias="Other"/>
-            <avp name="Address-Data" data="__IMSI__"/>
-         </avp>
-         <avp name="Submission-Time" data="3486294858"/>
-         <avp name="Message-Size" data="4"/>
-      </avp>
-      <avp name="SMS-Information">
-         <avp name="SMS-Node" data="3" alias="SMS-SC"/>
-         <avp name="Client-Address" data="8|541760000405"/>
-         <avp name="Originator-SCCP-Address" data="8|541760000005"/>
-         <avp name="Originator-Received-Address">
-            <avp name="Address-Type" data="1" alias="MSISDN"/>
-            <avp name="Address-Data" data="__MSISDN__"/>
-            <avp name="Address-Domain">
-               <avp name="3GPP-IMSI-MCC-MNC" data="26207"/>
-            </avp>
-         </avp>
-         <avp name="Recipient-Info">
-            <avp name="Destination-Interface">
-               <avp name="Interface-Id" data="5417607020601"/>
-               <avp name="Interface-Type" data="2" alias="MOBILE_TERMINATING"/>
-            </avp>
-            <avp name="Recipient-Address">
-               <avp name="Address-Type" data="1" alias="MSISDN"/>
-               <avp name="Address-Data" data="5417607020601"/>
-               <avp name="Address-Domain">
-                  <avp name="3GPP-IMSI-MCC-MNC" data="26207"/>
-               </avp>
-            </avp>
-            <avp name="Recipient-Address">
-               <avp name="Address-Type" data="6" alias="Other"/>
-               <avp name="Address-Data" data="262074900005771"/>
-            </avp>
-            <avp name="Recipient-Received-Address">
-               <avp name="Address-Type" data="1" alias="MSISDN"/>
-               <avp name="Address-Data" data="5417607020601"/>
-               <avp name="Address-Domain">
-                  <avp name="3GPP-IMSI-MCC-MNC" data="26207"/>
-               </avp>
-            </avp>
-            <avp name="Recipient-SCCP-Address" data="8|541760000005"/>
-         </avp>
-         <avp name="SMSC-Address" data="8|541760000405"/>
-         <avp name="Data-Coding-Scheme" data="0"/>
-         <avp name="SM-Message-Type" data="0" alias="SUBMISSION"/>
-         <avp name="Originator-Interface">
-            <avp name="Interface-Id" data="262074900005771"/>
-            <avp name="Interface-Type" data="1" alias="MOBILE_ORIGINATING"/>
-         </avp>
-         <avp name="Number-Of-Messages-Sent" data="1"/>
-      </avp>
-   </avp>
-<!--
-   El Correlation Id no se usa en el Sertamsjt
-   <avp name="CC-Correlation-Id" data="gbg.acision.com;421411;__SID_LOW__"/>
--->
-</message>
diff --git a/example/diameter/launcher/resources/sms.sh b/example/diameter/launcher/resources/sms.sh
deleted file mode 100755 (executable)
index d0b1e63..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash
-
-# Generates SMS burst sequence for provided order number (1: first, 2: second, etc.)
-SEQN=$1
-
-salir () {
-   echo
-   echo $1
-   echo
-   exit
-}
-
-[[ "$SEQN" = "" ]] && salir "Use: $0 <sequence number: 1..N>"
-[[ ! -f sms.msk ]] && salir "Template file (sms.msk) not found!"
-
-# Sequence values at template sms.msk:
-# __HBH_ETE__: 1, 3, 5, etc. (hop-by-hop and end-to-end)
-# __SID_LOW__: 1000, 1001, 1002, etc. (Session-Id sequence append)
-# __MSISDN__:  5555100000, 5555100001, 5555100002, etc. (First and Third Address-Data)
-# __IMSI__:    262075555100000, 262075555100001, 262075555100002, etc. (Second Address-Data)
-
-OFFSET=$((SEQN-1))
-
-HBH_ETE=$((1 + 2*OFFSET))
-SID_LOW=$((1000+OFFSET))
-MSISDN=$((5555100000+OFFSET))
-IMSI=$((262075555100000+OFFSET))
-
-cat sms.msk | sed 's/__HBH_ETE__/'$HBH_ETE'/g' | sed 's/__SID_LOW__/'$SID_LOW'/' \
-            | sed 's/__MSISDN__/'$MSISDN'/' | sed 's/__IMSI__/'$IMSI'/'
diff --git a/example/diameter/launcher/resources_lite/README b/example/diameter/launcher/resources_lite/README
deleted file mode 100644 (file)
index dc46f77..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-ABOUT CONTENT
--------------
-Template for xml messages (message.dtd) and dictionaries (dictionary.dtd) are informative, not
-actually required by process. They are located at './DTDs'. Stacks are available at './stacks'.
-There are also some stuff (hex/xml examples, etc.) which could be useful.
-
-Firstly you have to configure this directory in order to choose the type of launcher which will
-be preconfigured for your basic needs: client, server, balancer (proxy) and dummy process (this
-last is used for code/encode and does not launch any communication interface).
-
-If you are going to launch different processes, we recommend to clone this whole directory into
-another one (call it 'ADL-client', 'ADL-server_2', 'Diameter_proxy', or whatever you want), and
-then configure it again.
-
-Execute './configure.sh' and follow the intructions. You can call this several times, but the
-last configuration will be the one which prevails.
-
-STARTING THE PROCESS
---------------------
-After configuring the ADL execution context, a new script has been created: 'run.sh'.
-You can manually edit such script adding parameters as '-trace debug' to get complete traces,
-or adapt the communication endpoints for your environment.
-
-Launch the executable process without arguments to see a complete command-line help.
-Don't be scared. There are plenty of possibilities but the 'run.sh' script has been prepared
-for the type of launcher you wanted.
-
-OPERATION
----------
-Management interface for lite version is based on SIGUSR2 signal caugh. Use './operation.sh'
-script to send any operation to the process. Ask for help with that script to see all the
-operations supported.
-
diff --git a/example/diameter/launcher/resources_lite/configure.sh b/example/diameter/launcher/resources_lite/configure.sh
deleted file mode 100755 (executable)
index 335e4ff..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-#!/bin/bash
-
-#############
-# VARIABLES #
-#############
-
-# Diameter dictionary:
-STD_DICTIONARY=stacks/avps_etsi.xml,stacks/avps_ietf.xml,stacks/avps_tgpp.xml,stacks/commands_baseProtocol.xml
-APP_DICTIONARY=stacks/commands_pccPS_EricssonSAPC_se.xml
-DICTIONARY=$STD_DICTIONARY,$APP_DICTIONARY
-# Perhaps the stack is not fully defined:
-KINDNESS=-ignoreErrors
-
-# Communication endpoints:
-LOCAL_STANDARD_ENDPOINT=localhost:3868
-EXAMPLE_ENTITY_4_BALANCER=192.168.12.11:3868,192.168.12.21:3868
-CONNS=10
-
-# General
-EXE_BN=ADL-launcher
-
-# Tracing:
-TRACING="-cntDir counters"
-# need detailed traces ?:
-#TRACING="$TRACING -trace debug"
-
-#############
-# FUNCTIONS #
-#############
-
-_exit () {
-  echo
-  echo $1
-  echo
-  exit 1
-}
-
-# $1: process name
-createRunScript () {
-
-  cat << EOF > run.sh
-#!/bin/bash
-cd \`dirname \$0\`
-EXE=\`cat .exe 2>/dev/null\`
-STARTED=\`pgrep $1 2>/dev/null\`
-[ \$? -eq 0 ] && { echo "Already started!"; echo "\$STARTED" ; exit 1 ; }
-echo $1 > .exe
-0> launcher.traces
-# Execution line:
-./$@ &
-echo \$! > .pid
-EOF
-
-  chmod a+x run.sh
-}
-
-# $1: input option (c, s, b, d)
-# Retuns the type of launcher logical name for the input option
-get_tol () {
-  [ "$1" = "c" ] && echo client
-  [ "$1" = "s" ] && echo server
-  [ "$1" = "b" ] && echo balancer
-  [ "$1" = "d" ] && echo dummy
-}
-
-#############
-# EXECUTION #
-#############
-cd `dirname $0`
-SCR_DIR=`pwd`
-echo
-echo
-echo "Configure a (c)lient, (s)erver, (b)alancer or (d)ummy [c]:"
-read option
-[ "$option" = "" ] && option=c
-tol=$(get_tol $option)
-[ "$tol" = "" ] && _exit "Option '$option' not implemented !!"
-
-# Run script:
-EXE_LINK=ADL-$tol
-ln -sf $EXE_BN $EXE_LINK
-
-case $tol in
-
-  client)
-    ENTITY=$LOCAL_STANDARD_ENDPOINT
-    createRunScript $EXE_LINK -dictionary $DICTIONARY -entity $ENTITY -entityServerSessions $CONNS -diameterServerSessions 0 $KINDNESS $TRACING &
-    ;;
-
-  server)
-    SERVER=$LOCAL_STANDARD_ENDPOINT
-    createRunScript $EXE_LINK -dictionary $DICTIONARY -diameterServer $SERVER -diameterServerSessions $CONNS -entityServerSessions 0 $KINDNESS $TRACING &
-    ;;
-
-  balancer)
-    SERVER=$LOCAL_STANDARD_ENDPOINT
-    ENTITY=$EXAMPLE_ENTITY_4_BALANCER
-    createRunScript $EXE_LINK -dictionary $DICTIONARY -entity $ENTITY -entityServerSessions $CONNS -diameterServer $SERVER -diameterServerSessions $CONNS -balance $KINDNESS $TRACING &
-    ;;
-
-  dummy)
-    createRunScript $EXE_LINK -dictionary $DICTIONARY -entityServerSessions 0 -diameterServerSessions 0 $KINDNESS $TRACING &
-    ;;
-
-esac
-
-echo "Created 'run.sh' script !"
-echo
diff --git a/example/diameter/launcher/resources_lite/hex_examples/tspCCA.hex b/example/diameter/launcher/resources_lite/hex_examples/tspCCA.hex
deleted file mode 100644 (file)
index 401687a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-0100018c4000011001000016ff7f245e9b81ce71000001074000003f63302d31302d37302d3233382d37342d7735703176657067312e766570632e6572696373736f6e2e73653b313430323932373534343b33000000010c4000000c000007d10000010840000019657063322e6570637265616c6d2e636f6d00000000000128400000146570637265616c6d2e636f6d000001026000000c01000016000001a06000000c000000010000019f6000000c00000000000003f8c000002c000028af00000410c0000010000028af004e200000000411c0000010000028af0007d00000000419c0000058000028af00000404c0000010000028af000000060000040ac000003c000028af00000416c0000010000028af000000030000041780000010000028af000000010000041880000010000028af000000000000027480000038000028af0000010a4000000c000028af0000027580000010000028af000000010000027680000010000028af00000003000003ffc0000010000028af00000002000001164000000c00000005
diff --git a/example/diameter/launcher/resources_lite/hex_examples/tspCCR.hex b/example/diameter/launcher/resources_lite/hex_examples/tspCCR.hex
deleted file mode 100644 (file)
index 492384a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-010002e8c000011001000016ff7f245e9b81ce71000001074000003f63302d31302d37302d3233382d37342d7735703176657067312e766570632e6572696373736f6e2e73653b313430323932373534343b3300000001026000000c01000016000001084000003263302d31302d37302d3233382d37342d7735703176657067312e766570632e6572696373736f6e2e736500000000012840000018766570632e6572696373736f6e2e73650000011b600000146570637265616c6d2e636f6d000001a06000000c000000010000019f6000000c0000000000000017c000000e000028af80010000000001166000000c00000000000001bb60000028000001c26000000c00000000000001bc60000013343637303139343034313800000000086000000c0a46ee6200000403c0000010000028af0000000500000015e000000d000028af060000000000040880000010000028af000003ec000001ca6000002c000001cb2000000c00000000000001cc2000001833353734373330343030363632383030000003f8c000002c000028af0000041080000010000028af08f0d1800000041180000010000028af02faf0800000041980000058000028af00000404c0000010000028af000000090000040ac000003c000028af0000041680000010000028af000000020000041780000010000028af000000010000041880000010000028af0000000000000012e0000011000028af32343039390000000000041a80000012000028af00010a46ee3a000000000016c0000019000028af8242f099006742f0990186a4010000000000001e6000000d7665706731000000000003e8c0000010000028af0000000000000400c0000010000028af00000001000001f5c0000012000028af00010a46ee3a0000000003fec0000020000028af000001f7c0000013000028af34383030303438000000027480000038000028af0000010a4000000c000028af0000027580000010000028af000000010000027680000010000028af00000003
diff --git a/example/diameter/launcher/resources_lite/operation.sh b/example/diameter/launcher/resources_lite/operation.sh
deleted file mode 100755 (executable)
index 5f3afc0..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/bash
-
-#############
-# FUNCTIONS #
-#############
-_exit () {
-  echo
-  echo -e $1
-  echo
-  exit 1
-}
-
-#############
-# EXECUTION #
-#############
-cd `dirname $0`
-echo
-# Get the PID:
-[ ! -f .pid ] && _exit "Can't found '`pwd`/.pid'.\nTry to pgrep your process name and dump pid to that file."
-PID=`cat .pid`
-
-# Send operation:
-[ "$1" = "" ] && _exit "Use: $0 <operation string>; i.e.: $0 help"
-echo $1 > sigusr2.tasks.input
-kill -s SIGUSR2 $PID
-
-sleep 1
-echo
-echo
-echo "You could see results on '`pwd`/sigusr2.tasks.output' file."
-echo
-echo
-
diff --git a/example/diameter/launcher/resources_lite/xml_examples/ccr.xml b/example/diameter/launcher/resources_lite/xml_examples/ccr.xml
deleted file mode 100644 (file)
index 46483a2..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<message version="1" name="Credit-Control-Request" p-bit="yes" application-id="4" hop-by-hop-id="1" end-by-end-id="1">
-   <avp name="Session-Id" data="module-2.PTS2-BOG.sandvine.com;1287115741;0;0"/>
-   <avp name="Origin-Host" data="module-2.PTS2-BOG.sandvine.com"/>
-   <avp name="Origin-Realm" data="sandvine.com"/>
-   <avp name="Destination-Realm" data="telefonica.com.co"/>
-   <avp name="Auth-Application-Id" data="4"/>
-   <avp name="Service-Context-Id" data="770.32251@3gpp.org"/>
-   <avp name="CC-Request-Type" data="1" alias="INITIAL_REQUEST"/>
-   <avp name="CC-Request-Number" data="0"/>
-   <avp name="User-Name" data="50583211675"/>
-   <avp name="Origin-State-Id" data="1339077627"/>
-   <avp name="Event-Timestamp" data="3548171033"/>
-   <avp name="Subscription-Id">
-      <avp name="Subscription-Id-Type" data="0" alias="END_USER_E164"/>
-      <avp name="Subscription-Id-Data" data="50583211675"/>
-   </avp>
-   <avp name="Multiple-Services-Indicator" data="1" alias="MULTIPLE_SERVICES_SUPPORTED"/>
-   <avp name="User-Equipment-Info">
-      <avp name="User-Equipment-Info-Type" data="0" alias="IMEISV"/>
-      <avp name="User-Equipment-Info-Value" hex-data="33353430343630343130363438333030"/>
-   </avp>
-   <avp name="Service-Information">
-      <avp name="PS-Information">
-         <avp name="3GPP-Charging-Id" data="29"/>
-         <avp name="3GPP-PDP-Type" data="0" alias="IPV4"/>
-         <avp name="PDP-Address" data="10.193.49.133"/>
-         <avp name="3GPP-GPRS-Neg-QoS-Profile" data="05-1b921f7196fefe74fbfefe00"/>
-         <avp name="SGSN-Address" data="190.98.183.240"/>
-         <avp name="GGSN-Address" data="190.98.183.243"/>
-         <avp name="CG-Address" data="10.193.249.1"/>
-         <avp name="3GPP-IMSI-MCC-MNC" data="71204"/>
-         <avp name="3GPP-GGSN-MCC-MNC" data="71204"/>
-         <avp name="3GPP-NSAPI" data="5"/>
-         <avp name="Called-Station-Id" data="internet.movistar.ni"/>
-         <avp name="3GPP-Selection-Mode" data="0"/>
-         <avp name="3GPP-Charging-Characteristics" data="0800"/>
-         <avp name="3GPP-SGSN-MCC-MNC" data="33403"/>
-         <avp name="3GPP-MS-TimeZone" hex-data="4a00"/>
-         <avp name="3GPP-User-Location-Info" hex-data="0117f240a4780218"/>
-         <avp name="3GPP-Rat-Type" hex-data="01"/>
-         <avp name="PDP-Context-Type" data="0"/>
-      </avp>
-   </avp>
-</message>