summaryrefslogtreecommitdiffstats
path: root/tests/bugs/quota
diff options
context:
space:
mode:
Diffstat (limited to 'tests/bugs/quota')
-rw-r--r--tests/bugs/quota/afr-quota-xattr-mdata-heal.t6
-rw-r--r--tests/bugs/quota/bug-1023974.t35
-rw-r--r--tests/bugs/quota/bug-1035576.t5
-rw-r--r--tests/bugs/quota/bug-1038598.t66
-rwxr-xr-xtests/bugs/quota/bug-1040423.t72
-rwxr-xr-xtests/bugs/quota/bug-1049323.t64
-rw-r--r--tests/bugs/quota/bug-1087198.t25
-rw-r--r--tests/bugs/quota/bug-1100050.t25
-rwxr-xr-xtests/bugs/quota/bug-1104692.t6
-rw-r--r--tests/bugs/quota/bug-1153964.t8
-rw-r--r--tests/bugs/quota/bug-1178130.t44
-rw-r--r--tests/bugs/quota/bug-1235182.t61
-rw-r--r--tests/bugs/quota/bug-1243798.t46
-rw-r--r--tests/bugs/quota/bug-1250582-volume-reset-should-not-remove-quota-quota-deem-statfs.t53
-rw-r--r--tests/bugs/quota/bug-1260545.t53
-rw-r--r--tests/bugs/quota/bug-1287996.t21
-rw-r--r--tests/bugs/quota/bug-1292020.t28
-rw-r--r--tests/bugs/quota/bug-1293601.t33
-rw-r--r--tests/bugs/quota/inode-quota.t132
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;