diff options
Diffstat (limited to 'tests/features/unhashed-auto.t')
| -rwxr-xr-x | tests/features/unhashed-auto.t | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/tests/features/unhashed-auto.t b/tests/features/unhashed-auto.t index 97663c20e10..0a6bbfbb07d 100755 --- a/tests/features/unhashed-auto.t +++ b/tests/features/unhashed-auto.t @@ -39,6 +39,11 @@ get_xattr () { $cmd $1 | od -tx1 -An | tr -d ' ' } +get_xattr_hash () { + cmd="getfattr --absolute-names --only-values -n trusted.glusterfs.dht" + $cmd $1 | od -tx1 -An | awk '{printf("%s%s%s%s\n", $1, $2, $3, $4);}' +} + cleanup TEST glusterd @@ -49,7 +54,7 @@ TEST $CLI volume create $V0 $H0:$B0/${V0}{1,2} EXPECT "$V0" volinfo_field $V0 'Volume Name' EXPECT 'Created' volinfo_field $V0 'Status' -TEST $CLI volume set $V0 cluster.lookup-unhashed auto +TEST $CLI volume set $V0 cluster.lookup-optimize ON TEST $CLI volume start $V0 EXPECT 'Started' volinfo_field $V0 'Status' @@ -58,7 +63,7 @@ EXPECT 'Started' volinfo_field $V0 'Status' TEST $GFS -s $H0 --volfile-id $V0 $M0 TEST mkdir $M0/dir TEST touch_files -TEST umount $M0 +EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $M0 # Add a brick and do the fix-layout part of rebalance to update directory layouts # (including their directory commit hashes). @@ -77,7 +82,7 @@ TEST setfattr -x trusted.glusterfs.dht.commithash $B0/${V0}3 # correctly skipped the broadcast lookup that would have found them. TEST $GFS -s $H0 --volfile-id $V0 $M0 TEST [ $(count_files) -ne 100 ] -TEST umount $M0 +EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $M0 # Do the fix-layout again to generate a new volume commit hash. TEST $CLI volume rebalance $V0 fix-layout start @@ -87,7 +92,7 @@ TEST wait_for_rebalance # the mismatch and did the broadcast lookup this time. TEST $GFS -s $H0 --volfile-id $V0 $M0 TEST [ $(count_files) -eq 100 ] -TEST umount $M0 +EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $M0 # Do a *full* rebalance and verify that the directory commit hash changed. old_val=$(get_xattr $B0/${V0}1/dir) @@ -96,4 +101,25 @@ TEST wait_for_rebalance new_val=$(get_xattr $B0/${V0}1/dir) TEST [ ! x"$old_val" = x"$new_val" ] +# Force an anomoly on an existing layout and heal it +## The healed layout should not carry a commit-hash (or should carry 1 in the +## commit-hash) +TEST setfattr -x trusted.glusterfs.dht $B0/${V0}1/dir +TEST $GFS -s $H0 --volfile-id $V0 $M0 +TEST [ -d $M0/dir ] +new_hash=$(get_xattr_hash $B0/${V0}1/dir) +TEST [ x"$new_hash" = x"00000001" ] +new_hash=$(get_xattr_hash $B0/${V0}2/dir) +TEST [ x"$new_hash" = x"00000001" ] + +# Unset the option and check that newly created directories get 1 in the +# disk layout +TEST $CLI volume set $V0 cluster.lookup-optimize off +TEST mkdir $M0/dir1 +new_hash=$(get_xattr_hash $B0/${V0}1/dir1) +TEST [ x"$new_hash" = x"00000001" ] +new_hash=$(get_xattr_hash $B0/${V0}2/dir1) +TEST [ x"$new_hash" = x"00000001" ] + + cleanup |
