diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/README | 20 | ||||
-rwxr-xr-x | tests/basic/mount.t | 62 | ||||
-rwxr-xr-x | tests/basic/volume.t | 47 | ||||
-rwxr-xr-x | tests/bugs/bug-000000.t | 9 | ||||
-rw-r--r-- | tests/include.rc | 93 |
5 files changed, 231 insertions, 0 deletions
diff --git a/tests/README b/tests/README new file mode 100644 index 00000000000..fe45f5bb829 --- /dev/null +++ b/tests/README @@ -0,0 +1,20 @@ +How to use use +============== + +- Build and install the version of glusterfs with your changes. Make + sure the installed version is accessible from $PATH. + +- (optional) Set environment variables to specify location of + export directories and mount points. Unless you have special + requirements, the defaults should just work. The variables + themselves can be found at the top of tests/include.rc. All + of them can be overriden with environment variables. + +- Execute run-tests.sh in the top level directory as root. + +- If some test cases fail, you can execute the failed test case script + directly bypassing run-tests.sh. At this time it might be + useful to set the envrionment variable DEBUG=1 before running + the individual test script directly by hand. + +- BE WARNED THAT THE TEST CASES DELETE /var/lib/glusterd/* !!! diff --git a/tests/basic/mount.t b/tests/basic/mount.t new file mode 100755 index 00000000000..0fdef65de55 --- /dev/null +++ b/tests/basic/mount.t @@ -0,0 +1,62 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc + +cleanup; + + +## Start and create a volume +TEST glusterd +TEST pidof glusterd +TEST $CLI volume info; + +TEST $CLI volume create $V0 replica 2 stripe 2 $H0:$B0/${V0}{1,2,3,4,5,6,7,8}; + +function volinfo_field() +{ + local vol=$1; + local field=$2; + + $CLI volume info $vol | grep "^$field: " | sed 's/.*: //'; +} + + +## Verify volume is is created +EXPECT "$V0" volinfo_field $V0 'Volume Name'; +EXPECT 'Created' volinfo_field $V0 'Status'; + + +## Start volume and verify +TEST $CLI volume start $V0; +EXPECT 'Started' volinfo_field $V0 'Status'; + + +## Make volume tightly consistent for metdata +TEST $CLI volume set $V0 performance.stat-prefetch off; + +## Mount FUSE with caching disabled +TEST glusterfs --entry-timeout=0 --attribute-timeout=0 -s $H0 --volfile-id $V0 $M0; + +## Wait for volume to register with rpc.mountd +sleep 5; + +## Mount NFS +TEST mount -t nfs -o vers=3,nolock,soft,intr $H0:/$V0 $N0; + + +## Test for consistent views between NFS and FUSE mounts +TEST ! stat $M0/newfile; +TEST touch $M0/newfile; +TEST stat $N0/newfile; +TEST rm $N0/newfile; +TEST ! stat $M0/newfile; + + +## Finish up +TEST $CLI volume stop $V0; +EXPECT 'Stopped' volinfo_field $V0 'Status'; + +TEST $CLI volume delete $V0; +TEST ! $CLI volume info $V0; + +cleanup; diff --git a/tests/basic/volume.t b/tests/basic/volume.t new file mode 100755 index 00000000000..de3f001e09c --- /dev/null +++ b/tests/basic/volume.t @@ -0,0 +1,47 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc + +cleanup; + +TEST glusterd +TEST pidof glusterd +TEST $CLI volume info; + +TEST $CLI volume create $V0 replica 2 stripe 2 $H0:$B0/${V0}{1,2,3,4,5,6,7,8}; + + +function volinfo_field() +{ + local vol=$1; + local field=$2; + + $CLI volume info $vol | grep "^$field: " | sed 's/.*: //'; +} + + +function brick_count() +{ + local vol=$1; + + $CLI volume info $vol | egrep "^Brick[0-9]+: " | wc -l; +} + + +EXPECT "$V0" volinfo_field $V0 'Volume Name'; +EXPECT 'Created' volinfo_field $V0 'Status'; +EXPECT '8' brick_count $V0 + +TEST $CLI volume start $V0; +EXPECT 'Started' volinfo_field $V0 'Status'; + +TEST $CLI volume add-brick $V0 $H0:$B0/${V0}{9,10,11,12}; +EXPECT '12' brick_count $V0 + +TEST $CLI volume stop $V0; +EXPECT 'Stopped' volinfo_field $V0 'Status'; + +TEST $CLI volume delete $V0; +TEST ! $CLI volume info $V0; + +cleanup; diff --git a/tests/bugs/bug-000000.t b/tests/bugs/bug-000000.t new file mode 100755 index 00000000000..7f3d15c9d59 --- /dev/null +++ b/tests/bugs/bug-000000.t @@ -0,0 +1,9 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc + +cleanup; + +TEST glusterd + +cleanup; diff --git a/tests/include.rc b/tests/include.rc new file mode 100644 index 00000000000..bc9784cf49b --- /dev/null +++ b/tests/include.rc @@ -0,0 +1,93 @@ +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 +B0=${B0:=/d/backends}; # top level of brick directories +H0=${H0:=`hostname --fqdn`}; # hostname +DEBUG=${DEBUG:=0} # turn on debugging? + +CLI="gluster --mode=script"; + +mkdir -p $B0; +mkdir -p $M0 $M1; +mkdir -p $N0 $N1; + +testcnt=`egrep '^[ \t]*(EXPECT|TEST)' $0 | wc -l`; +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=$? + + if [ $RET -eq 0 ]; then + echo "ok $t"; + else + echo "not ok $t"; + fi + + dbg "RESULT $t: $RET"; + + t=`expr $t + 1`; +} + + +function _EXPECT() +{ + TESTLINE=$1; + shift; + + test_header "$@"; + + e="$1"; + shift; + "$@" | tail -1 | egrep '^'${e}'$' >/dev/null 2>&1; + + test_footer; +} + + +function _TEST() +{ + TESTLINE=$1; + shift; + + test_header "$@"; + + eval "$@" >/dev/null 2>&1 + + test_footer; +} + + +function cleanup() +{ + killall -15 glusterfs glusterfsd glusterd 2>/dev/null || true; + killall -9 glusterfs glusterfsd glusterd 2>/dev/null || true; + 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; +} + + +alias EXPECT='_EXPECT $LINENO' +alias TEST='_TEST $LINENO' +shopt -s expand_aliases |