diff options
| author | vmallika <vmallika@redhat.com> | 2016-04-03 20:35:52 +0530 | 
|---|---|---|
| committer | Vijaikumar Mallikarjuna <vmallika@redhat.com> | 2016-04-06 02:25:23 -0700 | 
| commit | 7927149f71adc49cad92f28f805a8e688534156e (patch) | |
| tree | c8fffd7e9880d2f542a00e0dbb37c3efdbbee18a /tests | |
| parent | 81955d8aaee8a2c7bf6370970926bc7b403a6efa (diff) | |
quota: check inode limits only when new file/dir is created
When a inode limit is full, writes to any existing file
fails with disk quota exceed even if usage limit is
not set or usage limit is not full.
BUG: 1323486
Change-Id: I9679fe26a2839ade0b1541fa7f0a2b71ac6dcc31
Signed-off-by: vmallika <vmallika@redhat.com>
Reviewed-on: http://review.gluster.org/13911
Smoke: Gluster Build System <jenkins@build.gluster.com>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Manikandan Selvaganesh <mselvaga@redhat.com>
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/basic/inode-quota-enforcing.t | 45 | ||||
| -rw-r--r-- | tests/basic/inode-quota.t | 40 | 
2 files changed, 30 insertions, 55 deletions
diff --git a/tests/basic/inode-quota-enforcing.t b/tests/basic/inode-quota-enforcing.t index 44b6c52a1ed..0cc92dd3963 100644 --- a/tests/basic/inode-quota-enforcing.t +++ b/tests/basic/inode-quota-enforcing.t @@ -6,6 +6,10 @@  cleanup; +QDD=$(dirname $0)/quota +# compile the test write program and run it +build_tester $(dirname $0)/quota.c -o $QDD +  TESTS_EXPECTED_IN_LOOP=9  TEST glusterd @@ -14,7 +18,7 @@ TEST glusterd  # Create, start and mount a volume with single brick  # -------------------------------------------------- -TEST $CLI volume create $V0 $H0:$B0/{V0} +TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{1,2};  TEST $CLI volume start $V0 @@ -32,24 +36,17 @@ 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 +# Set quota limits on the directory and  # verify if the limits are being reflected properly  #------------------------------------------------------ -TEST $CLI volume quota $V0 limit-objects /test_dir 100 -EXPECT "100" quota_object_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-objects /test_dir 10  EXPECT "10" quota_object_list_field "/test_dir" 2 +TEST $CLI volume quota $V0 limit-usage /test_dir 100MB +EXPECT "100.0MB" quota_list_field "/test_dir" 2 +  #------------------------------------------------------  # Check the quota enforcement mechanism for object count  #------------------------------------------------------- @@ -59,12 +56,15 @@ EXPECT "10" quota_object_list_field "/test_dir" 2  # as well.  for i in {1..9}; do -        TEST_IN_LOOP touch $M0/test_dir/test$i.txt +        #TEST_IN_LOOP touch $M0/test_dir/test$i.txt +        TEST_IN_LOOP $QDD $M0/test_dir/test$i.txt 256 4  done  EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "9" quota_object_list_field "/test_dir" 4 +EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "9.0MB" quotausage "/test_dir"  # Check available limit  EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "0" quota_object_list_field "/test_dir" 6 +EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "91.0MB" quota_list_field "/test_dir" 5  # Check if hard-limit exceeded  EXPECT "Yes" quota_object_list_field "/test_dir" 8 @@ -75,10 +75,25 @@ EXPECT "Yes" quota_object_list_field "/test_dir" 7  # Creation of 11th file should throw out an error  TEST ! touch $M0/test_dir/test11.txt +#------------------------------------------------------- +# remove  quota limits on the directory and +# verify if the limit show 'N/A' and displayes only the usage +#------------------------------------------------------ +TEST $CLI volume quota $V0 remove-objects /test_dir +EXPECT "N/A" quota_object_list_field "/test_dir" 2 +EXPECT "9" quota_object_list_field "/test_dir" 4 + +TEST $CLI volume quota $V0 remove /test_dir +EXPECT "N/A" quota_list_field "/test_dir" 2 +EXPECT "9.0MB" quotausage "/test_dir" 4 + +# Set back the limits +TEST $CLI volume quota $V0 limit-objects /test_dir 10 +EXPECT "10" quota_object_list_field "/test_dir" 2 + +# Remove all files and verify the file count  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 -  rm -f $QDD  cleanup; diff --git a/tests/basic/inode-quota.t b/tests/basic/inode-quota.t deleted file mode 100644 index 4b5ac44ee19..00000000000 --- a/tests/basic/inode-quota.t +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -. $(dirname $0)/../include.rc -. $(dirname $0)/../volume.rc - -function get_quota_value() -{ -        local LIST_TYPE=$1 -        local LIMIT_PATH=$2; -        $CLI volume quota $V0 $LIST_TYPE $LIMIT_PATH | grep "$LIMIT_PATH"\ -                                                     | awk '{print $2}' -} - -cleanup; - -TEST glusterd; - -TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{1,2}; -TEST $CLI volume start $V0; -TEST glusterfs --volfile-server=$H0 --volfile-id=$V0 $M0; - -TEST $CLI volume quota $V0 enable; -EXPECT "on" volinfo_field $V0 'features.quota' -EXPECT_WITHIN $PROCESS_UP_TIMEOUT "Y" quotad_up_status; - -TEST mkdir $M0/dir; - -TEST $CLI volume quota $V0 limit-usage /dir 10MB; -EXPECT "10.0MB" get_quota_value "list" "/dir" - -TEST $CLI volume quota $V0 limit-objects /dir 10; -EXPECT "10" get_quota_value "list-objects" "/dir" - -TEST $CLI volume quota $V0 remove /dir; -EXPECT "" get_quota_value "list" "/dir" - -TEST $CLI volume quota $V0 remove-objects /dir; -EXPECT "" get_quota_value "list-objects" "/dir" - -cleanup;  | 
