Back to home page

Enduro/X

 
 

    


0001 #!/bin/bash
0002 ##
0003 ## @brief tpadm .TMIB interface tests - 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="test068_tpadm"
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_SILENT=Y
0055 export NDRX_TOUT=60
0056 export NDRX_LDBAL=0
0057 #
0058 # Domain 1 - here client will live
0059 #
0060 set_dom1() {
0061     echo "Setting domain 1"
0062     . ../dom1.sh
0063     export NDRX_CONFIG=$TESTDIR/ndrxconfig-dom1.xml
0064     export NDRX_DMNLOG=$TESTDIR/ndrxd-dom1.log
0065     export NDRX_LOG=$TESTDIR/ndrx-dom1.log
0066     export NDRX_DEBUG_CONF=$TESTDIR/debug-dom1.conf
0067 }
0068 
0069 
0070 #
0071 # Domain 2 - here server will live
0072 #
0073 set_dom2() {
0074     echo "Setting domain 2"
0075     . ../dom2.sh    
0076     export NDRX_CONFIG=$TESTDIR/ndrxconfig-dom2.xml
0077     export NDRX_DMNLOG=$TESTDIR/ndrxd-dom2.log
0078     export NDRX_LOG=$TESTDIR/ndrx-dom2.log
0079     export NDRX_DEBUG_CONF=$TESTDIR/debug-dom2.conf
0080 }
0081 
0082 #
0083 # Generic exit function
0084 #
0085 function go_out {
0086     echo "Test exiting with: $1"
0087     
0088     set_dom1;
0089     xadmin stop -y
0090     xadmin down -y
0091 
0092 
0093     set_dom2;
0094     xadmin stop -y
0095     xadmin down -y
0096 
0097     # If some alive stuff left...
0098     xadmin killall atmiclt68
0099 
0100     popd 2>/dev/null
0101     exit $1
0102 }
0103 
0104 rm *dom*.log
0105 # Any bridges that are live must be killed!
0106 xadmin killall tpbridge
0107 
0108 set_dom1;
0109 xadmin down -y
0110 xadmin start -y || go_out 1
0111 
0112 
0113 set_dom2;
0114 xadmin down -y
0115 xadmin start -y || go_out 2
0116 
0117 
0118 # Have some wait for ndrxd goes in service - wait for connection establishment.
0119 echo "Sleep 60 for domain to establish..."
0120 sleep 60
0121 RET=0
0122 
0123 xadmin psc
0124 xadmin ppm
0125 echo "Running off client"
0126 
0127 set_dom2;
0128 
0129 
0130 echo "Run some calls"
0131 (./atmiclt68 call 2>&1) > ./atmiclt-dom2-call.log
0132 
0133 echo "Make some failure"
0134 (./atmiclt68 fail 2>&1) >> ./atmiclt-dom2-fail.log
0135 
0136 echo "open the conn"
0137 (./atmiclt68 conv 2>&1) >> ./atmiclt-dom2-conv.log &
0138 
0139 echo "start CONV/1 Q (wait for server)"
0140 xadmin bc CONV/1
0141 # start this from cpm..
0142 #(./atmiclt68 conv 2>&1) >> ./atmiclt-dom2-conv.log &
0143 
0144 
0145 echo "stop some client"
0146 
0147 xadmin sc BINARY2/2
0148 
0149 echo "Let queues to establish ...  (wait 3)"
0150 sleep 3
0151 
0152 #(valgrind --leak-check=full --log-file="v.out" -v ./atmiclt68 2>&1) > ./atmiclt-dom1.log
0153 
0154 
0155 echo "*** T_CLIENT ***"
0156 xadmin mibget -c T_CLIENT
0157 xadmin mibget -c T_CLIENT -m
0158 
0159 HAVE_BIN3_3=`xadmin mibget -c T_CLIENT -m | egrep '2\|2/BINARY3/3\|./test.sh\|ACT\|[1-9][0-9]*\|-1\|-1\|[1-9][0-9]*\|'`
0160 if [ "X$HAVE_BIN3_3" == "X" ]; then
0161     echo "2/BINARY3/3 not found!"
0162     go_out -10
0163 fi
0164 
0165 # processes run in context no 2.
0166 ATMICLT68=`xadmin mibget -c T_CLIENT -m | egrep '2\|\/dom2,clt,reply,atmiclt68,[^\|]*\|atmiclt68\|ACT\|[1-9][0-9]*\|1\|2\|0\|'`
0167 if [ "X$ATMICLT68" == "X" ]; then
0168     echo "ATMICLT68 not found!"
0169     go_out -11
0170 fi
0171 
0172 # check dead processes
0173 # check all at once, as during transitions, the actual status may change too...
0174 DEAPROC=`xadmin mibget -c T_CLIENT -m | egrep '(2\|2\/bad1\/1\|\.\/non_existant_bin\|)(DEA|ACT)\|'`
0175 # there might be recode condition, cpmsrv started the process, but sigchld not yet received
0176 #DEAPROC2=`xadmin mibget -c T_CLIENT -m | egrep '2\|2\/bad1\/1\|\.\/non_existant_bin\|ACT\|'`
0177 if [ "X$DEAPROC" == "X" ]; then
0178     echo "bad1/1 shall be reported as dead or active!"
0179     go_out -11
0180 fi
0181 
0182 DEAPROC=`xadmin mibget -c T_CLIENT -m | egrep '(2\|2\/bad2\/2\|\.\/non_existant_bin\|)(DEA|ACT)\|'`
0183 # there might be recode condition, cpmsrv started the process, but sigchld not yet received
0184 #DEAPROC2=`xadmin mibget -c T_CLIENT -m | egrep '2\|2\/bad2\/2\|\.\/non_existant_bin\|ACT\|'`
0185 if [ "X$DEAPROC" == "X" ]; then
0186     echo "bad1/2 shall be reported as dead or active!"
0187     go_out -11
0188 fi
0189 
0190 DEAPROC=`xadmin mibget -c T_CLIENT -m | egrep '2\|2\/BINARY2\/2\|\.\/test\.sh\|DEA\|'`
0191 if [ "X$DEAPROC" == "X" ]; then
0192     echo "BINARY2/2 shall be reported as dead!"
0193     go_out -11
0194 fi
0195 
0196 echo "*** T_DOMAIN ***"
0197 xadmin mibget -c T_DOMAIN
0198 xadmin mibget -c T_DOMAIN -m
0199 
0200 POLLER=`xadmin poller`
0201 DOMAINOUT=`xadmin mibget -c T_DOMAIN -m | egrep '2\|ACT\|[1-9][0-9]*\|[1-9][0-9]*\|[1-9][0-9]*\|'`
0202 
0203 if [ "X$DOMAINOUT" == "X" ]; then
0204     echo "DOMAIN not found!"
0205     go_out -12
0206 fi
0207 
0208 echo "*** T_MACHINE ***"
0209 xadmin mibget -c T_MACHINE
0210 xadmin mibget -c T_MACHINE -m
0211 
0212 NOD1=`xadmin mibget -c T_MACHINE -m | egrep '1\|-1\|-1\|-1\|ACT\|'`
0213 
0214 if [ "X$NOD1" == "X" ]; then
0215     echo "NOD1 not found!"
0216     go_out -13
0217 fi
0218 
0219 
0220 NOD2=`xadmin mibget -c T_MACHINE -m | egrep '2\|[1-9][0-9]*\|[1-9][0-9]*\|2\|ACT\|'`
0221 
0222 if [ "X$NOD2" == "X" ]; then
0223     echo "NOD2 not found!"
0224     go_out -14
0225 fi
0226 
0227 NOD3=`xadmin mibget -c T_MACHINE -m | egrep '3\|-1\|-1\|-1\|PEN\|'`
0228 
0229 if [ "X$NOD3" == "X" ]; then
0230     echo "NOD3 not found!"
0231     go_out -15
0232 fi
0233 
0234 echo "*** T_QUEUE ***"
0235 xadmin mibget -c T_QUEUE
0236 xadmin mibget -c T_QUEUE -m
0237 
0238 # there must be 1 msg enqueued...
0239 MSGENQ=`xadmin mibget -c T_QUEUE -m | egrep 'ACT\|1\|'`
0240 
0241 if [ "X$MSGENQ" == "X" ]; then
0242     echo "MSGENQ not found!"
0243     go_out -16
0244 fi
0245 
0246 # there must be client reply q
0247 CLTREP=`xadmin mibget -c T_QUEUE -m | egrep '2\|.*,reply,atmiclt68,.*\|'`
0248 
0249 if [ "X$CLTREP" == "X" ]; then
0250     echo "CLTREP not found!"
0251     go_out -17
0252 fi
0253 
0254 echo "*** T_SERVER ***"
0255 xadmin mibget -c T_SERVER
0256 xadmin mibget -c T_SERVER -m
0257 
0258 SV68=`xadmin mibget -c T_SERVER -m | egrep '2\|10\|.*\|ACT\|[[0-9]*\|[1-9][0-9]*\|atmi.sv68\|atmi.sv68\|1\|'`
0259 if [ "X$SV68" == "X" ]; then
0260     echo "SV68 not found (ACT)!"
0261     go_out -18
0262 fi
0263 
0264 SV68=`xadmin mibget -c T_SERVER -m | egrep '2\|11\|.*\|INA\|[[0-9]*\|0|atmi.sv68\|atmi.sv68\|1\|'`
0265 if [ "X$SV68" == "X" ]; then
0266     echo "SV68 not found (INA)!"
0267     go_out -18
0268 fi
0269 
0270 CPM=`xadmin mibget -c T_SERVER -m | egrep '2\|9999\|.*\|ACT\|[0-9]*\\|[1-9][0-9]*\\|cpmsrv\|cpmsrv\|1\|'`
0271 
0272 if [ "X$CPM" == "X" ]; then
0273     echo "CPM not found!"
0274     go_out -19
0275 fi
0276 
0277 
0278 DUMSV=`xadmin mibget -c T_SERVER -m | egrep '2\|30\|.*\|.*\|[0-9]*\|[0-9]*\|dummysv\|dumcmdsv\|[2-9]\|'`
0279 
0280 if [ "X$DUMSV" == "X" ]; then
0281     echo "DUMSV not found!"
0282     go_out -20
0283 fi
0284 
0285 echo "*** T_SERVICE ***"
0286 xadmin mibget -c T_SERVICE
0287 xadmin mibget -c T_SERVICE -m
0288 
0289 
0290 # Test services:
0291 
0292 FAILSVC=`xadmin mibget -c T_SERVICE -m | egrep '2\|FAILSV\|ACT\|'`
0293 
0294 if [ "X$FAILSVC" == "X" ]; then
0295     echo "FAILSVC not found!"
0296     go_out -21
0297 fi
0298 
0299 MIBSVC=`xadmin mibget -c T_SERVICE -m | egrep '2\|\.TMIB\|ACT\|'`
0300 
0301 if [ "X$MIBSVC" == "X" ]; then
0302     echo "MIBSVC not found!"
0303     go_out -22
0304 fi
0305 
0306 MIBSVC2=`xadmin mibget -c T_SERVICE -m | egrep '2\|\.TMIB-2-401\|ACT\|'`
0307 
0308 if [ "X$MIBSVC2" == "X" ]; then
0309     echo "MIBSVC2 not found!"
0310     go_out -23
0311 fi
0312 
0313 echo "*** T_SVCGRP ***"
0314 xadmin mibget -c T_SVCGRP
0315 xadmin mibget -c T_SVCGRP -m
0316 
0317 TESTSVCG=`xadmin mibget -c T_SVCGRP -m | egrep '2\|TESTSV\|2/10\|ACT\|10\|TESTSV\|100\|100\|0\|[0-9]+\|[0-9]+\|[0-9]+\|'`
0318 
0319 if [ "X$TESTSVCG" == "X" ]; then
0320     echo "TESTSVCG not found!"
0321     go_out -24
0322 fi
0323 
0324 FAILSVG=`xadmin mibget -c T_SVCGRP -m | egrep '2\|FAILSV\|2/10\|ACT\|10\|FAILURESV\|1\|0\|1\|[0-9]+\|[0-9]+\|[0-9]+\|'`
0325 
0326 if [ "X$FAILSVG" == "X" ]; then
0327     echo "FAILSVG not found!"
0328     go_out -25
0329 fi
0330 
0331 xadmin psc
0332 
0333 TESTSVC1G=`xadmin mibget -c T_SVCGRP -m | egrep '1\|TESTSV\|1/101\|ACT\|101\|N/A\|-1\|-1\|-1\|-1\|-1\|-1\|'`
0334 
0335 if [ "X$TESTSVC1G" == "X" ]; then
0336     echo "TESTSVC1G not found!"
0337     go_out -26
0338 fi
0339 
0340 
0341 echo "*** T_BRCON (dom1) ***"
0342 
0343 echo "Sleep 20 - have some time sync"
0344 sleep 20
0345 
0346 echo "dom1 does dynamic time-sync"
0347 
0348 set_dom1;
0349 xadmin mibget -c T_BRCON
0350 xadmin mibget -c T_BRCON -m
0351 
0352 LAST_SYNC=`xadmin mibget -c T_BRCON -m | cut -f 7 -d '|'`
0353 
0354 if [[ $LAST_SYNC -ge 20 ]]; then
0355     echo "Periodic sync does not work ($LAST_SYNC) must be liter than 20!"
0356     go_out -26
0357 fi
0358 
0359 echo "*** T_BRCON (dom2) ***"
0360 
0361 echo "dom2 does not do dynamic time-sync"
0362 
0363 set_dom2;
0364 xadmin mibget -c T_BRCON
0365 xadmin mibget -c T_BRCON -m
0366 
0367 LAST_SYNC=`xadmin mibget -c T_BRCON -m | cut -f 7 -d '|'`
0368 
0369 if [[ $LAST_SYNC -lt 20 ]]; then
0370     echo "Last sync liter than 20 ($LAST_SYNC)!"
0371     go_out -26
0372 fi
0373 
0374 
0375 RET=$?
0376 
0377 if [[ "X$RET" != "X0" ]]; then
0378     go_out $RET
0379 fi
0380 
0381 # Catch is there is test error!!!
0382 if [ "X`grep TESTERROR *.log`" != "X" ]; then
0383     echo "Test error detected!"
0384     RET=-2
0385 fi
0386 
0387 
0388 go_out $RET
0389 
0390 
0391 # vim: set ts=4 sw=4 et smartindent: