diff options
-rw-r--r-- | tests/basic/uss.t | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/tests/basic/uss.t b/tests/basic/uss.t new file mode 100644 index 00000000000..44589f45b59 --- /dev/null +++ b/tests/basic/uss.t @@ -0,0 +1,158 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc +. $(dirname $0)/../snapshot.rc +. $(dirname $0)/../fileio.rc +. $(dirname $0)/../nfs.rc + +cleanup; + +TEST init_n_bricks 3; +TEST setup_lvm 3; + +TEST glusterd; + +TEST pidof glusterd; + +TEST $CLI volume create $V0 $H0:$L1 $H0:$L2 $H0:$L3; + +TEST $CLI volume start $V0; + +TEST glusterfs --volfile-server=$H0 --volfile-id=$V0 $M0; + +for i in {1..10} ; do echo "file" > $M0/file$i ; done + +TEST $CLI snapshot create snap1 $V0; + +for i in {11..20} ; do echo "file" > $M0/file$i ; done + +TEST $CLI snapshot create snap2 $V0; + +mkdir $M0/dir1; +mkdir $M0/dir2; + +for i in {1..10} ; do echo "foo" > $M0/dir1/foo$i ; done +for i in {1..10} ; do echo "foo" > $M0/dir2/foo$i ; done + +TEST $CLI snapshot create snap3 $V0; + +for i in {11..20} ; do echo "foo" > $M0/dir1/foo$i ; done +for i in {11..20} ; do echo "foo" > $M0/dir2/foo$i ; done + +TEST $CLI snapshot create snap4 $V0; + +UUIDS=$($CLI snapshot info | grep -i snap | grep -i Volume | grep -i Name | cut -d':' -f 2); + +echo $UUIDS > /tmp/tmp-snap-uuids; + +NAMES=$($CLI snapshot info | grep Snapshot | cut -d':' -f 2); + +echo $NAMES > /tmp/tmp-snap_names; + +TEST $CLI volume set $V0 features.uss enable; + +TEST umount $M0; + +TEST glusterfs --volfile-server=$H0 --volfile-id=$V0 $M0; + +TEST ls $M0/.snaps; + +NUM_SNAPS=$(ls $M0/.snaps | wc -l); + +TEST [ $NUM_SNAPS == 4 ] + +TEST ls $M0/.snaps/snap1; +TEST ls $M0/.snaps/snap2; +TEST ls $M0/.snaps/snap3; +TEST ls $M0/.snaps/snap4; + +TEST ls $M0/.snaps/snap3/dir1; +TEST ls $M0/.snaps/snap3/dir2; + +TEST ls $M0/.snaps/snap4/dir1; +TEST ls $M0/.snaps/snap4/dir2; + +TEST ls $M0/dir1/.snaps/ +TEST ! ls $M0/dir1/.snaps/snap1; +TEST ! ls $M0/dir2/.snaps/snap2; +TEST ls $M0/dir1/.snaps/snap3; +TEST ls $M0/dir2/.snaps/snap4; + +TEST fd1=`fd_available` +TEST fd_open $fd1 'r' $M0/.snaps/snap1/file1; +TEST fd_cat $fd1 + +# opening fd with in write mode for snapshot files should fail +TEST fd2=`fd_available` +TEST ! fd_open $fd1 'w' $M0/.snaps/snap1/file2; + +# lookup on .snaps in the snapshot world should fail +TEST ! stat $M0/.snaps/snap1/.snaps + +# creating new entries in snapshots should fail +TEST ! mkdir $M0/.snaps/new +TEST ! touch $M0/.snaps/snap2/other; + +TEST fd3=`fd_available` +TEST fd_open $fd3 'r' $M0/dir1/.snaps/snap3/foo1 + +TEST fd_cat $fd3; + +TEST fd_close $fd1; +TEST fd_close $fd2; +TEST fd_close $fd3 + + +# similar tests on nfs mount +TEST mount_nfs $H0:/$V0 $N0 nolock; + +TEST ls $N0/.snaps; + +NUM_SNAPS=$(ls $N0/.snaps | wc -l); + +TEST [ $NUM_SNAPS == 4 ]; + +TEST ls $N0/.snaps/snap1; +TEST ls $N0/.snaps/snap2; +TEST ls $N0/.snaps/snap3; +TEST ls $N0/.snaps/snap4; + +TEST ls $N0/.snaps/snap3/dir1; +TEST ls $N0/.snaps/snap3/dir2; + +TEST ls $N0/.snaps/snap4/dir1; +TEST ls $N0/.snaps/snap4/dir2; + +TEST ! ls $N0/dir1/.snaps/snap1; +TEST ! ls $N0/dir2/.snaps/snap2; +TEST ls $N0/dir1/.snaps/snap3; +TEST ls $N0/dir2/.snaps/snap4; + +TEST fd1=`fd_available` +TEST fd_open $fd1 'r' $N0/.snaps/snap1/file1; +TEST fd_cat $fd1 + +TEST fd2=`fd_available` +TEST ! fd_open $fd1 'w' $N0/.snaps/snap1/file2; + +TEST ! stat $N0/.snaps/snap1/.stat + +TEST ! mkdir $N0/.snaps/new + +TEST ! touch $N0/.snaps/snap2/other; + +TEST fd3=`fd_available` +TEST fd_open $fd3 'r' $N0/dir1/.snaps/snap3/foo1 + +TEST fd_cat $fd3; + + +TEST fd_close $fd1; +TEST fd_close $fd2; +TEST fd_close $fd3; + +rm -f /tmp/tmp-snap-uuids; +rm -f /tmp/tmp-snap_names; + +cleanup; |