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  | 
