0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037 export TESTNAME="test071_buildtools"
0038
0039 PWD=`pwd`
0040 if [ `echo $PWD | grep $TESTNAME ` ]; then
0041
0042 echo > /dev/null
0043 else
0044
0045 pushd .
0046 echo "Doing cd"
0047 cd $TESTNAME
0048 fi;
0049
0050 . ../testenv.sh
0051
0052 export TESTDIR="$NDRX_APPHOME/atmitest/$TESTNAME"
0053 export NDRX_ULOG=$TESTDIR
0054 export PATH=$PATH:$TESTDIR
0055 export NDRX_SILENT=Y
0056
0057
0058 if [ "X$CC" == "X" ]; then
0059 export CC=cc
0060 fi
0061
0062 export NDRX_TOUT=10
0063
0064
0065
0066
0067 set_dom1() {
0068 echo "Setting domain 1"
0069 . ../dom1.sh
0070 export NDRX_CONFIG=$TESTDIR/ndrxconfig-dom1.xml
0071 export NDRX_DMNLOG=$TESTDIR/ndrxd-dom1.log
0072 export NDRX_LOG=$TESTDIR/ndrx-dom1.log
0073 export NDRX_DEBUG_CONF=$TESTDIR/debug-dom1.conf
0074
0075 NDRX_EXT=so
0076 if [ "$(uname)" == "Darwin" ]; then
0077 NDRX_EXT=dylib
0078 fi
0079
0080
0081
0082
0083 export NDRX_XA_RES_ID=1
0084 export NDRX_XA_OPEN_STR=-
0085 export NDRX_XA_CLOSE_STR=$NDRX_XA_OPEN_STR
0086 export NDRX_XA_DRIVERLIB=../../xadrv/tms/libndrxxatmsx.$NDRX_EXT
0087 export NDRX_XA_RMLIB=-
0088
0089 echo "Driver: $NDRX_XA_DRIVERLIB"
0090 echo "RM: $NDRX_XA_RMLIB"
0091
0092 export NDRX_XA_LAZY_INIT=0
0093
0094 }
0095
0096
0097
0098
0099 function go_out {
0100 echo "Test exiting with: $1"
0101
0102 set_dom1;
0103 xadmin stop -y
0104 xadmin down -y 2>&1 2>/dev/null
0105
0106
0107 xadmin killall atmiclt71
0108
0109 popd 2>/dev/null
0110 exit $1
0111 }
0112
0113 rm *.log 2>/dev/null
0114 rm ULOG* 2>/dev/null
0115
0116 UNAME=`uname -s`
0117
0118
0119 function comp_version { echo "$@" | awk -F. '{ printf("%d%03d%03d\n", $1,$2,$3); }'; }
0120
0121
0122
0123 for TEST_COMP in "cc" "c++"; do
0124
0125
0126
0127
0128 xadmin stop -y
0129 xadmin down -y 2>&1 2>/dev/null
0130
0131 rm -f tmstest atmi.sv71_dum atmi.sv71 atmi.sv71def atmi.sv71thr atmi.sv71nthr atmi.sv71err atmi.sv71err2 atmiclt71err atmiclt71 atmiclt71dflt atmiclt71_txn 2>/dev/null
0132
0133
0134 COMPFLAGS=""
0135
0136 if [ $TEST_COMP == "c++" ]; then
0137
0138 if [ "$UNAME" != "Linux" ]; then
0139 echo "c++ Only available for linux (thus done)"
0140 go_out 0
0141 fi
0142
0143
0144 if [ $(comp_version `gcc --version | awk '/gcc/ {print $(NF-1)}'`) -ge $(comp_version "4.3.4") ]; then
0145 COMPFLAGS="-Wno-write-strings"
0146 fi
0147
0148 echo "Switching to C++"
0149 export CC=c++
0150
0151 fi
0152
0153
0154 echo "Configure environment..."
0155
0156
0157
0158 ADDFLAGS=""
0159
0160
0161
0162 case $UNAME in
0163
0164 AIX)
0165
0166 $CC -qversion 2>/dev/null
0167 RET=$?
0168 export OBJECT_MODE=64
0169
0170 if [ "X$RET" == "X0" ]; then
0171 echo "Xlc compiler..."
0172 COMPFLAGS="-brtl"
0173 ADDFLAGS="-qtls -q64"
0174 else
0175 echo "Default to gcc..."
0176 COMPFLAGS="-Wl,-brtl -maix64"
0177 fi
0178
0179 ;;
0180 SunOS)
0181 COMPFLAGS="-m64"
0182 ;;
0183
0184 *)
0185
0186 ;;
0187 esac
0188
0189
0190 if [ "X`xadmin pmode | grep '#define NDRX_SANITIZE'`" != "X" ]; then
0191 COMPFLAGS="$COMPFLAGS -fsanitize=address"
0192 fi
0193
0194
0195 echo "Firstly lets build the processes"
0196
0197
0198 export NDRX_SILENT=Y
0199 export NDRX_DEBUG_CONF=$TESTDIR/debug-dom1.conf
0200 export NDRX_HOME=.
0201 export PATH=$PATH:$PWD/../../buildtools
0202 export CFLAGS="-I../../include -L../../libatmi -L../../libubf -L../../tmsrv -L../../libatmisrv -L../../libexthpool -L../../libnstd $COMPFLAGS"
0203
0204
0205 echo ""
0206 echo "************************************************************************"
0207 echo "Building tms... (CC: $CC)"
0208 echo "************************************************************************"
0209 buildtms -o tmstest -rTestSw -v
0210
0211 RET=$?
0212
0213 if [ "X$RET" != "X0" ]; then
0214 echo "Failed to build tmstest: $RET"
0215 go_out 1
0216 fi
0217
0218 echo "Build server dummy..."
0219 buildserver -o atmi.sv71_dum -rTestSw -v -f atmisv71_dum.c
0220
0221 RET=$?
0222
0223 if [ "X$RET" != "X0" ]; then
0224 echo "Failed to build atmi.sv71_dum: $RET"
0225 go_out 2
0226 fi
0227
0228
0229 echo ""
0230 echo "************************************************************************"
0231 echo "Build server..."
0232 echo "************************************************************************"
0233
0234 buildserver -o atmi.sv71 -rTestSw -a atmisv71_1.c -l atmisv71_2.c -v -f "$ADDFLAGS" \
0235 -s A,B,C:TESTSV -sECHOSV -s:TESTSV -sZ:ECHOSV -f atmisv71_3.c -l atmisv71_4.c \
0236 -s @advertise_file.txt -s:DUMFUNC
0237
0238 RET=$?
0239
0240 if [ "X$RET" != "X0" ]; then
0241 echo "Failed to build atmi.sv71: $RET"
0242 go_out 2
0243 fi
0244
0245 echo ""
0246 echo "************************************************************************"
0247 echo "Build server, default tpsrvinit(), default tpsrvdone()..."
0248 echo "************************************************************************"
0249
0250 buildserver -o atmi.sv71def -rTestSw -v -f "$ADDFLAGS" -sXX:ECHOSV -f atmisv71_4.c
0251
0252 RET=$?
0253
0254 if [ "X$RET" != "X0" ]; then
0255 echo "Failed to build atmi.sv71def: $RET"
0256 go_out 2
0257 fi
0258
0259 echo ""
0260 echo "************************************************************************"
0261 echo "Build server, default tpsrvinit(), default tpsrvdone()..., threaded"
0262 echo "************************************************************************"
0263
0264 buildserver -o atmi.sv71thr -rTestSw -t -v -f "$ADDFLAGS" -sWTHR:ECHOSV -f atmisv71_4.c
0265
0266 RET=$?
0267
0268 if [ "X$RET" != "X0" ]; then
0269 echo "Failed to build atmi.sv71thr: $RET"
0270 go_out 2
0271 fi
0272
0273 echo ""
0274 echo "************************************************************************"
0275 echo "Build server, default tpsrvinit(), default tpsrvdone()..., non-threaded"
0276 echo "************************************************************************"
0277
0278 buildserver -o atmi.sv71nthr -rTestSw -v -f "$ADDFLAGS" -sNTHR:ECHOSV -f atmisv71_4.c
0279
0280 RET=$?
0281
0282 if [ "X$RET" != "X0" ]; then
0283 echo "Failed to build atmi.sv71nthr: $RET"
0284 go_out 2
0285 fi
0286
0287 echo ""
0288 echo "************************************************************************"
0289 echo "Build server... (compile fail)"
0290 echo "************************************************************************"
0291 buildserver -o atmi.sv71err -rTestSw -f atmisv71_X.c -l atmisv71_2.c -v -f "$ADDFLAGS" \
0292 -s A,B,C:TESTSV -sECHOSV -s:TESTSV -sZ:ECHOSV -f atmisv71_3.c -l atmisv71_4.c
0293
0294 RET=$?
0295
0296 if [ "X$RET" == "X0" ]; then
0297 echo "atmi.sv71err shall fail (no source): $RET"
0298 go_out 2
0299 fi
0300
0301
0302 echo ""
0303 echo "************************************************************************"
0304 echo "Build server... (invalid compiler)"
0305 echo "************************************************************************"
0306 CC_SAVED=$CC
0307 export CC=no_such_compiler
0308 buildserver -o atmi.sv71err2 -rTestSw -f atmisv71_1.c -l atmisv71_2.c -v -f "$ADDFLAGS" \
0309 -s A,B,C:TESTSV -sECHOSV -s:TESTSV -sZ:ECHOSV -f atmisv71_3.c -l atmisv71_4.c
0310
0311 RET=$?
0312
0313 if [ "X$RET" == "X0" ]; then
0314 echo "atmi.sv71err2 shall fail (no compiler): $RET"
0315 go_out 2
0316 fi
0317
0318 export CC=$CC_SAVED
0319 export CFLAGS=""
0320 unset NDRX_HOME
0321
0322 export NDRX_RMFILE=./udataobj/RM
0323
0324 echo ""
0325 echo "************************************************************************"
0326 echo "Build client..., No switch..."
0327 echo "************************************************************************"
0328 buildclient -o atmiclt71err -rerrorsw -a atmiclt71_1.c -l atmiclt71_2.c -v -f "$COMPFLAGS $ADDFLAGS" \
0329 -l atmiclt71_3.c -f atmiclt71_4.c \
0330 -f "-I../../include -L../../libatmi -L../../libubf -L../../tmsrv -L../../libatmisrv -L../../libnstd"
0331 RET=$?
0332
0333 if [ "X$RET" == "X0" ]; then
0334 echo "Build atmiclt71err shall fail, but was OK"
0335 go_out 2
0336 fi
0337
0338 echo ""
0339 echo "************************************************************************"
0340 echo "Build client..., Build OK"
0341 echo "************************************************************************"
0342 buildclient -o atmiclt71 -rnullsw -f atmiclt71_1.c -l atmiclt71_2.c -v -f "$COMPFLAGS $ADDFLAGS" \
0343 -l atmiclt71_3.c -f atmiclt71_4.c \
0344 -f "-I../../include -L../../libatmi -L../../libubf -L../../libatmiclt -L../../libnstd"
0345 RET=$?
0346
0347 if [ "X$RET" != "X0" ]; then
0348 echo "Failed to build atmiclt71: $RET"
0349 go_out 2
0350 fi
0351
0352 echo ""
0353 echo "************************************************************************"
0354 echo "Build client default sw..., Build OK"
0355 echo "************************************************************************"
0356 buildclient -o atmiclt71dflt -f atmiclt71_1.c -l atmiclt71_2.c -v -f "$COMPFLAGS $ADDFLAGS" \
0357 -l atmiclt71_3.c -f atmiclt71_4.c \
0358 -f "-I../../include -L../../libatmi -L../../libubf -L../../libnstd -L ../../libatmiclt"
0359 RET=$?
0360
0361 if [ "X$RET" != "X0" ]; then
0362 echo "Failed to build atmiclt71: $RET"
0363 go_out 2
0364 fi
0365
0366 echo ""
0367 echo "************************************************************************"
0368 echo "Build client, working switch, Build OK"
0369 echo "************************************************************************"
0370 buildclient -o atmiclt71_txn -a atmiclt71_txn.c -v -r TestSw -f "$COMPFLAGS $ADDFLAGS" \
0371 -f "-I../../include -L../../libatmi -L../../libubf -L../../libnstd -L ../../libatmiclt"
0372 RET=$?
0373
0374 if [ "X$RET" != "X0" ]; then
0375 echo "Failed to build atmiclt71_txn: $RET"
0376 go_out 2
0377 fi
0378
0379
0380 echo "Now execute them..."
0381
0382
0383 SETLIBPATH="$PWD/../../libatmi:$PWD/../../libubf:$PWD/../../tmsrv:$PWD/../../libatmisrv:$PWD/../../libnstd:$PWD/../../libatmiclt:$PWD/../test021_xafull:$PWD/../../libps:$PWD/../../libpsstdlib"
0384
0385
0386
0387
0388 case $UNAME in
0389
0390 Darwin)
0391 export DYLD_LIBRARY_PATH=$SETLIBPATH
0392 ;;
0393
0394 AIX)
0395
0396
0397 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SETLIBPATH
0398 ;;
0399
0400 *)
0401 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SETLIBPATH
0402 echo "LIBPATH: [$LD_LIBRARY_PATH]"
0403 ;;
0404 esac
0405
0406
0407
0408 rm -rf $TESTDIR/RM1 2>/dev/null
0409 rm -rf $TESTDIR/RM2 2>/dev/null
0410
0411
0412
0413
0414
0415
0416 mkdir $TESTDIR/RM1
0417 mkdir $TESTDIR/RM2
0418
0419 mkdir $TESTDIR/RM2/active
0420 mkdir $TESTDIR/RM2/prepared
0421 mkdir $TESTDIR/RM2/committed
0422 mkdir $TESTDIR/RM2/aborted
0423 export NDRX_TEST_RM_DIR=$TESTDIR/RM2
0424
0425 set_dom1;
0426 xadmin down -y
0427 xadmin start -y || go_out 1
0428
0429 RET=0
0430
0431 xadmin psc
0432 xadmin ppm
0433
0434 CNT=`xadmin psc | grep ECHO2SV | wc | awk '{print $1}'`
0435 if [ $CNT -ne 1 ]; then
0436 echo "Invalid ECHO2SV count!: $CNT"
0437 go_out -10
0438 fi
0439
0440 CNT=`xadmin psc | grep FUNCALIAS | wc | awk '{print $1}'`
0441 if [ $CNT -ne 1 ]; then
0442 echo "Invalid FUNCALIAS count!: $CNT"
0443 go_out -11
0444 fi
0445
0446 echo Run off binaries...""
0447
0448 (./atmiclt71 2>&1) > ./atmiclt-dom1.log
0449 RET=$?
0450
0451 echo "Execute atmiclt71..."
0452 if [[ "X$RET" != "X0" ]]; then
0453 go_out $RET
0454 fi
0455
0456 echo "Execute atmiclt71dflt..."
0457 (./atmiclt71dflt 2>&1) > ./atmiclt-dom1_dlft.log
0458 RET=$?
0459
0460 if [[ "X$RET" != "X0" ]]; then
0461 go_out $RET
0462 fi
0463
0464 echo "Execute atmiclt71_txn..."
0465
0466
0467 (NDRX_XA_RES_ID=2 ./atmiclt71_txn 2>&1) > ./atmiclt71_txn.log
0468 RET=$?
0469
0470 if [[ "X$RET" != "X0" ]]; then
0471 echo "Failed to run atmiclt71_txn: $RET"
0472 go_out $RET
0473 fi
0474
0475 echo "Checking the committed record count..."
0476 CNT=`ls -1 RM2/committed/ | wc | awk '{print $1}'`
0477
0478 if [ $CNT -ne 1633 ]; then
0479 echo "1633 transactions must be committed, but got: $CNT"
0480 go_out -10
0481 fi
0482
0483
0484 CNT=`grep 'CLT' RM2/committed/* | wc | awk '{print $1}'`
0485
0486 if [ $CNT -ne 33 ]; then
0487 echo "CLT 33 not found: $CNT"
0488 go_out -1
0489 fi
0490
0491 if [ -f ./RM2/TRN-* ]; then
0492 echo "Transaction must be completed!"
0493 go_out -11
0494 fi
0495
0496
0497
0498
0499
0500
0501 xadmin stop -s atmi.sv71def
0502
0503
0504
0505 TXRES=`grep "tx_open: TX_OK" atmi.sv71def-dom1.log`
0506
0507 if [ "X$TXRES" == "X" ]; then
0508 echo "'tx_open: TX_OK' not found in atmi.sv71def-dom1.log"
0509 go_out -12
0510 fi
0511
0512
0513 TXRES=`grep "tx_close: TX_OK" atmi.sv71def-dom1.log`
0514
0515 if [ "X$TXRES" == "X" ]; then
0516 echo "'tx_close: TX_OK' not found in atmi.sv71def-dom1.log"
0517 go_out -12
0518 fi
0519
0520
0521 CNT=`xadmin psc | grep WTHR| wc | awk '{print $1}'`
0522 if [ $CNT -ne 1 ]; then
0523 echo "Invalid WTHR (threaded server count) shall be 1!: $CNT"
0524 go_out -13
0525 fi
0526
0527
0528 CNT=`xadmin psc | grep NTHR| wc | awk '{print $1}'`
0529 if [ $CNT -ne 1 ]; then
0530 echo "Invalid NTHR (non-threaded server count) shall be 1!: $CNT"
0531 go_out -13
0532 fi
0533
0534
0535
0536 if [ "X`grep 'falling back to single thread mode' ULOG*`" == "X" ]; then
0537 echo "Missing single-thread warning!"
0538 go_out -14
0539 fi
0540
0541
0542 if [ "X`grep TESTERROR *.log`" != "X" ]; then
0543 echo "Test error detected!"
0544 go_out -20
0545 fi
0546
0547
0548 done
0549
0550 go_out 0
0551
0552