Add first set of SI95 unit tests and health check
[ric-plt/lib/rmr.git] / test / app_test / run_multi_test.ksh
index 9bfc59b..acc065d 100644 (file)
@@ -1,8 +1,8 @@
 #!/usr/bin/env ksh
-# :vi ts=4 sw=4 noet :
+# vim: ts=4 sw=4 noet :
 #==================================================================================
-#    Copyright (c) 2019 Nokia
-#    Copyright (c) 2018-2019 AT&T Intellectual Property.
+#    Copyright (c) 2019-2020 Nokia
+#    Copyright (c) 2018-2020 AT&T Intellectual Property.
 #
 #   Licensed under the Apache License, Version 2.0 (the "License");
 #   you may not use this file except in compliance with the License.
@@ -21,7 +21,7 @@
 # ---------------------------------------------------------------------------------
 #      Mnemonic:       run_multi_test.ksh
 #      Abstract:       This is a simple script to set up and run the basic send/receive
-#                              processes for some library validation on top of nano/nng. This 
+#                              processes for some library validation on top of nng. This
 #                              particular tests starts several receivers and creates a route table
 #                              which causes messages to be sent to all receivers in parallel
 #                              (forcing message cloning internally in RMr).
@@ -31,7 +31,6 @@
 #
 #                              Example command line:
 #                                      ksh ./run_multi_test.ksh                # default 10 messages at 1 msg/sec
-#                                      ksh ./run_multi_test.ksh -N    # default but with nanomsg lib
 #                                      ksh ./run_multi_test.ksh -d 100 -n 10000 # send 10k messages with 100ms delay between
 #
 #      Date:           24 April 2019
 
 
 # The sender and receivers are run asynch. Their exit statuses are captured in a
-# file in order for the 'main' to pick them up easily.
+# file in order for the 'main' to pick them up easily. For the multi test the 
+# async connect must be DISABLED because in some environments (um, jenkins) the
+# session connect time lags enough that the first message can be dropped silently.
+# It doesn't happen all of the time, but frequently enough to be annoying. 
 #
 function run_sender {
-       if (( $nano_sender ))
-       then
-               ./sender_nano $nmsg $delay
-       else
-               ./sender $nmsg $delay
-       fi
+       RMR_ASYNC_CONN=0 ./sender${si} $nmsg $delay
        echo $? >/tmp/PID$$.src         # must communicate state back via file b/c asynch
 }
 
@@ -58,12 +55,7 @@ function run_rcvr {
 
        port=$(( 4460 + ${1:-0} ))
        export RMR_RTG_SVC=$(( 9990 + $1 ))
-       if (( $nano_receiver ))
-       then
-               ./receiver_nano $nmsg $port
-       else
-               ./receiver $nmsg $port
-       fi
+       ./receiver${si} $nmsg $port
        echo $? >/tmp/PID$$.$1.rrc
 }
 
@@ -83,8 +75,8 @@ function set_rt {
                mse |0 | 0 | $groups
                mse |1 | 10 | $groups
                mse |2 | 20 | $groups
-               rte |3 | $groups 
-               rte |4 | $groups 
+               rte |3 | $groups
+               rte |4 | $groups
                rte |5 | $groups
                rte |6 | $groups
                rte |7 | $groups
@@ -107,28 +99,32 @@ fi
 
 nmsg=10                                                # total number of messages to be exchanged (-n value changes)
 delay=1000000                          # microsec sleep between msg 1,000,000 == 1s
-nano_sender=0                          # start nano version if set (-N)
-nano_receiver=0
 wait=1
 rebuild=0
+nopull=""
 verbose=0
 nrcvrs=3                                       # this is sane, but -r allows it to be set up
+force_make=0
+si=""
 
 while [[ $1 == -* ]]
 do
-       case $1 in 
+       case $1 in
                -B)     rebuild=1;;
+               -b)     rebuild=1; nopull="nopull";;            # enable build but without pull
                -d)     delay=$2; shift;;
-               -N)     nano_sender=1
-                       nano_receiver=1
-                       ;;
                -n)     nmsg=$2; shift;;
+               -N)     si="";;                                                         # buld/run NNG binaries (turn off si)
+               -M)     force_make=1;;
                -r)     nrcvrs=$2; shift;;
+               -S)     si="_si";;                                                      # buld/run SI95 binaries
                -v)     verbose=1;;
 
                *)      echo "unrecognised option: $1"
-                       echo "usage: $0 [-B] [-d micor-sec-delay] [-N] [-n num-msgs]"
-                       echo "  -B forces a rebuild which will use .build"
+                       echo "usage: $0 [-B] [-d micor-sec-delay] [-M] [-n num-msgs] [-S]"
+                       echo "  -B forces an RMR rebuild which will use .build"
+                       echo "  -m force test applications to be remade"
+                       echo "  -S build/test SI95 based binaries"
                        exit 1
                        ;;
        esac
@@ -142,11 +138,10 @@ then
        export RMR_VCTL_FILE=".verbose"
 fi
 
-if (( rebuild )) 
+if (( rebuild ))
 then
-       build_path=../../.build         # if we rebuild we can insist that it is in .build :)
        set -e
-       ksh ./rebuild.ksh
+       $SHELL ./rebuild.ksh $nopull | read build_path
        set +e
 else
        build_path=${BUILD_PATH:-"../../.build"}        # we prefer .build at the root level, but allow user option
@@ -159,17 +154,22 @@ else
        fi
 fi
 
-export LD_LIBRARY_PATH=$build_path:$build_path/lib
+if [[ -d $build_path/lib64 ]]
+then
+       export LD_LIBRARY_PATH=$build_path:$build_path/lib64:$LD_LIBRARY_PATH
+else
+       export LD_LIBRARY_PATH=$build_path:$build_path/lib:$LD_LIBRARY_PATH
+fi
 export LIBRARY_PATH=$LD_LIBRARY_PATH
 export RMR_SEED_RT=./multi.rt
 
 set_rt $nrcvrs                                         # set up the rt for n receivers
 
-if [[ ! -f ./sender ]]
+if (( rebuild || force_make )) || [[ ! -f ./sender${si} || ! -f ./receiver${si} ]]
 then
        if ! make >/dev/null 2>&1
        then
-               echo "[FAIL] cannot find sender binary, and cannot make it.... humm?"
+               echo "[FAIL] cannot find sender${si} and/or receiver${si} binary, and cannot make them.... humm?"
                exit 1
        fi
 fi