diff options
Diffstat (limited to 'tests/include.rc')
| -rw-r--r-- | tests/include.rc | 248 |
1 files changed, 248 insertions, 0 deletions
diff --git a/tests/include.rc b/tests/include.rc new file mode 100644 index 000000000..80457f124 --- /dev/null +++ b/tests/include.rc @@ -0,0 +1,248 @@ +M0=${M0:=/mnt/glusterfs/0}; # 0th mount point for FUSE +M1=${M1:=/mnt/glusterfs/1}; # 1st mount point for FUSE +N0=${N0:=/mnt/nfs/0}; # 0th mount point for NFS +N1=${N1:=/mnt/nfs/1}; # 1st mount point for NFS +V0=${V0:=patchy}; # volume name to use in tests +V1=${V1:=patchy1}; # volume name to use in tests +B0=${B0:=/d/backends}; # top level of brick directories +H0=${H0:=`hostname --fqdn`}; # hostname +DEBUG=${DEBUG:=0} # turn on debugging? +statedumpdir=`gluster --print-statedumpdir`; # Default directory for statedump + +CLI="gluster --mode=script"; + +mkdir -p $B0; +mkdir -p $M0 $M1; +mkdir -p $N0 $N1; + +testcnt=`egrep '^[[:space:]]*(EXPECT|TEST|EXPECT_WITHIN|EXPECT_KEYWORD)[[:space:]]' $0 | wc -l` +expect_tests=`egrep '^[[:space:]]*TESTS_EXPECTED_IN_LOOP[[:space:]]*' $0` + +x_ifs=$IFS +IFS=$'\n' +for line in $expect_tests; do + expect_tests=`echo $line | cut -f 2 -d =` + testcnt=`expr $testcnt + $expect_tests` +done +IFS=$x_ifs + +echo 1..$testcnt + +t=1 + +function dbg() +{ + [ "x$DEBUG" = "x0" ] || echo "$*" >&2; +} + + +function test_header() +{ + dbg "========================="; + dbg "TEST $t (line $TESTLINE): $*"; +} + + +function test_footer() +{ + RET=$? + local err=$1 + + if [ $RET -eq 0 ]; then + echo "ok $t"; + else + echo "not ok $t $err"; + if [ "$EXIT_EARLY" = "1" ]; then + exit $RET + fi + fi + + dbg "RESULT $t: $RET"; + + t=`expr $t + 1`; +} + +function test_expect_footer() +{ + local e=$1 + local a=$2 + local err="" + + if [ "x${e}" != "x${a}" ]; then + err="Got \"$a\" instead of \"$e\"" + fi + [[ "x${e}" == "x${a}" ]]; + test_footer "$err"; +} + +function _EXPECT() +{ + TESTLINE=$1; + shift; + local a="" + + test_header "$@"; + + e="$1"; + shift; + a=$("$@" | tail -1) + + test_expect_footer "$e" "$a"; +} + +function _EXPECT_KEYWORD() +{ + TESTLINE=$1; + shift; + + test_header "$@"; + + e="$1"; + shift; + "$@" | tail -1 | grep -q "$e" + + test_footer; +} + + +function _TEST() +{ + TESTLINE=$1; + shift; + local redirect="" + + test_header "$@"; + + if [ "$1" = "!" ]; then + redirect="2>&1" + fi + + eval "$@" >/dev/null $redirect + + test_footer; +} + +function _EXPECT_WITHIN() +{ + TESTLINE=$1 + shift; + + local timeout=$1 + shift; + + test_header "$@" + + e=$1; + shift; + + local endtime=$(( ${timeout}+`date +%s` )) + + local success=0 + while [ `date +%s` -lt $endtime ]; do + ("$@") | tail -1 | egrep -q "^${e}\$" + + local pipestatus=(${PIPESTATUS[@]}) + + ## Check command success + if [ ${pipestatus[0]} -ne 0 ]; then + break; + fi + + ## Check match success + if [ ${pipestatus[2]} -eq 0 ]; then + success=1; + break; + fi + sleep 1; + done + + if [ $success -eq 1 ]; then + true; + else + false; + fi + + test_footer; +} + + +function SKIP_TESTS() +{ + dbg "Skipping tests $t-$testcnt"; + while [ $t -le $testcnt ]; do + true ; test_footer; + done +} + + +function _TEST_IN_LOOP() +{ + testcnt=`expr $testcnt + 1`; + _TEST $@ +} + + +function cleanup() +{ + killall -15 glusterfs glusterfsd glusterd 2>/dev/null || true; + killall -9 glusterfs glusterfsd glusterd 2>/dev/null || true; + + type cleanup_lvm &>/dev/null && cleanup_lvm + + MOUNTPOINTS=`mount | grep "$B0/" | awk '{print $3}'` + for m in $MOUNTPOINTS; + do + umount $m + done + + LOOPDEVICES=`losetup -a | grep "$B0/" | awk '{print $1}' | tr -d :` + for l in $LOOPDEVICES; + do + losetup -d $l + done + + + rm -rf /var/lib/glusterd/* $B0/* /etc/glusterd/*; + + umount -l $M0 2>/dev/null || true; + umount -l $M1 2>/dev/null || true; + umount -l $N0 2>/dev/null || true; + umount -l $N1 2>/dev/null || true; + +} + +function volinfo_field() +{ + local vol=$1; + local field=$2; + + $CLI volume info $vol | grep "^$field: " | sed 's/.*: //'; +} + +function cleanup_tester () +{ + local exe=$1 + rm -f $exe +} + +function build_tester () +{ + local cfile=$1 + local fname=$(basename "$cfile") + local ext="${fname##*.}" + local execname="${fname%.*}" + gcc -g -o $(dirname $cfile)/$execname $cfile +} + +function process_leak_count () +{ + local pid=$1; + return $(ls -lh /proc/$pid/fd | grep "(deleted)"| wc -l) +} + +alias EXPECT='_EXPECT $LINENO' +alias TEST='_TEST $LINENO' +alias EXPECT_WITHIN='_EXPECT_WITHIN $LINENO' +alias EXPECT_KEYWORD='_EXPECT_KEYWORD $LINENO' +alias TEST_IN_LOOP='_TEST_IN_LOOP $LINENO' +shopt -s expand_aliases |
