diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/basic/quota-nfs-anon.t | 46 | ||||
| -rwxr-xr-x | tests/basic/quota.t | 77 | ||||
| -rw-r--r-- | tests/include.rc | 2 | 
3 files changed, 118 insertions, 7 deletions
diff --git a/tests/basic/quota-nfs-anon.t b/tests/basic/quota-nfs-anon.t new file mode 100644 index 000000000..7b5ea5f28 --- /dev/null +++ b/tests/basic/quota-nfs-anon.t @@ -0,0 +1,46 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc + +cleanup; + +TEST glusterd +TEST $CLI volume create $V0 $H0:$B0/${V0}{1} + +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'; + +TEST $CLI volume quota $V0 enable; + +## Mount NFS +TEST mount -t nfs -o nolock,soft,intr $H0:/$V0 $N0; +mkdir -p $N0/0/1 +TEST $CLI volume quota $V0 limit-usage /0/1 1GB 75%; + +deep=/0/1/2/3/4/5/6/7/8/9 +mkdir -p $N0/$deep +dd if=/dev/zero of=$N0/$deep/file bs=1M count=502 & + +kill_brick $V0 $H0 $B0/${V0}{1} +kill -TERM $(get_nfs_pid) + +$CLI volume start $V0 force; + + +cleanup; diff --git a/tests/basic/quota.t b/tests/basic/quota.t index ef015a30d..5c531adbf 100755 --- a/tests/basic/quota.t +++ b/tests/basic/quota.t @@ -9,21 +9,37 @@ 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}; +TEST $CLI volume create $V0 replica 2  $H0:$B0/${V0}{1,2,3,4}; -function limit_on() +function hard_limit()  {          local QUOTA_PATH=$1; -        $CLI volume quota $V0 list | grep "$QUOTA_PATH" | awk '{print $2}' +        $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}'  }  EXPECT "$V0" volinfo_field $V0 'Volume Name';  EXPECT 'Created' volinfo_field $V0 'Status'; -EXPECT '8' brick_count $V0 +EXPECT '4' brick_count $V0  TEST $CLI volume start $V0;  EXPECT 'Started' volinfo_field $V0 'Status'; +TEST glusterfs -s $H0 --volfile-id $V0 $M0; + +TEST mkdir -p $M0/test_dir/in_test_dir +  ## ------------------------------  ## Verify quota commands  ## ------------------------------ @@ -33,19 +49,66 @@ TEST $CLI volume quota $V0 limit-usage /test_dir 100MB  TEST $CLI volume quota $V0 limit-usage /test_dir/in_test_dir 150MB -EXPECT "150MB" limit_on "/test_dir/in_test_dir"; +EXPECT "150.0MB" hard_limit "/test_dir/in_test_dir"; +EXPECT "80%" soft_limit "/test_dir/in_test_dir";  TEST $CLI volume quota $V0 remove /test_dir/in_test_dir -EXPECT "100MB" limit_on "/test_dir"; +EXPECT "100.0MB" hard_limit "/test_dir"; + +TEST $CLI volume quota $V0 limit-usage /test_dir 10MB +EXPECT "10.0MB" hard_limit "/test_dir"; +EXPECT "80%" soft_limit "/test_dir"; + +TEST $CLI volume quota $V0 soft-timeout 0 +TEST $CLI volume quota $V0 hard-timeout 0 -TEST $CLI volume quota $V0 disable  ## ------------------------------ +## Verify quota enforcement +## ----------------------------- + +TEST ! dd if=/dev/urandom of=$M0/test_dir/1.txt bs=1M count=12 +TEST rm $M0/test_dir/1.txt +# wait for marker's accounting to complete +EXPECT_WITHIN 10 "0Bytes" usage "/test_dir" + +TEST dd if=/dev/urandom of=$M0/test_dir/2.txt bs=1M count=8 +EXPECT_WITHIN 20 "8.0MB" usage "/test_dir" +TEST rm $M0/test_dir/2.txt +EXPECT_WITHIN 10 "0Bytes" usage "/test_dir" + +## rename tests +TEST dd if=/dev/urandom of=$M0/test_dir/2 bs=1M count=8 +EXPECT_WITHIN 20 "8.0MB" usage "/test_dir" +TEST mv $M0/test_dir/2 $M0/test_dir/0 +EXPECT_WITHIN 10 "8.0MB" usage "/test_dir" +TEST rm $M0/test_dir/0 +EXPECT_WITHIN 10 "0Bytes" usage "/test_dir" + +## --------------------------- + +## ------------------------------ +## Check if presence of nfs mount results in ESTALE errors for I/O +#  on a fuse mount. Note: Quota command internally uses a fuse mount, +#  though this may change. +## ----------------------------- + +TEST mount -t nfs -o nolock,soft,intr $H0:/$V0 $N0; +TEST $CLI volume quota $V0 limit-usage /test_dir 100MB + +TEST $CLI volume quota $V0 limit-usage /test_dir/in_test_dir 150MB + +EXPECT "150.0MB" hard_limit "/test_dir/in_test_dir"; +## ----------------------------- + +TEST $CLI volume quota $V0 disable  TEST $CLI volume stop $V0;  EXPECT 'Stopped' volinfo_field $V0 'Status';  TEST $CLI volume delete $V0;  TEST ! $CLI volume info $V0; +umount -l $N0 +  cleanup; diff --git a/tests/include.rc b/tests/include.rc index de28241c2..40dd8ac96 100644 --- a/tests/include.rc +++ b/tests/include.rc @@ -214,6 +214,8 @@ function _TEST_IN_LOOP()  function cleanup()  {  	killall -15 glusterfs glusterfsd glusterd 2>/dev/null || true; +        # allow completion of signal handlers for SIGTERM before issue SIGKILL +        sleep 1  	killall -9 glusterfs glusterfsd glusterd 2>/dev/null || true;          MOUNTPOINTS=`mount | grep "$B0/" | awk '{print $3}'`  | 
