Back to home page

Enduro/X

 
 

    


0001 #!/bin/bash
0002 ##
0003 ## @brief Test ndrxd forking child lockups - test launcher
0004 ##
0005 ## @file run.sh
0006 ##
0007 ## -----------------------------------------------------------------------------
0008 ## Enduro/X Middleware Platform for Distributed Transaction Processing
0009 ## Copyright (C) 2009-2016, ATR Baltic, Ltd. All Rights Reserved.
0010 ## Copyright (C) 2017-2023, Mavimax, Ltd. All Rights Reserved.
0011 ## This software is released under one of the following licenses:
0012 ## AGPL (with Java and Go exceptions) or Mavimax's license for commercial use.
0013 ## See LICENSE file for full text.
0014 ## -----------------------------------------------------------------------------
0015 ## AGPL license:
0016 ##
0017 ## This program is free software; you can redistribute it and/or modify it under
0018 ## the terms of the GNU Affero General Public License, version 3 as published
0019 ## by the Free Software Foundation;
0020 ##
0021 ## This program is distributed in the hope that it will be useful, but WITHOUT ANY
0022 ## WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
0023 ## PARTICULAR PURPOSE. See the GNU Affero General Public License, version 3
0024 ## for more details.
0025 ##
0026 ## You should have received a copy of the GNU Affero General Public License along 
0027 ## with this program; if not, write to the Free Software Foundation, Inc.,
0028 ## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
0029 ##
0030 ## -----------------------------------------------------------------------------
0031 ## A commercial use license is available from Mavimax, Ltd
0032 ## contact@mavimax.com
0033 ## -----------------------------------------------------------------------------
0034 ##
0035 
0036 export TESTNAME="test060_ndxdfork"
0037 
0038 PWD=`pwd`
0039 if [ `echo $PWD | grep $TESTNAME ` ]; then
0040     # Do nothing 
0041     echo > /dev/null
0042 else
0043     # started from parent folder
0044     pushd .
0045     echo "Doing cd"
0046     cd $TESTNAME
0047 fi;
0048 
0049 . ../testenv.sh
0050 
0051 export TESTDIR="$NDRX_APPHOME/atmitest/$TESTNAME"
0052 export PATH=$PATH:$TESTDIR
0053 
0054 export NDRX_TOUT=10
0055 
0056 #
0057 # Domain 1 - here client will live
0058 #
0059 set_dom1() {
0060     echo "Setting domain 1"
0061     . ../dom1.sh
0062     export NDRX_CONFIG=$TESTDIR/ndrxconfig-dom1.xml
0063     export NDRX_DMNLOG=$TESTDIR/ndrxd-dom1.log
0064     export NDRX_LOG=$TESTDIR/ndrx-dom1.log
0065     export NDRX_DEBUG_CONF=$TESTDIR/debug-dom1.conf
0066 }
0067 
0068 
0069 
0070 #
0071 # Generic exit function
0072 #
0073 function go_out {
0074     echo "Test exiting with: $1"
0075     
0076     set_dom1;
0077     xadmin stop -y
0078     xadmin down -y
0079 
0080     # If some alive stuff left...
0081     xadmin killall ndrxd
0082 
0083     popd 2>/dev/null
0084     exit $1
0085 }
0086 
0087 rm *dom*.log
0088 
0089 ulimit -c unlimited
0090 
0091 # Any bridges that are live must be killed!
0092 xadmin killall tpbridge ndrxd
0093 
0094 set_dom1;
0095 xadmin down -y
0096 xadmin start -y || go_out 1
0097 
0098 
0099 # Have some wait for ndrxd goes in service - wait for connection establishment.
0100 echo "Sleeping 90..."
0101 sleep 60
0102 RET=0
0103 
0104 echo "Terminate sanity checks of ndrxd...."
0105 
0106 xadmin appconfig sanity 99999
0107 
0108 echo "Sleep 20... let last sanity check to finish up..."
0109 sleep 30
0110 
0111 echo "Print the list of ndrxd's running ... "
0112 
0113 xadmin ps -a ndrxd -b $NDRX_RNDK
0114 DPID=`xadmin dpid`
0115 
0116 PROCS=`xadmin ps -a ndrxd -b $NDRX_RNDK | wc | awk '{print $1}'`
0117 
0118 echo "Got number of ndrxd's: $PROCS"
0119 
0120 if [[ "X$PROCS" != "X1" ]]; then
0121     echo "Number of 'ndrxd' daemons is not 1, but $PROCS - FAIL"
0122 
0123     echo "Making core dumps of any extra ndrxds..."
0124 
0125     IFS=$'\n'       # make newlines the only separator
0126     CORES=`xadmin ps -a ndrxd -b $NDRX_RNDK -p -x $DPID`
0127     for c in $CORES; do
0128         echo "Generate core for PID=$c"
0129         kill -11 $c
0130         cp ../../dist/bin/ndrxd ndrxd.$c
0131         break
0132     done
0133 
0134     # let processes to stay
0135     exit -1
0136     #go_out -1
0137 fi
0138 
0139 go_out $RET
0140 
0141 
0142 # vim: set ts=4 sw=4 et smartindent: