diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/bugs/bug-1035576.t | 51 | ||||
-rw-r--r-- | tests/volume.rc | 7 |
2 files changed, 58 insertions, 0 deletions
diff --git a/tests/bugs/bug-1035576.t b/tests/bugs/bug-1035576.t new file mode 100644 index 00000000000..08c8a5ea249 --- /dev/null +++ b/tests/bugs/bug-1035576.t @@ -0,0 +1,51 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc + +#This script tests that self-heal of limit-set xattr is happening on a directory +#but self-heal of quota.size xattr is not happening + +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 +TEST $CLI volume set $V0 performance.quick-read off +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 quota $V0 enable +sleep 5 # wait for brick to connect to quotad +TEST kill_brick $V0 $H0 $B0/${V0}0 +TEST glusterfs --volfile-id=/$V0 --volfile-server=$H0 $M0 --attribute-timeout=0 --entry-timeout=0 +cd $M0 +TEST mkdir $M0/a +TEST $CLI volume quota $V0 limit-usage /a 1GB +echo abc > $M0/a/f +$CLI volume start $V0 force +EXPECT_WITHIN 20 "1" afr_child_up_status $V0 0 +quota_limit_val1=$(get_hex_xattr trusted.glusterfs.quota.limit-set $B0/${V0}1/a) +quota_size_val1=$(get_hex_xattr trusted.glusterfs.quota.size $B0/${V0}1/a) + +#Trigger entry,metadata self-heal +TEST stat $M0/a +quota_limit_val0=$(get_hex_xattr trusted.glusterfs.quota.limit-set $B0/${V0}0/a) +quota_size_val0=$(get_hex_xattr trusted.glusterfs.quota.size $B0/${V0}0/a) + +#Test that limit-set xattr is healed +TEST [ $quota_limit_val0 == $quota_limit_val1 ] + +#Only entry, metadata self-heal is done quota size value should not be same +TEST [ $quota_size_val0 != $quota_size_val1 ] +TEST stat $M0/a/f + +#Now that data self-heal is done quota size value should be same +quota_size_val0=$(get_hex_xattr trusted.glusterfs.quota.size $B0/${V0}0/a) +TEST [ $quota_size_val0 == $quota_size_val1 ] +cleanup diff --git a/tests/volume.rc b/tests/volume.rc index 98712242020..b1aa904fb27 100644 --- a/tests/volume.rc +++ b/tests/volume.rc @@ -272,3 +272,10 @@ function get_backend_paths { getfattr -m . -n trusted.glusterfs.pathinfo $path | tr ' ' '\n' | sed -n 's/<POSIX.*:.*:\(.*\)>.*/\1/p' } + +#Gets the xattr value in hex, also removed 0x in front of the value +function get_hex_xattr { + local key=$1 + local path=$2 + getfattr -d -m. -e hex $2 2>/dev/null | grep $1 | cut -f2 -d'=' | cut -f2 -d'x' +} |