Back to home page

Enduro/X

 
 

    


0001 #!/bin/bash
0002 ##
0003 ## @brief Test consequences of xa_end return codes
0004 ##
0005 ## @file run-xa_end.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="test087_tmsrv"
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 #
0050 # Load shared run functions
0051 #
0052 source ./funcs.sh
0053 
0054 #
0055 # Configure for retry
0056 #
0057 export NDRX_XA_FLAGS="RECON:*:3:100"
0058 
0059 #
0060 # Firstly test with join
0061 #
0062 buildprograms "";
0063 
0064 echo ""
0065 echo "************************************************************************"
0066 echo "Server XA end fails (of the first server in the chain)"
0067 echo "************************************************************************"
0068 
0069 cat << EOF > lib1.rets
0070 xa_open_entry:0:1:0
0071 xa_close_entry:0:1:0
0072 xa_start_entry:0:1:0
0073 xa_end_entry:-4:2:0:atmiclt87
0074 xa_end_entry:0:1:0
0075 xa_rollback_entry:0:1:0
0076 xa_prepare_entry:0:1:0
0077 xa_commit_entry:0:1:0
0078 xa_recover_entry:0:1:0
0079 xa_forget_entry:0:2:0
0080 xa_complete_entry:0:1:0
0081 xa_open_entry:0:1:0
0082 xa_close_entry:0:1:0
0083 xa_start_entry:0:1:0
0084 EOF
0085 
0086 cat << EOF > lib2.rets
0087 xa_open_entry:0:1:0
0088 xa_close_entry:0:1:0
0089 xa_start_entry:0:1:0
0090 xa_end_entry:0:1:0
0091 xa_rollback_entry:0:1:0
0092 xa_prepare_entry:0:1:0
0093 xa_commit_entry:0:1:0
0094 xa_recover_entry:0:1:0
0095 xa_forget_entry:0:1:0
0096 xa_complete_entry:0:1:0
0097 xa_open_entry:0:1:0
0098 xa_close_entry:0:1:0
0099 xa_start_entry:0:1:0
0100 EOF
0101 
0102 clean_ulog;
0103 # start only here, as we want fresh tables...
0104 xadmin start -y || go_out 1
0105 
0106 ERR=`NDRX_CCTAG="RM1" ./atmiclt87 2>&1`
0107 RET=$?
0108 # print the stuff
0109 echo "[$ERR]"
0110 
0111 if [ "X$RET" == "X0" ]; then
0112     echo "atmiclt87 must fail"
0113     go_out 1
0114 fi
0115 
0116 if [[ $ERR != *"TPESYSTEM"* ]]; then
0117     echo "Expected TPESYSTEM"
0118     go_out 1
0119 fi
0120 
0121 # rollback first txn.
0122 verify_ulog "RM1" "xa_rollback" "1";
0123 verify_ulog "RM2" "xa_rollback" "0";
0124 
0125 echo ""
0126 echo "************************************************************************"
0127 echo "xa_end() failure at tpcommit() entry"
0128 echo "************************************************************************"
0129 
0130 cat << EOF > lib1.rets
0131 xa_open_entry:0:1:0
0132 xa_close_entry:0:1:0
0133 xa_start_entry:0:1:0
0134 xa_end_entry:0:1:-3:atmiclt87
0135 xa_end_entry:0:1:0
0136 xa_rollback_entry:0:1:0
0137 xa_prepare_entry:0:1:0
0138 xa_commit_entry:0:1:0
0139 xa_recover_entry:0:1:0
0140 xa_forget_entry:0:2:0
0141 xa_complete_entry:0:1:0
0142 xa_open_entry:0:1:0
0143 xa_close_entry:0:1:0
0144 xa_start_entry:0:1:0
0145 EOF
0146 
0147 cat << EOF > lib2.rets
0148 xa_open_entry:0:1:0
0149 xa_close_entry:0:1:0
0150 xa_start_entry:0:1:0
0151 xa_end_entry:0:1:0
0152 xa_rollback_entry:0:1:0
0153 xa_prepare_entry:0:1:0
0154 xa_commit_entry:0:1:0
0155 xa_recover_entry:0:1:0
0156 xa_forget_entry:0:1:0
0157 xa_complete_entry:0:1:0
0158 xa_open_entry:0:1:0
0159 xa_close_entry:0:1:0
0160 xa_start_entry:0:1:0
0161 EOF
0162 
0163 
0164 clean_ulog;
0165 # start only here, as we want fresh tables...
0166 xadmin sreload -y || go_out 1
0167 
0168 ERR=`NDRX_CCTAG="RM1" ./atmiclt87 2>&1`
0169 RET=$?
0170 # print the stuff
0171 echo "[$ERR]"
0172 
0173 if [ "X$RET" == "X0" ]; then
0174     echo "atmiclt87 must fail"
0175     go_out 1
0176 fi
0177 
0178 if [[ $ERR != *"TPEABORT"* ]]; then
0179     echo "Expected TPEABORT"
0180     go_out 1
0181 fi
0182 
0183 echo ""
0184 echo "************************************************************************"
0185 echo "Client abort OK, after end fails"
0186 echo "************************************************************************"
0187 
0188 cat << EOF > lib1.rets
0189 xa_open_entry:0:1:0
0190 xa_close_entry:0:1:0
0191 xa_start_entry:0:1:0
0192 xa_end_entry:0:1:-3:atmiclt87
0193 xa_end_entry:0:1:0
0194 xa_rollback_entry:0:1:0
0195 xa_prepare_entry:0:1:0
0196 xa_commit_entry:0:1:0
0197 xa_recover_entry:0:1:0
0198 xa_forget_entry:0:2:0
0199 xa_complete_entry:0:1:0
0200 xa_open_entry:0:1:0
0201 xa_close_entry:0:1:0
0202 xa_start_entry:0:1:0
0203 EOF
0204 
0205 cat << EOF > lib2.rets
0206 xa_open_entry:0:1:0
0207 xa_close_entry:0:1:0
0208 xa_start_entry:0:1:0
0209 xa_end_entry:0:1:0
0210 xa_rollback_entry:0:1:0
0211 xa_prepare_entry:0:1:0
0212 xa_commit_entry:0:1:0
0213 xa_recover_entry:0:1:0
0214 xa_forget_entry:0:1:0
0215 xa_complete_entry:0:1:0
0216 xa_open_entry:0:1:0
0217 xa_close_entry:0:1:0
0218 xa_start_entry:0:1:0
0219 EOF
0220 
0221 clean_ulog;
0222 # start only here, as we want fresh tables...
0223 xadmin sreload -y || go_out 1
0224 
0225 NDRX_CCTAG="RM1" ./atmiclt87 A
0226 RET=$?
0227 
0228 if [ "X$RET" != "X0" ]; then
0229     echo "Build atmiclt87 failed"
0230     go_out 1
0231 fi
0232 
0233 verify_ulog "RM1" "xa_rollback" "1";
0234 verify_ulog "RM2" "xa_rollback" "1";
0235 
0236 
0237 echo ""
0238 echo "************************************************************************"
0239 echo "Forward abort only propagate"
0240 echo "************************************************************************"
0241 
0242 cat << EOF > lib1.rets
0243 xa_open_entry:0:1:0
0244 xa_close_entry:0:1:0
0245 xa_start_entry:0:1:0
0246 xa_end_entry:-3:1:0:atmisv87_1
0247 xa_end_entry:0:1:0
0248 xa_rollback_entry:0:1:0
0249 xa_prepare_entry:0:1:0
0250 xa_commit_entry:0:1:0
0251 xa_recover_entry:0:1:0
0252 xa_forget_entry:0:2:0
0253 xa_complete_entry:0:1:0
0254 xa_open_entry:0:1:0
0255 xa_close_entry:0:1:0
0256 xa_start_entry:0:1:0
0257 EOF
0258 
0259 cat << EOF > lib2.rets
0260 xa_open_entry:0:1:0
0261 xa_close_entry:0:1:0
0262 xa_start_entry:0:1:0
0263 xa_end_entry:0:1:0
0264 xa_rollback_entry:0:1:0
0265 xa_prepare_entry:0:1:0
0266 xa_commit_entry:0:1:0
0267 xa_recover_entry:0:1:0
0268 xa_forget_entry:0:1:0
0269 xa_complete_entry:0:1:0
0270 xa_open_entry:0:1:0
0271 xa_close_entry:0:1:0
0272 xa_start_entry:0:1:0
0273 EOF
0274 
0275 clean_ulog;
0276 # start only here, as we want fresh tables...
0277 xadmin sreload -y || go_out 1
0278 
0279 ERR=`NDRX_CCTAG="RM1" ./atmiclt87 2>&1`
0280 RET=$?
0281 # print the stuff
0282 echo "[$ERR]"
0283 
0284 if [ "X$RET" == "X0" ]; then
0285     echo "atmiclt87 must fail"
0286     go_out 1
0287 fi
0288 
0289 if [[ $ERR != *"TPEABORT"* ]]; then
0290     echo "Expected TPEABORT"
0291     go_out 1
0292 fi
0293 
0294 verify_ulog "RM1" "xa_rollback" "1";
0295 verify_ulog "RM2" "xa_rollback" "1";
0296 
0297 
0298 echo ""
0299 echo "************************************************************************"
0300 echo "Return abort propagate"
0301 echo "************************************************************************"
0302 
0303 cat << EOF > lib1.rets
0304 xa_open_entry:0:1:0
0305 xa_close_entry:0:1:0
0306 xa_start_entry:0:1:0
0307 xa_end_entry:0:1:0
0308 xa_rollback_entry:0:1:0
0309 xa_prepare_entry:0:1:0
0310 xa_commit_entry:0:1:0
0311 xa_recover_entry:0:1:0
0312 xa_forget_entry:0:2:0
0313 xa_complete_entry:0:1:0
0314 xa_open_entry:0:1:0
0315 xa_close_entry:0:1:0
0316 xa_start_entry:0:1:0
0317 EOF
0318 
0319 cat << EOF > lib2.rets
0320 xa_open_entry:0:1:0
0321 xa_close_entry:0:1:0
0322 xa_start_entry:0:1:0
0323 xa_end_entry:-3:1:0:atmisv87_2
0324 xa_end_entry:0:1:0
0325 xa_rollback_entry:0:1:0
0326 xa_prepare_entry:0:1:0
0327 xa_commit_entry:0:1:0
0328 xa_recover_entry:0:1:0
0329 xa_forget_entry:0:1:0
0330 xa_complete_entry:0:1:0
0331 xa_open_entry:0:1:0
0332 xa_close_entry:0:1:0
0333 xa_start_entry:0:1:0
0334 EOF
0335 
0336 
0337 clean_ulog;
0338 # start only here, as we want fresh tables...
0339 xadmin sreload -y || go_out 1
0340 
0341 ERR=`NDRX_CCTAG="RM1" ./atmiclt87 2>&1`
0342 RET=$?
0343 # print the stuff
0344 echo "[$ERR]"
0345 
0346 if [ "X$RET" == "X0" ]; then
0347     echo "atmiclt87 must fail"
0348     go_out 1
0349 fi
0350 
0351 if [[ $ERR != *"TPEABORT"* ]]; then
0352     echo "Expected TPEABORT"
0353     go_out 1
0354 fi
0355 
0356 verify_ulog "RM1" "xa_rollback" "1";
0357 verify_ulog "RM2" "xa_rollback" "1";
0358 
0359 echo ""
0360 echo "************************************************************************"
0361 echo "Forward abort propagate (normal)"
0362 echo "************************************************************************"
0363 
0364 cat << EOF > lib1.rets
0365 xa_open_entry:0:1:0
0366 xa_close_entry:0:1:0
0367 xa_start_entry:0:1:0
0368 xa_end_entry:0:1:0
0369 xa_rollback_entry:0:1:0
0370 xa_prepare_entry:0:1:0
0371 xa_commit_entry:0:1:0
0372 xa_recover_entry:0:1:0
0373 xa_forget_entry:0:1:0
0374 xa_complete_entry:0:1:0
0375 xa_open_entry:0:1:0
0376 xa_close_entry:0:1:0
0377 xa_start_entry:0:1:0
0378 EOF
0379 
0380 cat << EOF > lib2.rets
0381 xa_open_entry:0:1:0
0382 xa_close_entry:0:1:0
0383 xa_start_entry:0:1:0
0384 xa_end_entry:0:1:0
0385 xa_rollback_entry:0:1:0
0386 xa_prepare_entry:0:1:0
0387 xa_commit_entry:0:1:0
0388 xa_recover_entry:0:1:0
0389 xa_forget_entry:0:1:0
0390 xa_complete_entry:0:1:0
0391 xa_open_entry:0:1:0
0392 xa_close_entry:0:1:0
0393 xa_start_entry:0:1:0
0394 EOF
0395 
0396 clean_ulog;
0397 # start only here, as we want fresh tables...
0398 xadmin sreload -y || go_out 1
0399 
0400 ERR=`NDRX_CCTAG="RM1" ./atmiclt87 C TESTSVE1 2>&1`
0401 RET=$?
0402 # print the stuff
0403 echo "[$ERR]"
0404 
0405 if [ "X$RET" == "X0" ]; then
0406     echo "atmiclt87 must fail"
0407     go_out 1
0408 fi
0409 
0410 if [[ $ERR != *"TPEABORT"* ]]; then
0411     echo "Expected TPEABORT"
0412     go_out 1
0413 fi
0414 
0415 verify_ulog "RM1" "xa_rollback" "1";
0416 verify_ulog "RM2" "xa_rollback" "1";
0417 
0418 echo ""
0419 echo "************************************************************************"
0420 echo "Return abort propagate (normal)"
0421 echo "************************************************************************"
0422 
0423 cat << EOF > lib1.rets
0424 xa_open_entry:0:1:0
0425 xa_close_entry:0:1:0
0426 xa_start_entry:0:1:0
0427 xa_end_entry:0:1:0
0428 xa_rollback_entry:0:1:0
0429 xa_prepare_entry:0:1:0
0430 xa_commit_entry:0:1:0
0431 xa_recover_entry:0:1:0
0432 xa_forget_entry:0:1:0
0433 xa_complete_entry:0:1:0
0434 xa_open_entry:0:1:0
0435 xa_close_entry:0:1:0
0436 xa_start_entry:0:1:0
0437 EOF
0438 
0439 cat << EOF > lib2.rets
0440 xa_open_entry:0:1:0
0441 xa_close_entry:0:1:0
0442 xa_start_entry:0:1:0
0443 xa_end_entry:0:1:0
0444 xa_rollback_entry:0:1:0
0445 xa_prepare_entry:0:1:0
0446 xa_commit_entry:0:1:0
0447 xa_recover_entry:0:1:0
0448 xa_forget_entry:0:1:0
0449 xa_complete_entry:0:1:0
0450 xa_open_entry:0:1:0
0451 xa_close_entry:0:1:0
0452 xa_start_entry:0:1:0
0453 EOF
0454 
0455 
0456 clean_ulog;
0457 # start only here, as we want fresh tables...
0458 xadmin sreload -y || go_out 1
0459 
0460 ERR=`NDRX_CCTAG="RM1" ./atmiclt87 C TESTSVE1_RET 2>&1`
0461 RET=$?
0462 # print the stuff
0463 echo "[$ERR]"
0464 
0465 if [ "X$RET" == "X0" ]; then
0466     echo "atmiclt87 must fail"
0467     go_out 1
0468 fi
0469 
0470 if [[ $ERR != *"TPEABORT"* ]]; then
0471     echo "Expected TPEABORT"
0472     go_out 1
0473 fi
0474 
0475 verify_ulog "RM1" "xa_rollback" "1";
0476 verify_ulog "RM2" "xa_rollback" "1";
0477 
0478 echo ""
0479 echo "************************************************************************"
0480 echo "No return from the server"
0481 echo "************************************************************************"
0482 
0483 cat << EOF > lib1.rets
0484 xa_open_entry:0:1:0
0485 xa_close_entry:0:1:0
0486 xa_start_entry:0:1:0
0487 xa_end_entry:0:1:0
0488 xa_rollback_entry:0:1:0
0489 xa_prepare_entry:0:1:0
0490 xa_commit_entry:0:1:0
0491 xa_recover_entry:0:1:0
0492 xa_forget_entry:0:1:0
0493 xa_complete_entry:0:1:0
0494 xa_open_entry:0:1:0
0495 xa_close_entry:0:1:0
0496 xa_start_entry:0:1:0
0497 EOF
0498 
0499 cat << EOF > lib2.rets
0500 xa_open_entry:0:1:0
0501 xa_close_entry:0:1:0
0502 xa_start_entry:0:1:0
0503 xa_end_entry:0:1:0
0504 xa_rollback_entry:0:1:0
0505 xa_prepare_entry:0:1:0
0506 xa_commit_entry:0:1:0
0507 xa_recover_entry:0:1:0
0508 xa_forget_entry:0:1:0
0509 xa_complete_entry:0:1:0
0510 xa_open_entry:0:1:0
0511 xa_close_entry:0:1:0
0512 xa_start_entry:0:1:0
0513 EOF
0514 
0515 clean_ulog;
0516 # start only here, as we want fresh tables...
0517 xadmin stop -y || go_out 1
0518 export NDRX_TOUT=5
0519 xadmin start -y || go_out 1
0520 
0521 ERR=`NDRX_CCTAG="RM1" ./atmiclt87 C TESTSVE1_NORET 2>&1`
0522 RET=$?
0523 # print the stuff
0524 echo "[$ERR]"
0525 
0526 if [ "X$RET" == "X0" ]; then
0527     echo "atmiclt87 must fail"
0528     go_out 1
0529 fi
0530 
0531 if [[ $ERR != *"TPETIME"* ]]; then
0532     echo "Expected TPETIME"
0533     go_out 1
0534 fi
0535 
0536 #
0537 # Rollback must have happen
0538 #
0539 verify_ulog "RM1" "xa_rollback" "1";
0540 verify_ulog "RM2" "xa_rollback" "0";
0541 
0542 
0543 #
0544 # Reset back to norm
0545 #
0546 export NDRX_TOUT=10
0547 
0548 echo ""
0549 echo "************************************************************************"
0550 echo "SUSPEND failed"
0551 echo "************************************************************************"
0552 
0553 cat << EOF > lib1.rets
0554 xa_open_entry:0:1:0
0555 xa_close_entry:0:1:0
0556 xa_start_entry:0:1:0
0557 xa_end_entry:-4:1:0
0558 xa_rollback_entry:0:1:0
0559 xa_prepare_entry:0:1:0
0560 xa_commit_entry:0:1:0
0561 xa_recover_entry:0:1:0
0562 xa_forget_entry:0:1:0
0563 xa_complete_entry:0:1:0
0564 xa_open_entry:0:1:0
0565 xa_close_entry:0:1:0
0566 xa_start_entry:0:1:0
0567 EOF
0568 
0569 cat << EOF > lib2.rets
0570 xa_open_entry:0:1:0
0571 xa_close_entry:0:1:0
0572 xa_start_entry:0:1:0
0573 xa_end_entry:0:1:0
0574 xa_rollback_entry:0:1:0
0575 xa_prepare_entry:0:1:0
0576 xa_commit_entry:0:1:0
0577 xa_recover_entry:0:1:0
0578 xa_forget_entry:0:1:0
0579 xa_complete_entry:0:1:0
0580 xa_open_entry:0:1:0
0581 xa_close_entry:0:1:0
0582 xa_start_entry:0:1:0
0583 EOF
0584 
0585 clean_ulog;
0586 # start only here, as we want fresh tables...
0587 xadmin stop -y || go_out 1
0588 xadmin start -y || go_out 1
0589 
0590 ERR=`NDRX_CCTAG="RM1" ./atmiclt87 C SUSPEND 2>&1`
0591 RET=$?
0592 # print the stuff
0593 echo "[$ERR]"
0594 
0595 if [ "X$RET" == "X0" ]; then
0596     echo "atmiclt87 must fail"
0597     go_out 1
0598 fi
0599 
0600 if [[ $ERR != *"TPEABORT"* ]]; then
0601     echo "Expected TPEABORT"
0602     go_out 1
0603 fi
0604 
0605 #
0606 # Rollback must have happen
0607 #
0608 verify_ulog "RM1" "xa_rollback" "1";
0609 verify_ulog "RM2" "xa_rollback" "0";
0610 
0611 echo ""
0612 echo "************************************************************************"
0613 echo "Validate participant commit/abort rejection"
0614 echo "************************************************************************"
0615 
0616 cat << EOF > lib1.rets
0617 xa_open_entry:0:1:0
0618 xa_close_entry:0:1:0
0619 xa_start_entry:0:1:0
0620 xa_end_entry:0:1:0
0621 xa_rollback_entry:0:1:0
0622 xa_prepare_entry:0:1:0
0623 xa_commit_entry:0:1:0
0624 xa_recover_entry:0:1:0
0625 xa_forget_entry:0:1:0
0626 xa_complete_entry:0:1:0
0627 xa_open_entry:0:1:0
0628 xa_close_entry:0:1:0
0629 xa_start_entry:0:1:0
0630 EOF
0631 
0632 cat << EOF > lib2.rets
0633 xa_open_entry:0:1:0
0634 xa_close_entry:0:1:0
0635 xa_start_entry:0:1:0
0636 xa_end_entry:0:1:0
0637 xa_rollback_entry:0:1:0
0638 xa_prepare_entry:0:1:0
0639 xa_commit_entry:0:1:0
0640 xa_recover_entry:0:1:0
0641 xa_forget_entry:0:1:0
0642 xa_complete_entry:0:1:0
0643 xa_open_entry:0:1:0
0644 xa_close_entry:0:1:0
0645 xa_start_entry:0:1:0
0646 EOF
0647 
0648 clean_ulog;
0649 # start here, we want fresh tables loaded...
0650 xadmin sreload -y || go_out 1
0651 
0652 NDRX_CCTAG="RM1" ./atmiclt87 C TEST1_PART
0653 RET=$?
0654 
0655 if [ "X$RET" != "X0" ]; then
0656     echo "Build atmiclt87 failed"
0657     go_out 1
0658 fi
0659 
0660 verify_ulog "RM1" "xa_rollback" "0";
0661 verify_ulog "RM2" "xa_rollback" "0";
0662 
0663 verify_ulog "RM1" "xa_commit" "1";
0664 verify_ulog "RM2" "xa_commit" "0";
0665 
0666 echo ""
0667 echo "************************************************************************"
0668 echo "Server starts transaction and performs tpreturn"
0669 echo "************************************************************************"
0670 
0671 cat << EOF > lib1.rets
0672 xa_open_entry:0:1:0
0673 xa_close_entry:0:1:0
0674 xa_start_entry:0:1:0
0675 xa_end_entry:0:1:0
0676 xa_rollback_entry:0:1:0
0677 xa_prepare_entry:0:1:0
0678 xa_commit_entry:0:1:0
0679 xa_recover_entry:0:1:0
0680 xa_forget_entry:0:1:0
0681 xa_complete_entry:0:1:0
0682 xa_open_entry:0:1:0
0683 xa_close_entry:0:1:0
0684 xa_start_entry:0:1:0
0685 EOF
0686 
0687 cat << EOF > lib2.rets
0688 xa_open_entry:0:1:0
0689 xa_close_entry:0:1:0
0690 xa_start_entry:0:1:0
0691 xa_end_entry:0:1:0
0692 xa_rollback_entry:0:1:0
0693 xa_prepare_entry:0:1:0
0694 xa_commit_entry:0:1:0
0695 xa_recover_entry:0:1:0
0696 xa_forget_entry:0:1:0
0697 xa_complete_entry:0:1:0
0698 xa_open_entry:0:1:0
0699 xa_close_entry:0:1:0
0700 xa_start_entry:0:1:0
0701 EOF
0702 
0703 clean_ulog;
0704 # start here, we want fresh tables loaded...
0705 xadmin sreload -y || go_out 1
0706 
0707 ERR=`NDRX_CCTAG="RM1" ./atmiclt87 N TESTSVE1_TRANRET 2>&1`
0708 RET=$?
0709 # print the stuff
0710 echo "[$ERR]"
0711 
0712 if [ "X$RET" == "X0" ]; then
0713     echo "atmiclt87 must fail"
0714     go_out 1
0715 fi
0716 
0717 if [[ $ERR != *"TPESVCERR"* ]]; then
0718     echo "Expected TPESVCERR"
0719     go_out 1
0720 fi
0721 
0722 verify_ulog "RM1" "xa_start" "1";
0723 verify_ulog "RM2" "xa_start" "0";
0724 
0725 verify_ulog "RM1" "xa_rollback" "1";
0726 verify_ulog "RM2" "xa_rollback" "0";
0727 
0728 verify_ulog "RM1" "xa_commit" "0";
0729 verify_ulog "RM2" "xa_commit" "0";
0730 
0731 
0732 echo ""
0733 echo "************************************************************************"
0734 echo "Server starts transaction and performs tpforward"
0735 echo "************************************************************************"
0736 
0737 cat << EOF > lib1.rets
0738 xa_open_entry:0:1:0
0739 xa_close_entry:0:1:0
0740 xa_start_entry:0:1:0
0741 xa_end_entry:0:1:0
0742 xa_rollback_entry:0:1:0
0743 xa_prepare_entry:0:1:0
0744 xa_commit_entry:0:1:0
0745 xa_recover_entry:0:1:0
0746 xa_forget_entry:0:1:0
0747 xa_complete_entry:0:1:0
0748 xa_open_entry:0:1:0
0749 xa_close_entry:0:1:0
0750 xa_start_entry:0:1:0
0751 EOF
0752 
0753 cat << EOF > lib2.rets
0754 xa_open_entry:0:1:0
0755 xa_close_entry:0:1:0
0756 xa_start_entry:0:1:0
0757 xa_end_entry:0:1:0
0758 xa_rollback_entry:0:1:0
0759 xa_prepare_entry:0:1:0
0760 xa_commit_entry:0:1:0
0761 xa_recover_entry:0:1:0
0762 xa_forget_entry:0:1:0
0763 xa_complete_entry:0:1:0
0764 xa_open_entry:0:1:0
0765 xa_close_entry:0:1:0
0766 xa_start_entry:0:1:0
0767 EOF
0768 
0769 clean_ulog;
0770 # start here, we want fresh tables loaded...
0771 xadmin sreload -y || go_out 1
0772 
0773 ERR=`NDRX_CCTAG="RM1" ./atmiclt87 N TESTSVE1_TRANFWD 2>&1`
0774 RET=$?
0775 # print the stuff
0776 echo "[$ERR]"
0777 
0778 if [ "X$RET" == "X0" ]; then
0779     echo "atmiclt87 must fail"
0780     go_out 1
0781 fi
0782 
0783 if [[ $ERR != *"TPESVCERR"* ]]; then
0784     echo "Expected TPESVCERR"
0785     go_out 1
0786 fi
0787 
0788 verify_ulog "RM1" "xa_start" "1";
0789 verify_ulog "RM2" "xa_start" "0";
0790 
0791 verify_ulog "RM1" "xa_rollback" "1";
0792 verify_ulog "RM2" "xa_rollback" "0";
0793 
0794 verify_ulog "RM1" "xa_commit" "0";
0795 verify_ulog "RM2" "xa_commit" "0";
0796 
0797 
0798 go_out 0
0799 
0800 # vim: set ts=4 sw=4 et smartindent: