Back to home page

Enduro/X

 
 

    


0001 #!/bin/bash
0002 ##
0003 ## @brief @(#) See README. Keygroup tests
0004 ##
0005 ## @file 15_run_keygroup.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="test048_cache"
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 export NDRX_CCONFIG=`pwd`
0050 . ../testenv.sh
0051 
0052 export TESTDIR="$NDRX_APPHOME/atmitest/$TESTNAME"
0053 export PATH=$PATH:$TESTDIR
0054 export NDRX_TOUT=10
0055 export NDRX_ULOG=$TESTDIR
0056 
0057 source ./test-func-include.sh
0058 
0059 #
0060 # Domain 1 - here client will live
0061 #
0062 set_dom1() {
0063     echo "Setting domain 1"
0064     . ../dom1.sh
0065     export NDRX_CONFIG=$TESTDIR/ndrxconfig-dom1.xml
0066     export NDRX_DMNLOG=$TESTDIR/ndrxd-dom1.log
0067     export NDRX_LOG=$TESTDIR/ndrx-dom1.log
0068     export TESTDIR_DB=$TESTDIR
0069     export TESTDIR_SHM=$TESTDIR
0070     export NDRX_CCTAG=dom1
0071 }
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 TESTDIR_DB=$TESTDIR/dom2
0080     export TESTDIR_SHM=$TESTDIR/dom2
0081     export NDRX_CCTAG=dom2
0082 }
0083 
0084 set_dom3() {
0085     echo "Setting domain 3"
0086     . ../dom3.sh
0087     export NDRX_CONFIG=$TESTDIR/ndrxconfig-dom3.xml
0088     export NDRX_DMNLOG=$TESTDIR/ndrxd-dom3.log
0089     export NDRX_LOG=$TESTDIR/ndrx-dom3.log
0090     export TESTDIR_DB=$TESTDIR/dom3
0091     export TESTDIR_SHM=$TESTDIR/dom3
0092     export NDRX_CCTAG=dom3
0093 }
0094 
0095 #
0096 # Generic exit function
0097 #
0098 function go_out {
0099     echo "Test exiting with: $1"
0100     
0101     set_dom1;
0102     xadmin stop -y
0103     xadmin down -y
0104 
0105 
0106     set_dom2;
0107     xadmin stop -y
0108     xadmin down -y
0109 
0110     set_dom3;
0111     xadmin stop -y
0112     xadmin down -y
0113 
0114     # If some alive stuff left...
0115     xadmin killall atmiclt48
0116 
0117     popd 2>/dev/null
0118     exit $1
0119 }
0120 
0121 rm *.log
0122 # Any bridges that are live must be killed!
0123 xadmin killall tpbridge
0124 
0125 echo "Booting domain 1"
0126 set_dom1;
0127 xadmin down -y
0128 xadmin start -y || go_out 1
0129 
0130 echo "Booting domain 2"
0131 set_dom2;
0132 xadmin down -y
0133 xadmin start -y || go_out 1
0134 
0135 echo "Booting domain 3"
0136 set_dom3;
0137 xadmin down -y
0138 xadmin start -y || go_out 1
0139 
0140 echo "Let clients to boot & links to establish..."
0141 sleep 30
0142 
0143 RET=0
0144 
0145 echo "Domain 1 info"
0146 set_dom1;
0147 xadmin psc
0148 xadmin ppm
0149 xadmin sc -t CACHED
0150 xadmin pc
0151 
0152 echo "Domain 2 info"
0153 set_dom2;
0154 xadmin psc
0155 xadmin ppm
0156 xadmin sc -t CACHED
0157 xadmin pc
0158 
0159 echo "Domain 3 info"
0160 set_dom3;
0161 xadmin psc
0162 xadmin ppm
0163 xadmin sc -t CACHED
0164 xadmin pc
0165 
0166 
0167 echo "Running off client on domain 1"
0168 set_dom1;
0169 
0170 (time ./testtool48 -sTESTSV15 -b '{"T_STRING_FLD":"KEY1","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"1"}' \
0171     -m '{"T_STRING_FLD":"KEY1","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"1"}' \
0172     -cY -n50 -fY 2>&1) > ./15_testtool48.log
0173 
0174 if [ $? -ne 0 ]; then
0175     echo "testtool48 failed (1)"
0176     go_out 1
0177 fi
0178 
0179 (time ./testtool48 -sTESTSV15 -b '{"T_STRING_FLD":"KEY1","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"2"}' \
0180     -m '{"T_STRING_FLD":"KEY1","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"2"}' \
0181     -cY -n50 -fY 2>&1) >> ./15_testtool48.log
0182 
0183 if [ $? -ne 0 ]; then
0184     echo "testtool48 failed (2)"
0185     go_out 1
0186 fi
0187 
0188 
0189 (time ./testtool48 -sTESTSV15 -b '{"T_STRING_FLD":"KEY1","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"3"}' \
0190     -m '{"T_STRING_FLD":"KEY1","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"3"}' \
0191     -cY -n50 -fY 2>&1) >> ./15_testtool48.log
0192 
0193 if [ $? -ne 0 ]; then
0194     echo "testtool48 failed (3)"
0195     go_out 1
0196 fi
0197 
0198 (time ./testtool48 -sTESTSV15 -b '{"T_STRING_FLD":"KEY1","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"4"}' \
0199     -m '{"T_STRING_FLD":"KEY1","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"4"}' \
0200     -cY -n50 -fY 2>&1) >> ./15_testtool48.log
0201 
0202 if [ $? -ne 0 ]; then
0203     echo "testtool48 failed (4)"
0204     go_out 1
0205 fi
0206 
0207 (time ./testtool48 -sTESTSV15 -b '{"T_STRING_FLD":"KEY1","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"5"}' \
0208     -m '{"T_STRING_FLD":"KEY1","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"5"}' \
0209     -cY -n50 -fY 2>&1) >> ./15_testtool48.log
0210 
0211 if [ $? -ne 0 ]; then
0212     echo "testtool48 failed (5)"
0213     go_out 1
0214 fi
0215 
0216 (time ./testtool48 -sTESTSV15 -b '{"T_STRING_FLD":"KEY1","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"6"}' \
0217     -m '{"T_STRING_FLD":"KEY1","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"6"}' \
0218     -cY -n50 -fY 2>&1) >> ./15_testtool48.log
0219 
0220 if [ $? -ne 0 ]; then
0221     echo "testtool48 failed (6)"
0222     go_out 1
0223 fi
0224 
0225 (time ./testtool48 -sTESTSV15 -b '{"T_STRING_FLD":"KEY1","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"7"}' \
0226     -m '{"T_STRING_FLD":"KEY1","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"7"}' \
0227     -cY -n50 -fY 2>&1) >> ./15_testtool48.log
0228 
0229 if [ $? -ne 0 ]; then
0230     echo "testtool48 failed (7)"
0231     go_out 1
0232 fi
0233 
0234 
0235 #
0236 # This goes as reject
0237 #
0238 (time ./testtool48 -sTESTSV15 -b '{"T_STRING_FLD":"KEY1","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"8"}' \
0239     -m '{"T_STRING_FLD":"KEY1","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"8","T_STRING_3_FLD":"REJECT"}' \
0240     -cY -n1 -fN -r4 -e11 2>&1) >> ./15_testtool48.log
0241 
0242 if [ $? -ne 0 ]; then
0243     echo "testtool48 failed (8)"
0244     go_out 1
0245 fi
0246 
0247 echo "List group..."
0248 xadmin cs g@db15
0249 ensure_keys g@db15 1
0250 
0251 echo "List key items..."
0252 xadmin cs k@db15
0253 ensure_keys k@db15 7
0254 
0255 
0256 echo "Check contents of keygroup"
0257 xadmin cd -d g@db15 -k SV15KEY1 -i
0258 
0259 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV151 1
0260 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV152 1
0261 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV153 1
0262 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV154 1
0263 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV155 1
0264 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV156 1
0265 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV157 1
0266 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV158 0
0267 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV159 0
0268 
0269 xadmin bc -t CACHED
0270 echo "Sleep 102, to wait for some free slot..."
0271 sleep 102
0272 
0273 
0274 (time ./testtool48 -sTESTSV15 -b '{"T_STRING_FLD":"KEY1","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"8"}' \
0275     -m '{"T_STRING_FLD":"KEY1","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"8"}' \
0276     -cY -n50 -fY 2>&1) >> ./15_testtool48.log
0277 
0278 if [ $? -ne 0 ]; then
0279     echo "testtool48 failed (8.1)"
0280     go_out 1
0281 fi
0282 
0283 (time ./testtool48 -sTESTSV15 -b '{"T_STRING_FLD":"KEY1","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"9"}' \
0284     -m '{"T_STRING_FLD":"KEY1","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"9"}' \
0285     -cY -n50 -fY 2>&1) >> ./15_testtool48.log
0286 
0287 if [ $? -ne 0 ]; then
0288     echo "testtool48 failed (9)"
0289     go_out 1
0290 fi
0291 
0292 
0293 xadmin cs g@db15
0294 xadmin cs k@db15
0295 
0296 xadmin cd -d g@db15 -k SV15KEY1 -i
0297 
0298 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV151 0
0299 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV152 0
0300 
0301 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV158 1
0302 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV159 1
0303 
0304 
0305 echo "List keyitems"
0306 xadmin cs k@db15
0307 ensure_keys k@db15 2
0308 
0309 
0310 #echo now invalidate the cache, use key2
0311 
0312 (time ./testtool48 -sTESTSV15 -b '{"T_STRING_FLD":"KEY2","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"8"}' \
0313     -m '{"T_STRING_FLD":"KEY2","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"8"}' \
0314     -cY -n50 -fY 2>&1) >> ./15_testtool48.log
0315 
0316 if [ $? -ne 0 ]; then
0317     echo "testtool48 failed (10)"
0318     go_out 1
0319 fi
0320 
0321 (time ./testtool48 -sTESTSV15 -b '{"T_STRING_FLD":"KEY2","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"9"}' \
0322     -m '{"T_STRING_FLD":"KEY2","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"9"}' \
0323     -cY -n50 -fY 2>&1) >> ./15_testtool48.log
0324 
0325 if [ $? -ne 0 ]; then
0326     echo "testtool48 failed (11)"
0327     go_out 1
0328 fi
0329 
0330 (time ./testtool48 -sTESTSV15 -b '{"T_STRING_FLD":"KEY2","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"10"}' \
0331     -m '{"T_STRING_FLD":"KEY2","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"10"}' \
0332     -cY -n50 -fY 2>&1) >> ./15_testtool48.log
0333 
0334 if [ $? -ne 0 ]; then
0335     echo "testtool48 failed (12)"
0336     go_out 1
0337 fi
0338 
0339 ensure_keys k@db15 5
0340 
0341 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV158 1
0342 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV159 1
0343 
0344 ensure_field g@db15 SV15KEY2 EX_CACHE_OPEXPR SV15KEY2-SV158 1
0345 ensure_field g@db15 SV15KEY2 EX_CACHE_OPEXPR SV15KEY2-SV159 1
0346 ensure_field g@db15 SV15KEY2 EX_CACHE_OPEXPR SV15KEY2-SV1510 1
0347 
0348 echo "Now invalidate record No 2 by ud"
0349 
0350 cat << EOF | ud
0351 SRVCNM  TESTSV15I
0352 T_STRING_FLD    KEY2
0353 T_SHORT_FLD     9
0354 T_SHORT_2_FLD   1
0355 
0356 EOF
0357 
0358 echo "Sleeping 3 to broadcast delete... (1)"
0359 sleep 1
0360 
0361 echo "Testing DOM 1"
0362 
0363 xadmin cs k@db15
0364 xadmin cd -d g@db15 -k SV15KEY2 -i
0365 
0366 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV158 1
0367 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV159 1
0368 
0369 ensure_field g@db15 SV15KEY2 EX_CACHE_OPEXPR SV15KEY2-SV158 1
0370 ensure_field g@db15 SV15KEY2 EX_CACHE_OPEXPR SV15KEY2-SV159 0
0371 ensure_field g@db15 SV15KEY2 EX_CACHE_OPEXPR SV15KEY2-SV1510 1
0372 
0373 
0374 echo "Testing DOM 2"
0375 set_dom2;
0376 xadmin cs k@db15
0377 xadmin cd -d g@db15 -k SV15KEY2 -i
0378 
0379 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV158 1
0380 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV159 1
0381 
0382 ensure_field g@db15 SV15KEY2 EX_CACHE_OPEXPR SV15KEY2-SV158 1
0383 ensure_field g@db15 SV15KEY2 EX_CACHE_OPEXPR SV15KEY2-SV159 0
0384 ensure_field g@db15 SV15KEY2 EX_CACHE_OPEXPR SV15KEY2-SV1510 1
0385 
0386 echo "Testing DOM 3"
0387 set_dom3;
0388 xadmin cs k@db15
0389 xadmin cd -d g@db15 -k SV15KEY2 -i
0390 
0391 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV158 1
0392 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV159 1
0393 
0394 ensure_field g@db15 SV15KEY2 EX_CACHE_OPEXPR SV15KEY2-SV158 1
0395 ensure_field g@db15 SV15KEY2 EX_CACHE_OPEXPR SV15KEY2-SV159 0
0396 ensure_field g@db15 SV15KEY2 EX_CACHE_OPEXPR SV15KEY2-SV1510 1
0397 
0398 echo "Back to DOM 1"
0399 set_dom1;
0400 
0401 (time ./testtool48 -sTESTSV15 -b '{"T_STRING_FLD":"KEY2","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"8"}' \
0402     -m '{"T_STRING_FLD":"KEY2","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"8"}' \
0403     -cY -n50 -fN 2>&1) >> ./15_testtool48.log
0404 
0405 if [ $? -ne 0 ]; then
0406     echo "testtool48 failed (13)"
0407     go_out 1
0408 fi
0409 
0410 (time ./testtool48 -sTESTSV15 -b '{"T_STRING_FLD":"KEY2","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"9"}' \
0411     -m '{"T_STRING_FLD":"KEY2","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"9"}' \
0412     -cY -n50 -fY 2>&1) >> ./15_testtool48.log
0413 
0414 if [ $? -ne 0 ]; then
0415     echo "testtool48 failed (14)"
0416     go_out 1
0417 fi
0418 
0419 (time ./testtool48 -sTESTSV15 -b '{"T_STRING_FLD":"KEY2","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"10"}' \
0420     -m '{"T_STRING_FLD":"KEY2","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"10"}' \
0421     -cY -n50 -fN 2>&1) >> ./15_testtool48.log
0422     
0423 if [ $? -ne 0 ]; then
0424     echo "testtool48 failed (15)"
0425     go_out 1
0426 fi
0427 
0428 
0429 (time ./testtool48 -sTESTSV15 -b '{"T_STRING_FLD":"KEY1","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"8"}' \
0430     -m '{"T_STRING_FLD":"KEY1","T_STRING_2_FLD":"DOM1","T_SHORT_FLD":"8"}' \
0431     -cY -n50 -fN 2>&1) >> ./15_testtool48.log
0432     
0433 if [ $? -ne 0 ]; then
0434     echo "testtool48 failed (16)"
0435     go_out 1
0436 fi
0437 
0438 
0439 echo "Now invalidate record No 10 by ud - full group must be dropped"
0440 
0441 cat << EOF | ud
0442 SRVCNM  TESTSV15I2
0443 T_STRING_FLD    KEY2
0444 T_SHORT_FLD     10
0445 T_SHORT_2_FLD   1
0446 
0447 EOF
0448 
0449 echo "Sleeping 3 to broadcast delete... (2)"
0450 sleep 5
0451 
0452 echo "Testing DOM 1"
0453 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV158 1
0454 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV159 1
0455 
0456 ensure_field g@db15 SV15KEY2 EX_CACHE_OPEXPR SV15KEY2-SV158 0
0457 ensure_field g@db15 SV15KEY2 EX_CACHE_OPEXPR SV15KEY2-SV159 0
0458 ensure_field g@db15 SV15KEY2 EX_CACHE_OPEXPR SV15KEY2-SV1510 0
0459 
0460 echo "Testing DOM 2"
0461 set_dom2;
0462 
0463 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV158 1
0464 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV159 1
0465 
0466 ensure_field g@db15 SV15KEY2 EX_CACHE_OPEXPR SV15KEY2-SV158 0
0467 ensure_field g@db15 SV15KEY2 EX_CACHE_OPEXPR SV15KEY2-SV159 0
0468 ensure_field g@db15 SV15KEY2 EX_CACHE_OPEXPR SV15KEY2-SV1510 0
0469 
0470 echo "Testing DOM 3"
0471 set_dom3;
0472 
0473 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV158 1
0474 ensure_field g@db15 SV15KEY1 EX_CACHE_OPEXPR SV15KEY1-SV159 1
0475 
0476 ensure_field g@db15 SV15KEY2 EX_CACHE_OPEXPR SV15KEY2-SV158 0
0477 ensure_field g@db15 SV15KEY2 EX_CACHE_OPEXPR SV15KEY2-SV159 0
0478 ensure_field g@db15 SV15KEY2 EX_CACHE_OPEXPR SV15KEY2-SV1510 0
0479 
0480 
0481 go_out $RET
0482 
0483 # vim: set ts=4 sw=4 et smartindent: