diff options
Diffstat (limited to 'tests/bugs/quota')
| -rw-r--r-- | tests/bugs/quota/afr-quota-xattr-mdata-heal.t | 6 | ||||
| -rw-r--r-- | tests/bugs/quota/bug-1023974.t | 35 | ||||
| -rw-r--r-- | tests/bugs/quota/bug-1035576.t | 5 | ||||
| -rw-r--r-- | tests/bugs/quota/bug-1038598.t | 66 | ||||
| -rwxr-xr-x | tests/bugs/quota/bug-1040423.t | 72 | ||||
| -rwxr-xr-x | tests/bugs/quota/bug-1049323.t | 64 | ||||
| -rw-r--r-- | tests/bugs/quota/bug-1087198.t | 25 | ||||
| -rw-r--r-- | tests/bugs/quota/bug-1100050.t | 25 | ||||
| -rwxr-xr-x | tests/bugs/quota/bug-1104692.t | 6 | ||||
| -rw-r--r-- | tests/bugs/quota/bug-1153964.t | 8 | ||||
| -rw-r--r-- | tests/bugs/quota/bug-1178130.t | 44 | ||||
| -rw-r--r-- | tests/bugs/quota/bug-1235182.t | 61 | ||||
| -rw-r--r-- | tests/bugs/quota/bug-1243798.t | 46 | ||||
| -rw-r--r-- | tests/bugs/quota/bug-1250582-volume-reset-should-not-remove-quota-quota-deem-statfs.t | 53 | ||||
| -rw-r--r-- | tests/bugs/quota/bug-1260545.t | 53 | ||||
| -rw-r--r-- | tests/bugs/quota/bug-1287996.t | 21 | ||||
| -rw-r--r-- | tests/bugs/quota/bug-1292020.t | 28 | ||||
| -rw-r--r-- | tests/bugs/quota/bug-1293601.t | 33 | ||||
| -rw-r--r-- | tests/bugs/quota/inode-quota.t | 132 |
19 files changed, 383 insertions, 400 deletions
diff --git a/tests/bugs/quota/afr-quota-xattr-mdata-heal.t b/tests/bugs/quota/afr-quota-xattr-mdata-heal.t index b7a15a31f66..ebfa5545728 100644 --- a/tests/bugs/quota/afr-quota-xattr-mdata-heal.t +++ b/tests/bugs/quota/afr-quota-xattr-mdata-heal.t @@ -5,7 +5,6 @@ cleanup; TEST glusterd -TEST pidof glusterd TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{0,1} TEST $CLI volume start $V0 TEST glusterfs --volfile-id=/$V0 --volfile-server=$H0 $M0 --attribute-timeout=0 --entry-timeout=0 @@ -15,6 +14,9 @@ TEST mkdir $M0/d TEST $CLI volume quota $V0 limit-usage /d 1MB TEST touch $M0/d/a echo abc > $M0/d/a + +EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "512Bytes" quotausage "/" + #Set the acl xattrs directly on backend, for some reason on mount it gives error acl_access_val="0x0200000001000600ffffffff04000400ffffffff10000400ffffffff20000400ffffffff" acl_file_val="0x0000000400000001ffffffff0006000000000004ffffffff0004000000000010ffffffff0004000000000020ffffffff00040000" @@ -55,7 +57,7 @@ TEST $CLI volume set $V0 cluster.self-heal-daemon on TEST $CLI volume start $V0 force EXPECT_WITHIN $PROCESS_UP_TIMEOUT "Y" glustershd_up_status EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" afr_child_up_status_in_shd $V0 0 -EXPECT_WITHIN $HEAL_TIMEOUT "0" afr_get_pending_heal_count $V0 +EXPECT_WITHIN $HEAL_TIMEOUT "0" get_pending_heal_count $V0 #Check external xattrs match EXPECT "bar" echo $(getfattr -d -m. -e text $B0/${V0}0/d | grep trusted.foo) diff --git a/tests/bugs/quota/bug-1023974.t b/tests/bugs/quota/bug-1023974.t deleted file mode 100644 index 017a6decf88..00000000000 --- a/tests/bugs/quota/bug-1023974.t +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash - -# This regression test tries to ensure renaming a directory with content, and -# no limit set, is accounted properly, when moved into a directory with quota -# limit set. - -. $(dirname $0)/../../include.rc - -cleanup; - -TEST glusterd -TEST pidof glusterd; -TEST $CLI volume info; - -TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{1,2,3,4,5,6}; -TEST $CLI volume start $V0; - -TEST $CLI volume quota $V0 enable; - -TEST glusterfs --volfile-id=$V0 --volfile-server=$H0 $M0; - -TEST mkdir -p $M0/1/2; -TEST $CLI volume quota $V0 limit-usage /1/2 100MB 70%; -TEST $CLI volume quota $V0 hard-timeout 0 -TEST $CLI volume quota $V0 soft-timeout 0 - -#The corresponding write(3) should fail with EDQUOT ("Disk quota exceeded") -TEST ! dd if=/dev/urandom of=$M0/1/2/file bs=1024k count=102; -TEST mkdir -p $M0/1/3; -TEST dd if=/dev/urandom of=$M0/1/3/file bs=1024k count=102; - -#The corresponding rename(3) should fail with EDQUOT ("Disk quota exceeded") -TEST ! mv $M0/1/3/ $M0/1/2/3_mvd; - -cleanup; diff --git a/tests/bugs/quota/bug-1035576.t b/tests/bugs/quota/bug-1035576.t index dd4f499d98e..cbc1b69ebb3 100644 --- a/tests/bugs/quota/bug-1035576.t +++ b/tests/bugs/quota/bug-1035576.t @@ -9,7 +9,6 @@ cleanup; TEST glusterd -TEST pidof glusterd TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{0,1} TEST $CLI volume start $V0 #Lets disable perf-xls so that lookup would reach afr @@ -18,8 +17,10 @@ TEST $CLI volume set $V0 performance.io-cache off TEST $CLI volume set $V0 performance.write-behind off TEST $CLI volume set $V0 performance.stat-prefetch off TEST $CLI volume set $V0 performance.read-ahead off -TEST $CLI volume set $V0 background-self-heal-count 0 TEST $CLI volume set $V0 self-heal-daemon off +TEST $CLI volume set $V0 cluster.data-self-heal on +TEST $CLI volume set $V0 cluster.metadata-self-heal on +TEST $CLI volume set $V0 cluster.entry-self-heal on TEST $CLI volume quota $V0 enable TEST kill_brick $V0 $H0 $B0/${V0}0 diff --git a/tests/bugs/quota/bug-1038598.t b/tests/bugs/quota/bug-1038598.t index c51bc470ce1..108e14cb8d8 100644 --- a/tests/bugs/quota/bug-1038598.t +++ b/tests/bugs/quota/bug-1038598.t @@ -4,49 +4,19 @@ cleanup; +QDD=$(dirname $0)/quota +# compile the test write program and run it +build_tester $(dirname $0)/../../basic/quota.c -o $QDD + TEST glusterd -TEST pidof glusterd -TEST $CLI volume info; TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{1,2}; -function hard_limit() -{ - local QUOTA_PATH=$1; - $CLI volume quota $V0 list $QUOTA_PATH | grep "$QUOTA_PATH" | awk '{print $2}' -} - -function soft_limit() -{ - local QUOTA_PATH=$1; - $CLI volume quota $V0 list $QUOTA_PATH | grep "$QUOTA_PATH" | awk '{print $3}' -} - -function usage() -{ - local QUOTA_PATH=$1; - $CLI volume quota $V0 list $QUOTA_PATH | grep "$QUOTA_PATH" | awk '{print $4}' -} - -function sl_exceeded() -{ - local QUOTA_PATH=$1; - $CLI volume quota $V0 list $QUOTA_PATH | grep "$QUOTA_PATH" | awk '{print $6}' -} - -function hl_exceeded() -{ - local QUOTA_PATH=$1; - $CLI volume quota $V0 list $QUOTA_PATH | grep "$QUOTA_PATH" | awk '{print $7}' - -} - EXPECT "$V0" volinfo_field $V0 'Volume Name'; EXPECT 'Created' volinfo_field $V0 'Status'; EXPECT '2' brick_count $V0 TEST $CLI volume start $V0; -EXPECT 'Started' volinfo_field $V0 'Status'; TEST $CLI volume quota $V0 enable sleep 5 @@ -56,25 +26,27 @@ TEST glusterfs -s $H0 --volfile-id $V0 $M0; TEST mkdir -p $M0/test_dir TEST $CLI volume quota $V0 limit-usage /test_dir 10MB 50 -EXPECT "10.0MB" hard_limit "/test_dir"; -EXPECT "50%" soft_limit "/test_dir"; +EXPECT "10.0MB" quota_hard_limit "/test_dir"; +EXPECT "50%" quota_soft_limit "/test_dir"; -TEST dd if=/dev/zero of=$M0/test_dir/file1.txt bs=1024k count=4 -EXPECT "4.0MB" usage "/test_dir"; -EXPECT 'No' sl_exceeded "/test_dir"; -EXPECT 'No' hl_exceeded "/test_dir"; +TEST $QDD $M0/test_dir/file1.txt 256 16 +EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "4.0MB" quotausage "/test_dir"; +EXPECT 'No' quota_sl_exceeded "/test_dir"; +EXPECT 'No' quota_hl_exceeded "/test_dir"; -TEST dd if=/dev/zero of=$M0/test_dir/file1.txt bs=1024k count=6 -EXPECT "6.0MB" usage "/test_dir"; -EXPECT 'Yes' sl_exceeded "/test_dir"; -EXPECT 'No' hl_exceeded "/test_dir"; +TEST $QDD $M0/test_dir/file1.txt 256 24 +EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "6.0MB" quotausage "/test_dir"; +EXPECT 'Yes' quota_sl_exceeded "/test_dir"; +EXPECT 'No' quota_hl_exceeded "/test_dir"; #set timeout to 0 so that quota gets enforced without any lag TEST $CLI volume set $V0 features.hard-timeout 0 TEST $CLI volume set $V0 features.soft-timeout 0 -TEST ! dd if=/dev/zero of=$M0/test_dir/file1.txt bs=1024k count=15 -EXPECT 'Yes' sl_exceeded "/test_dir"; -EXPECT 'Yes' hl_exceeded "/test_dir"; +TEST ! $QDD $M0/test_dir/file1.txt 256 60 +EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT 'Yes' quota_sl_exceeded "/test_dir"; +EXPECT 'Yes' quota_hl_exceeded "/test_dir"; + +rm -f $QDD cleanup; diff --git a/tests/bugs/quota/bug-1040423.t b/tests/bugs/quota/bug-1040423.t deleted file mode 100755 index 4e7b5642c94..00000000000 --- a/tests/bugs/quota/bug-1040423.t +++ /dev/null @@ -1,72 +0,0 @@ -#!/bin/bash - -. $(dirname $0)/../../include.rc -. $(dirname $0)/../../volume.rc - -cleanup - -function _init() { -# Start glusterd -TEST glusterd; -TEST pidof glusterd; -TEST $CLI volume info; - -# Lets create volume -TEST $CLI volume create $V0 $H0:$B0/${V0}{1,2}; - -## Verify volume 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'; -TEST glusterfs --volfile-id=$V0 --volfile-server=$H0 $M0 - -#Enable Quota -TEST $CLI volume quota $V0 enable - -#As quotad consumes some time to connect to brick process we invoke sleep -sleep 10; - -#set limit of 1GB of quota on root -TEST $CLI volume quota $V0 limit-usage / 1GB -} - -function get_hardlimit() -{ - VOLUME=$1 - - $CLI volume quota $VOLUME list | tail -1 | sed "s/ \{1,\}/ /g" | - cut -d' ' -f 2 -} - -function check_fattrs { - -touch $M0/file1; - -#This confirms that pgfid is also filtered -TEST ! "getfattr -d -e hex -m . $M0/file1 | grep pgfid "; - -#just check for quota xattr are visible or not -TEST ! "getfattr -d -e hex -m . $M0 | grep quota"; - -#setfattr should fail -TEST ! setfattr -n trusted.glusterfs.quota.limit-set -v 10 $M0; - -#remove xattr should fail -TEST ! setfattr -x trusted.glusterfs.quota.limit-set $M0; - -#check if list command still shows the correct value or not - -EXPECT "1.0GB" get_hardlimit $V0 - -} - -_init; -check_fattrs; -cleanup - - - - diff --git a/tests/bugs/quota/bug-1049323.t b/tests/bugs/quota/bug-1049323.t deleted file mode 100755 index 818c5f0e65b..00000000000 --- a/tests/bugs/quota/bug-1049323.t +++ /dev/null @@ -1,64 +0,0 @@ -#!/bin/bash -. $(dirname $0)/../../include.rc -. $(dirname $0)/../../volume.rc - -cleanup; - -function _init() -{ -# Start glusterd -TEST glusterd; -TEST pidof glusterd; -TEST $CLI volume info; - -#Create a volume -TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{1,2}; - -#Verify volume 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'; -TEST glusterfs --volfile-id=$V0 --volfile-server=$H0 $M0 - -#Enable Quota -TEST $CLI volume quota $V0 enable - -##Wait for the auxiliary mount to comeup -sleep 3; -} - -function get_aux() -{ -##Check if a auxiliary mount is there -df -h | grep "/var/run/gluster/$V0" - - -if [ $? -eq 0 ] -then - echo "0" -else - echo "1" -fi -} - -function create_data() -{ -#set some limit on the volume -TEST $CLI volume quota $V0 limit-usage / 50MB; - -#Auxiliary mount should be there before stopping the volume -EXPECT "0" get_aux; - -TEST $CLI volume stop $V0; - -#Aux mount should have been removed -EXPECT "1" get_aux; - -} - - -_init; -create_data; -cleanup; diff --git a/tests/bugs/quota/bug-1087198.t b/tests/bugs/quota/bug-1087198.t index 5121f1b35a2..618a46b957d 100644 --- a/tests/bugs/quota/bug-1087198.t +++ b/tests/bugs/quota/bug-1087198.t @@ -17,24 +17,25 @@ . $(dirname $0)/../../volume.rc . $(dirname $0)/../../nfs.rc +#G_TESTDEF_TEST_STATUS_CENTOS6=NFS_TEST + cleanup; +QDD=$(dirname $0)/quota +# compile the test write program and run it +build_tester $(dirname $0)/../../basic/quota.c -o $QDD + #1 ## Step 1 TEST glusterd -TEST pidof glusterd -TEST $CLI volume info; TEST $CLI volume create $V0 $H0:$B0/brick{1..4}; -EXPECT 'Created' volinfo_field $V0 'Status'; - +TEST $CLI volume set $V0 nfs.disable false TEST $CLI volume start $V0; -EXPECT 'Started' volinfo_field $V0 'Status'; EXPECT_WITHIN $NFS_EXPORT_TIMEOUT "1" is_nfs_export_available; TEST mount_nfs $H0:/$V0 $N0 noac,nolock - QUOTA_LIMIT_DIR="quota_limit_dir" BRICK_LOG_DIR="`gluster --print-logdir`/bricks" @@ -54,11 +55,11 @@ TEST $CLI volume quota $V0 limit-usage /$QUOTA_LIMIT_DIR 100KB #16 ## Step 3 and 4 -TEST dd if=/dev/urandom of=$N0/$QUOTA_LIMIT_DIR/95KB_file bs=1k count=95 +TEST $QDD $N0/$QUOTA_LIMIT_DIR/95KB_file 1 95 #Uncomment below TEST once the bug# 1202292 is fixed #TEST grep -e "\"Usage crossed soft limit:.*used by /$QUOTA_LIMIT_DIR\"" -- $BRICK_LOG_DIR/* -TEST dd if=/dev/urandom of=$N0/100KB_file bs=1k count=100 +TEST $QDD $N0/100KB_file 1 100 #Uncomment below TEST once the bug# 1202292 is fixed #TEST grep -e "\"Usage crossed soft limit:.*used by /\"" -- $BRICK_LOG_DIR/* @@ -67,15 +68,19 @@ TEST dd if=/dev/urandom of=$N0/100KB_file bs=1k count=100 TEST sleep 10 ## Step 6 -TEST dd if=/dev/urandom of=$N0/$QUOTA_LIMIT_DIR/1KB_file bs=1k count=1 +TEST $QDD $N0/$QUOTA_LIMIT_DIR/1KB_file 1 1 TEST grep -e "\"Usage is above soft limit:.*used by /$QUOTA_LIMIT_DIR\"" -- $BRICK_LOG_DIR/* #23 -TEST dd if=/dev/urandom of=$N0/1KB_file bs=1k count=1 +TEST $QDD $N0/1KB_file 1 1 TEST grep -e "\"Usage is above soft limit:.*used by /\"" -- $BRICK_LOG_DIR/* #25 ## Step 7 EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $N0 +TEST $CLI volume stop $V0 + +rm -f $QDD + cleanup; diff --git a/tests/bugs/quota/bug-1100050.t b/tests/bugs/quota/bug-1100050.t deleted file mode 100644 index e12f64f88d8..00000000000 --- a/tests/bugs/quota/bug-1100050.t +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -. $(dirname $0)/../../include.rc -. $(dirname $0)/../../volume.rc - -cleanup; - -TEST glusterd; -TEST pidof glusterd; - -TEST gluster volume create $V0 stripe 2 $H0:$B0/{1,2} force; -TEST gluster volume start $V0; -TEST glusterfs --volfile-server=$H0 --volfile-id=$V0 $M0; - -TEST gluster volume quota $V0 enable; - -EXPECT_WITHIN $PROCESS_UP_TIMEOUT "Y" quotad_up_status; - -TEST mkdir $M0/dir; - -TEST gluster volume quota $V0 limit-usage /dir 10MB; - -TEST mkdir $M0/dir/subdir; - -cleanup; diff --git a/tests/bugs/quota/bug-1104692.t b/tests/bugs/quota/bug-1104692.t index 6f6b174aa03..9640996135f 100755 --- a/tests/bugs/quota/bug-1104692.t +++ b/tests/bugs/quota/bug-1104692.t @@ -5,7 +5,6 @@ cleanup; TEST glusterd -TEST pidof glusterd TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}0 $H0:$B0/${V0}1 $H0:$B0/${V0}2 $H0:$B0/${V0}3 TEST $CLI volume start $V0 @@ -24,9 +23,4 @@ TEST $CLI volume quota $V0 limit-usage /limit_one/limit_two/limit_three 1GB TEST $CLI volume quota $V0 limit-usage /limit_four 1GB TEST $CLI volume quota $V0 limit-usage /limit_one/limit_five 1GB -#Cleanup -EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $M0 -TEST $CLI volume stop $V0 -TEST $CLI volume delete $V0 - cleanup; diff --git a/tests/bugs/quota/bug-1153964.t b/tests/bugs/quota/bug-1153964.t index c923b71ca73..2e449d3ba00 100644 --- a/tests/bugs/quota/bug-1153964.t +++ b/tests/bugs/quota/bug-1153964.t @@ -4,6 +4,8 @@ . $(dirname $0)/../../volume.rc . $(dirname $0)/../../nfs.rc +#G_TESTDEF_TEST_STATUS_CENTOS6=NFS_TEST + function rename_loop() { local i=0 @@ -41,12 +43,10 @@ function createFile_and_checkLimit() cleanup; TEST glusterd -TEST pidof glusterd TEST $CLI volume create $V0 $H0:$B0/${V0}1 $H0:$B0/${V0}2 -EXPECT 'Created' volinfo_field $V0 'Status' +TEST $CLI volume set $V0 nfs.disable false TEST $CLI volume start $V0 -EXPECT 'Started' volinfo_field $V0 'Status' TEST $CLI volume quota $V0 enable EXPECT 'on' volinfo_field $V0 'features.quota' @@ -79,5 +79,3 @@ TEST rm -rf $N0/test_dir/ EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $N0 cleanup; - - diff --git a/tests/bugs/quota/bug-1178130.t b/tests/bugs/quota/bug-1178130.t new file mode 100644 index 00000000000..ccd6b792cf8 --- /dev/null +++ b/tests/bugs/quota/bug-1178130.t @@ -0,0 +1,44 @@ +#!/bin/bash + +# This regression test tries to ensure renaming a directory with content, and +# no limit set, is accounted properly, when moved into a directory with quota +# limit set. + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc + +cleanup; + +QDD=$(dirname $0)/quota +# compile the test write program and run it +build_tester $(dirname $0)/../../basic/quota.c -o $QDD + +TEST glusterd + +TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{1,2}; +TEST $CLI volume start $V0; + +TEST $CLI volume quota $V0 enable; + +TEST glusterfs --volfile-id=$V0 --volfile-server=$H0 $M0; + +TEST $CLI volume quota $V0 limit-usage / 500MB +TEST $CLI volume quota $V0 hard-timeout 0 +TEST $CLI volume quota $V0 soft-timeout 0 + +TEST $QDD $M0/file 256 40 +EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "10.0MB" quotausage "/" + +TEST kill_brick $V0 $H0 $B0/${V0}2 +TEST mv $M0/file $M0/file2 +TEST $CLI volume start $V0 force; + +#wait for self heal to complete +EXPECT_WITHIN $HEAL_TIMEOUT "0" STAT "$B0/${V0}2/file2" + +#usage should remain same after rename and self-heal operation +EXPECT "10.0MB" quotausage "/" + +rm -f $QDD + +cleanup; diff --git a/tests/bugs/quota/bug-1235182.t b/tests/bugs/quota/bug-1235182.t new file mode 100644 index 00000000000..6091146cb97 --- /dev/null +++ b/tests/bugs/quota/bug-1235182.t @@ -0,0 +1,61 @@ +#!/bin/bash + +# This regression test tries to ensure renaming a directory with content, and +# no limit set, is accounted properly, when moved into a directory with quota +# limit set. + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc + +cleanup; + +QDD=$(dirname $0)/quota +# compile the test write program and run it +build_tester $(dirname $0)/../../basic/quota.c -o $QDD + +TEST glusterd +TEST $CLI volume info; + +TEST $CLI volume create $V0 $H0:$B0/${V0}; +TEST $CLI volume start $V0; + +TEST $CLI volume quota $V0 enable; + +TEST glusterfs --volfile-id=$V0 --volfile-server=$H0 $M0; + +TEST $CLI volume quota $V0 limit-usage / 1GB +TEST $CLI volume quota $V0 hard-timeout 0 +TEST $CLI volume quota $V0 soft-timeout 0 + +TEST mkdir $M0/1 +$QDD $M0/1/f1 256 400& +PID=$! +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "0" STAT $M0/1/f1 +TESTS_EXPECTED_IN_LOOP=150 +for i in {1..50}; do + ii=`expr $i + 1`; + touch $M0/$i/f$ii + echo Hello > $M0/$i/f$ii + + #rename within same dir + TEST_IN_LOOP mv -f $M0/$i/f$i $M0/$i/f$ii; + + #rename to different dir + TEST_IN_LOOP mkdir $M0/$ii + TEST_IN_LOOP mv -f $M0/$i/f$ii $M0/$ii/f$ii; + stat $M0/$ii/f$ii >/dev/null +done + +echo "Wait for process with pid $PID to complete" +wait $PID +echo "Process with pid $PID finished" + +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "0" STAT $M0/51/f51 + +EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "100.0MB" quotausage "/" + +rm -f $QDD + +cleanup; +#G_TESTDEF_TEST_STATUS_CENTOS6=BAD_TEST,BUG=000000 +#G_TESTDEF_TEST_STATUS_NETBSD7=BAD_TEST,BUG=000000 diff --git a/tests/bugs/quota/bug-1243798.t b/tests/bugs/quota/bug-1243798.t new file mode 100644 index 00000000000..fa6abeb08fb --- /dev/null +++ b/tests/bugs/quota/bug-1243798.t @@ -0,0 +1,46 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc +. $(dirname $0)/../../nfs.rc + +#G_TESTDEF_TEST_STATUS_CENTOS6=NFS_TEST + +cleanup; + +TEST glusterd + +TEST $CLI volume create $V0 $H0:$B0/$V0 +TEST $CLI volume set $V0 nfs.disable false +TEST $CLI volume start $V0; + +EXPECT_WITHIN $NFS_EXPORT_TIMEOUT "1" is_nfs_export_available; +TEST mount_nfs $H0:/$V0 $N0 noac,nolock + +TEST mkdir -p $N0/dir1/dir2 +TEST touch $N0/dir1/dir2/file + +TEST $CLI volume quota $V0 enable +TEST $CLI volume quota $V0 hard-timeout 0 +TEST $CLI volume quota $V0 soft-timeout 0 +TEST $CLI volume quota $V0 limit-objects /dir1 10 + +TEST stat $N0/dir1/dir2/file + +sleep 2 + +#Remove size and contri xattr from /dir1 +#Remove contri xattr from /dir1/dir2 +setfattr -x trusted.glusterfs.quota.size.1 $B0/$V0/dir1 +setfattr -x trusted.glusterfs.quota.00000000-0000-0000-0000-000000000001.contri.1 $B0/$V0/dir1 +contri=$(getfattr -d -m . -e hex $B0/$V0/dir1/dir2 | grep contri | awk -F= '{print $1}') +setfattr -x $contri $B0/$V0/dir1/dir2 + +#Initiate healing by writing to a file +echo Hello > $N0/dir1/dir2/file + +EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "2" quota_object_list_field "/dir1" 5 + +EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $N0 + +cleanup; diff --git a/tests/bugs/quota/bug-1250582-volume-reset-should-not-remove-quota-quota-deem-statfs.t b/tests/bugs/quota/bug-1250582-volume-reset-should-not-remove-quota-quota-deem-statfs.t new file mode 100644 index 00000000000..3b55e739bf9 --- /dev/null +++ b/tests/bugs/quota/bug-1250582-volume-reset-should-not-remove-quota-quota-deem-statfs.t @@ -0,0 +1,53 @@ +#!/bin/bash + +# This test ensures that 'gluster volume reset' command do not remove +# features.quota-deem-statfs, features.quota. +# Also, tests that 'gluster volume set features.quota-deem-statfs' can be +# turned on/off when quota is enabled. + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc + +cleanup; + +TEST glusterd; +TEST pidof glusterd; +TEST $CLI volume info; + +TEST $CLI volume create $V0 replica 2 $H0:$B0/${v0}{1,2}; +EXPECT 'Created' volinfo_field $V0 'Status'; + +TEST $CLI volume start $V0; +EXPECT 'Started' volinfo_field $V0 'Status'; + +TEST $CLI volume quota $V0 enable +EXPECT 'on' volinfo_field $V0 'features.quota' +EXPECT 'on' volinfo_field $V0 'features.inode-quota' +EXPECT 'on' volinfo_field $V0 'features.quota-deem-statfs' + +TEST $CLI volume reset $V0 +EXPECT 'on' volinfo_field $V0 'features.quota' +EXPECT 'on' volinfo_field $V0 'features.inode-quota' +EXPECT 'on' volinfo_field $V0 'features.quota-deem-statfs' + +TEST $CLI volume reset $V0 force +EXPECT 'on' volinfo_field $V0 'features.quota' +EXPECT 'on' volinfo_field $V0 'features.inode-quota' +EXPECT 'on' volinfo_field $V0 'features.quota-deem-statfs' + +TEST $CLI volume reset $V0 features.quota-deem-statfs +EXPECT 'on' volinfo_field $V0 'features.quota-deem-statfs' + +TEST $CLI volume set $V0 features.quota-deem-statfs off +EXPECT 'off' volinfo_field $V0 'features.quota-deem-statfs' + +TEST $CLI volume set $V0 features.quota-deem-statfs on +EXPECT 'on' volinfo_field $V0 'features.quota-deem-statfs' + +TEST $CLI volume quota $V0 disable +EXPECT 'off' volinfo_field $V0 'features.quota' +EXPECT 'off' volinfo_field $V0 'features.inode-quota' +EXPECT '' volinfo_field $V0 'features.quota-deem-statfs' + +cleanup; + diff --git a/tests/bugs/quota/bug-1260545.t b/tests/bugs/quota/bug-1260545.t new file mode 100644 index 00000000000..46808022f01 --- /dev/null +++ b/tests/bugs/quota/bug-1260545.t @@ -0,0 +1,53 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc + +cleanup; + +QDD=$(dirname $0)/quota +# compile the test write program and run it +build_tester $(dirname $0)/../../basic/quota.c -o $QDD + +TEST glusterd +TEST $CLI volume info; + +TEST $CLI volume create $V0 $H0:$B0/${V0}1 $H0:$B0/${V0}2; +TEST $CLI volume start $V0; + +TEST $CLI volume quota $V0 enable; + +TEST glusterfs --volfile-id=$V0 --volfile-server=$H0 $M0; + +TEST $CLI volume quota $V0 limit-usage / 11MB +TEST $CLI volume quota $V0 hard-timeout 0 +TEST $CLI volume quota $V0 soft-timeout 0 + +TEST $QDD $M0/f1 256 40 + +EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "10.0MB" quotausage "/" + +if [ -f "$B0/${V0}1/f1" ]; then + HASHED="$B0/${V0}1" + OTHER="$B0/${V0}2" +else + HASHED="$B0/${V0}2" + OTHER="$B0/${V0}1" +fi + +TEST $CLI volume remove-brick $V0 $H0:${HASHED} start +EXPECT_WITHIN $REBALANCE_TIMEOUT "completed" remove_brick_status_completed_field "$V0" "$H0:${HASHED}"; + +#check consistency in mount point and also check that file is migrated to OTHER +TEST [ -f "$OTHER/f1" ]; +TEST [ -f "$M0/f1" ]; + +#check that remove-brick status should not have any failed or skipped files +var=`$CLI volume remove-brick $V0 $H0:${HASHED} status | grep completed` +TEST [ `echo $var | awk '{print $5}'` = "0" ] +TEST [ `echo $var | awk '{print $6}'` = "0" ] + +EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "10.0MB" quotausage "/" + +rm -f $QDD +cleanup; diff --git a/tests/bugs/quota/bug-1287996.t b/tests/bugs/quota/bug-1287996.t new file mode 100644 index 00000000000..2f46ee1ca2d --- /dev/null +++ b/tests/bugs/quota/bug-1287996.t @@ -0,0 +1,21 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../cluster.rc + +function check_peers { + $CLI_1 peer status | grep 'Peer in Cluster (Connected)' | wc -l +} + +cleanup; + +TEST launch_cluster 2; + +TEST $CLI_1 volume create $V0 $H1:$B1/$V0 +TEST $CLI_1 volume start $V0 +TEST $CLI_1 volume quota $V0 enable + +TEST $CLI_1 peer probe $H2; +EXPECT_WITHIN $PROBE_TIMEOUT 1 check_peers + +cleanup; diff --git a/tests/bugs/quota/bug-1292020.t b/tests/bugs/quota/bug-1292020.t new file mode 100644 index 00000000000..b70047ae3f9 --- /dev/null +++ b/tests/bugs/quota/bug-1292020.t @@ -0,0 +1,28 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc + +function write_sample_data () { + dd if=/dev/zero of=$M0/f1 bs=256k count=400 2>&1 | + egrep -i 'exceeded|no space' && echo 'passed' +} + +cleanup; + +TEST glusterd; +TEST pidof glusterd; + +TEST $CLI volume create $V0 $H0:$B0/$V0 +TEST $CLI volume start $V0; +TEST $CLI volume quota $V0 enable; +TEST $CLI volume quota $V0 limit-usage / 1 + +TEST glusterfs --volfile-server=$H0 --volfile-id=$V0 $M0; + + +EXPECT_WITHIN 30 "passed" write_sample_data + +TEST $CLI volume stop $V0 +TEST $CLI volume delete $V0 +cleanup; diff --git a/tests/bugs/quota/bug-1293601.t b/tests/bugs/quota/bug-1293601.t new file mode 100644 index 00000000000..741758b73f5 --- /dev/null +++ b/tests/bugs/quota/bug-1293601.t @@ -0,0 +1,33 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc + +cleanup; + +TEST glusterd + +TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{1,2,3,4} +TEST $CLI volume start $V0 +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "4" online_brick_count +TEST $CLI volume quota $V0 enable + +TEST glusterfs --volfile-server=$H0 --volfile-id=$V0 $M0; + +for i in {1..512}; do + dd if=/dev/zero of=$M0/f$i bs=1k count=1 +done + +mkdir $M0/dir1 +for i in {513..1024}; do + dd if=/dev/zero of=$M0/dir1/f$i bs=1k count=1 +done + +EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "1.0MB" quotausage "/" + +TEST $CLI volume quota $V0 disable +TEST $CLI volume quota $V0 enable + +EXPECT_WITHIN 60 "1.0MB" quotausage "/" + +cleanup; diff --git a/tests/bugs/quota/inode-quota.t b/tests/bugs/quota/inode-quota.t deleted file mode 100644 index 12a18945d8b..00000000000 --- a/tests/bugs/quota/inode-quota.t +++ /dev/null @@ -1,132 +0,0 @@ -#!/bin/bash - -. $(dirname $0)/../../include.rc -. $(dirname $0)/../../volume.rc -. $(dirname $0)/../../nfs.rc - -function quota_list_field () { - local QUOTA_PATH=$1 - local FIELD=$2 - $CLI volume quota $V0 list $QUOTA_PATH | grep $QUOTA_PATH\ - | awk '{print $FIELD}' -} - -function quota_object_list_field () { - local QUOTA_PATH=$1 - local FIELD=$2 - $CLI volume quota $V0 list-objects $QUOTA_PATH | grep $QUOTA_PATH\ - | awk '{print $FIELD}' -} - -cleanup; - -TESTS_EXPECTED_IN_LOOP=9 - -TEST glusterd -TEST pidof glusterd - -# -------------------------------------------------- -# Create, start and mount a volume with single brick -# -------------------------------------------------- - -TEST $CLI volume create $V0 $H0:$B0/{V0} -EXPECT "$V0" volinfo_field $V0 'Volume Name' -EXPECT 'Created' volinfo_field $V0 'Status' - -TEST $CLI volume start $V0 -EXPECT 'Started' volinfo_field $V0 'Status' - -TEST $GFS -s $H0 --volfile-id $V0 $M0 -TEST mkdir -p $M0/test_dir - -#-------------------------------------------------------- -# Enable quota of the volume and set hard and soft timeout -#------------------------------------------------------ - -TEST $CLI volume quota $V0 enable -EXPECT 'on' volinfo_field $V0 'features.quota' -TEST $CLI volume quota $V0 soft-timeout 0 -EXPECT '0' volinfo_field $V0 'features.soft-timeout' -TEST $CLI volume quota $V0 hard-timeout 0 -EXPECT '0' volinfo_field $V0 'features.hard-timeout' - - -#------------------------------------------------------- -# Set and remove quota limits on the directory and -# verify if the limits are being reflected properly -#------------------------------------------------------ - -TEST $CLI volume quota $V0 limit-usage /test_dir 100MB -EXPECT "100.0MB" quota_list_field "/test_dir" 2 - -TEST $CLI volume quota $V0 limit-objects /test_dir 100 -EXPECT "100" quota_object_list_field "/test_dir" 2 - -TEST $CLI volume quota $V0 remove /test_dir -EXPECT "" quota_list_field "/test_dir" 2 - -# Need to verify this once -#TEST $CLI volume quota $V0 remove-objects /test_dir -#EXPECT "" quota_object_list_field "/test_dir" 2 - -# Set back the limits - -TEST $CLI volume quota $V0 limit-usage /test_dir 10MB -EXPECT "10.0MB" quota_list_field "/test_dir" 2 - -TEST $CLI volume quota $V0 limit-objects /test_dir 10 -EXPECT "10" quota_object_list_field "/test_dir" 2 - -#----------------------------------------------------- -# Check the quota enforcement mechanism for usage -#----------------------------------------------------- - -# Compile the program which basically created a file -# of required size -TEST $CC $(dirname $0)/../../basic/quota.c -o $(dirname $0)/quota - -# try creating a 8MB file and it should fail -TEST $(dirname $0)/quota $M0/test_dir/test1.txt '8388608' -EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "8.0MB" quota_list_field "/test_dir" 2 -TEST rm -f $M0/test_dir/test1.txt -EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "0Bytes" quota_list_field "/test_dir" 2 - -# try creating a 15MB file and it should succeed -TEST ! $(dirname $0)/quota $M0/test_dir/test2.txt '15728640' -TEST rm -f $M0/test_dir/test2.txt - - -#------------------------------------------------------ -# Check the quota enforcement mechanism for object count -#------------------------------------------------------- - -# Try creating 9 files and it should succeed as object limit -# is set to 10, since directory where limit is set is accounted -# as well. - -for i in {1..9}; do - TEST_IN_LOOP touch $M0/test_dir/test$i.txt -done -EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "10" quota_object_list_field "/test_dir" 4 - -# Check available limit -EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "0" quota_object_list_field "/test_dir" 5 - -# Check if hard-limit exceeded -EXPECT "Yes" quota_object_list_field "/test_dir" 7 - -# Check if soft-limit exceeded -EXPECT "Yes" quota_object_list_field "/test_dir" 6 - -# Creation of 11th file should throw out an error -TEST ! touch $M0/test_dir/test11.txt - -TEST rm -rf $M0/test_dir/test* -EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "0" quota_object_list_field "/test_dir" 4 - -TEST $CLI volume quota $V0 remove-objects /test_dir - -TEST $CLI volume stop $V0 -TEST $CLI volume delete $V0 - -cleanup; |
