X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=example%2Fdiameter%2Flauncher%2Fresources%2Fscripts%2FtinyTestcase.sh;h=5beaa12d7603a9d7ef7a33904443663e1d427a46;hb=127e9289b0f410f51a364ac887b6ab7ec58ec6d7;hp=c4f4db9191ce13f5a06ced2ba0cd279198e43ee5;hpb=77105a89de724b0bc5b4b9c9f2844cb44db1de3e;p=anna.git diff --git a/example/diameter/launcher/resources/scripts/tinyTestcase.sh b/example/diameter/launcher/resources/scripts/tinyTestcase.sh index c4f4db9..5beaa12 100755 --- a/example/diameter/launcher/resources/scripts/tinyTestcase.sh +++ b/example/diameter/launcher/resources/scripts/tinyTestcase.sh @@ -6,6 +6,7 @@ SCR_DIR=`readlink -f $0 | xargs dirname` TESTCASE_BN=testcase.txt WHAT=????????? +REQUEST_STEP= ############# # FUNCTIONS # @@ -24,7 +25,7 @@ usage() { echo " source_directory:" echo " The source directory may contain .xml and .metadata files grouped by pairs and alphabetically classified," echo " and also (and this is VERY IMPORTANT), a file called 'origin-hosts' containing a list of Origin-Host" - echo " values that are used from the point of view of the ADML testing system, together with the type of the" + echo " values that represents the point of view of the ADML testing system, together with the type of the" echo " simulated ADML node (client/server):" echo echo " .hex.as.xml: ANNA-Diameter XML message format." @@ -108,9 +109,23 @@ update_testcase () { local s_wait="test|1|$wait_command|$code|$((1-isrequest))" [ -n "$sessionid" ] && s_wait="${s_wait}|||${sessionid}" + local s_send="test|1|$send_command|$xml" + if [ $isrequest -eq 1 ] then - echo "test|1|$send_command|$xml" >> $TESTCASE_BN + # Send the request + # Special case for SNR/SNA (code=8388636) and STR (code=275) going to SAPC: the Session-Id is created on client and received on SLR previously + if [ "$adml_type" = "server" ] + then + if [ "$code" = "8388636" -o "$code" = "275" ] + then + s_send="test|1|$send_command|$xml|$REQUEST_STEP" + s_wait="test|1|$wait_command|$code|0|||" + fi + fi + + echo "$s_send" >> $TESTCASE_BN + if [ -n "$resultcode" ] then local hbh="$(grep -o "hop-by-hop-id=\"[0-9]*\"" $xml)" @@ -122,12 +137,28 @@ update_testcase () { _rc=$(getResultCode $ans_xml) [ -n "$_rc" ] && rc=$_rc fi + + # Wait the answer: s_wait="${s_wait}|${rc}" fi echo "$s_wait" >> $TESTCASE_BN else + local next_step_number=$((lines+1)) + + # Wait the request + # Special case for SLR/SLA (code=8388635) and STR (code=275) coming from SAPC: the Session-Id is created on client + if [ "$adml_type" = "server" ] + then + if [ "$code" = "8388635" -o "$code" = "275" ] + then + s_wait="test|1|$wait_command|$code|1" + REQUEST_STEP=$next_step_number + fi + fi echo "$s_wait" >> $TESTCASE_BN - echo "test|1|$send_command|$xml|$((lines+1))" >> $TESTCASE_BN + + # Send the answer + echo "test|1|$send_command|$xml|$next_step_number" >> $TESTCASE_BN fi } @@ -152,20 +183,25 @@ awk '{ print $NF }' $ohs_file | egrep -qw 'client|server' [ ${PIPESTATUS[1]} -ne 0 ] && _exit "Can't found any Origin-Host in '$ohs_file' with a valid ADML node role value (client or server) !!" # Identify useful frames: those which are created at test-bed side (all except frames coming from tested systems): -rm -f *.needed +0> .involved_frames +0> .involved_origin_hosts +n_involved_frames=0 for oh in `awk '{ print $1 }' $ohs_file` do for frame in $(grep -l "^originhost=$oh$" *.*metadata | cut -d\. -f1) do - touch ${frame}.needed + echo "$frame" >> .involved_frames + echo "$oh" >> .involved_origin_hosts + n_involved_frames=$((n_involved_frames + 1)) done done -ls *.needed >/dev/null 2>/dev/null -[ $? -ne 0 ] && _exit "No frame has been selected within '$SOURCE_DIR' for provided origin-hosts file !!" +[ $n_involved_frames -eq 0 ] && _exit "No frame has been selected within '$SOURCE_DIR' for provided origin-hosts file !!" +sort .involved_frames > .involved_frames_sort +mv .involved_frames_sort .involved_frames # Messages classification: -0> cers_4_starting -0> ceas_4_establishing +#0> cers_4_starting +#0> ceas_4_establishing 0> cers_4_starting_origin_hosts 0> ceas_4_establishing_origin_hosts 0> requests_4_sending @@ -173,11 +209,11 @@ ls *.needed >/dev/null 2>/dev/null 0> $TESTCASE_BN # Optional timeout: -TIMEOUT_SEC=$3 +TIMEOUT_SEC=$2 [ -n "$TIMEOUT_SEC" ] && echo "test|1|timeout|$((TIMEOUT_SEC * 1000))" >> $TESTCASE_BN # Process frames: -for frame in `ls *.needed | cut -d\. -f1 | sort -n` +for frame in `cat .involved_frames` do mtd=( `ls ${frame}.*metadata 2>/dev/null` ) [ ${#mtd[@]} -ne 1 ] && _exit "There must be one metadata file corresponding to frame '$frame' !!" @@ -196,7 +232,7 @@ do grep -q "^code=257$" $mtd if [ $? -eq 0 ] then - echo $frame >> cers_4_starting + #echo $frame >> cers_4_starting [ -z "$originHost" ] && _exit "Missing Origin-Host (frame $frame, CER message) !!" echo "$originHost" >> cers_4_starting_origin_hosts ln -sf $xml cer.${originHost}.xml @@ -213,7 +249,7 @@ do grep -q "^code=257$" $mtd if [ $? -eq 0 ] then - echo $frame >> ceas_4_establishing + #echo $frame >> ceas_4_establishing originHost=$(grep ^originhost= ${frame}.metadata | cut -d= -f2-) [ -z "$originHost" ] && _exit "Missing Origin-Host (frame $frame, CEA message) !!" echo "$originHost" >> ceas_4_establishing_origin_hosts @@ -228,22 +264,15 @@ do update_testcase $mtd $xml "" $adml_type fi done -rm -f *.needed # We will replace all the requests hop-by-hop's with a unique value, to avoid bad sniffing cases (different sources using bad values). # For example, the frame number could be valid enough. hbh_ini= hbh_fin= -# involved frames: -involved_xmls= -grep "|sendxml" $TESTCASE_BN > .involved_frames -n_involved=`wc -l .involved_frames | awk '{ print $1 }'` -count=1 -for frame in `cat .involved_frames | cut -d\| -f4 | cut -d\. -f1` +for frame in `cat .involved_frames` do xml=( `ls ${frame}.*xml` ) - involved_xmls="$involved_xmls $xml" mtd=( `ls ${frame}.*metadata` ) isrequest=$(grep "isrequest=1" $mtd) if [ -n "$isrequest" ] @@ -251,15 +280,17 @@ do hbh_ini="$(grep -o "hop-by-hop-id=\"[0-9]*\"" $xml)" sed -i 's/'$hbh_ini'/hop-by-hop-id="'$frame'"/' $xml fi - count=$((count+1)) done +rm .involved_frames -# Involved origin hosts: -grep " .involved_origin_hosts -grep -w -f .involved_origin_hosts $ohs_file > .involved_origin_hosts_with_info +# Simplify origin hosts file (oh + adml role): +sort -u .involved_origin_hosts > .involved_origin_hosts_unique +grep -w -f .involved_origin_hosts_unique $ohs_file > .involved_origin_hosts_with_info +mv .involved_origin_hosts_with_info $ohs_file +rm .involved_origin_hosts .involved_origin_hosts_unique # Missing CERs: -for oh in $(awk -v input=client '{if ($2 == input) print $1;}' .involved_origin_hosts_with_info) +for oh in $(awk -v input=client '{if ($2 == input) print $1;}' $ohs_file) do cer=$SOURCE_DIR/cer.${oh}.xml if [ ! -f $cer ] @@ -282,7 +313,7 @@ EOF done # Missing CEAs: -for oh in $(awk -v input=server '{if ($2 == input) print $1;}' .involved_origin_hosts_with_info) +for oh in $(awk -v input=server '{if ($2 == input) print $1;}' $ohs_file) do cea=$SOURCE_DIR/cea.${oh}.xml if [ ! -f $cea ] @@ -315,7 +346,5 @@ EOF fi done -rm -f .involved_origin_hosts .involved_origin_hosts_with_info - exit 0