diff options
Diffstat (limited to 'tests/afr.rc')
| -rw-r--r-- | tests/afr.rc | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/tests/afr.rc b/tests/afr.rc new file mode 100644 index 00000000000..241789903ba --- /dev/null +++ b/tests/afr.rc @@ -0,0 +1,123 @@ +#!/bin/bash + +function create_brick_xattrop_entry { + local xattrop_dir=$(afr_get_index_path $1) + local base_entry=`ls $xattrop_dir|grep xattrop` + local gfid_str + local params=`echo "$@" | cut -d' ' -f2-` + echo $params + + for file in $params + do + gfid_str=$(gf_gfid_xattr_to_str $(gf_get_gfid_xattr $1/$file)) + ln $xattrop_dir/$base_entry $xattrop_dir/$gfid_str + done +} + +function diff_dirs { + diff <(ls $1 | sort) <(ls $2 | sort) +} + +function heal_status { + local f1_path="${1}/${3}" + local f2_path="${2}/${3}" + local zero_xattr="000000000000000000000000" + local insync="" + diff_dirs $f1_path $f2_path + if [ $? -eq 0 ]; + then + insync="Y" + else + insync="N" + fi + local xattr11=$(get_hex_xattr trusted.afr.$V0-client-0 $f1_path) + local xattr12=$(get_hex_xattr trusted.afr.$V0-client-1 $f1_path) + local xattr21=$(get_hex_xattr trusted.afr.$V0-client-0 $f2_path) + local xattr22=$(get_hex_xattr trusted.afr.$V0-client-1 $f2_path) + local dirty1=$(get_hex_xattr trusted.afr.dirty $f1_path) + local dirty2=$(get_hex_xattr trusted.afr.dirty $f2_path) + if [ -z $xattr11 ]; then xattr11="000000000000000000000000"; fi + if [ -z $xattr12 ]; then xattr12="000000000000000000000000"; fi + if [ -z $xattr21 ]; then xattr21="000000000000000000000000"; fi + if [ -z $xattr22 ]; then xattr22="000000000000000000000000"; fi + if [ -z $dirty1 ]; then dirty1="000000000000000000000000"; fi + if [ -z $dirty2 ]; then dirty2="000000000000000000000000"; fi + echo ${insync}${xattr11}${xattr12}${xattr21}${xattr22}${dirty1}${dirty2} +} +# Check if given dir's self-heal is done +function is_dir_heal_done { + local zero_xattr="000000000000000000000000" + if [ "$(heal_status $@)" == "Y${zero_xattr}${zero_xattr}${zero_xattr}${zero_xattr}${zero_xattr}${zero_xattr}" ]; + then + echo "Y" + else + echo "N" + fi +} +# Check if the given file's self-heal is done +function is_file_heal_done { + local f1_path="${1}/${3}" + local f2_path="${2}/${3}" + local zxattr="000000000000000000000000" + local size1=$(stat -c "%s" $f1_path) + local size2=$(stat -c "%s" $f2_path) + local diff=$((size1-size2)) + local x11=$(get_hex_xattr trusted.afr.$V0-client-0 $f1_path) + local x12=$(get_hex_xattr trusted.afr.$V0-client-1 $f1_path) + local x21=$(get_hex_xattr trusted.afr.$V0-client-0 $f2_path) + local x22=$(get_hex_xattr trusted.afr.$V0-client-1 $f2_path) + local dirty1=$(get_hex_xattr trusted.afr.dirty $f1_path) + local dirty2=$(get_hex_xattr trusted.afr.dirty $f2_path) + if [ -z $x11 ]; then x11="000000000000000000000000"; fi + if [ -z $x12 ]; then x12="000000000000000000000000"; fi + if [ -z $x21 ]; then x21="000000000000000000000000"; fi + if [ -z $x22 ]; then x22="000000000000000000000000"; fi + if [ -z $dirty1 ]; then dirty1="000000000000000000000000"; fi + if [ -z $dirty2 ]; then dirty2="000000000000000000000000"; fi + if [ "${diff}${x11}${x12}${x21}${x22}${dirty1}${dirty2}" == "0${zxattr}${zxattr}${zxattr}${zxattr}${zxattr}${zxattr}" ]; + then + echo "Y" + else + echo "N" + fi +} + +#count the number of entries marked for self-heal +#in brick $1's index + +function count_index_entries() +{ + ls $1/.glusterfs/indices/xattrop | wc -l +} + +function afr_up_status() +{ + local v=$1 + local m=$2 + local replica_id=$3 + grep -E "^up = " $m/.meta/graphs/active/${v}-replicate-${replica_id}/private | cut -f2 -d'=' +} + +function get_quorum_type() +{ + local m="$1" + local v="$2" + local repl_id="$3" + cat $m/.meta/graphs/active/$v-replicate-$repl_id/private|grep quorum-type|awk '{print $3}' +} + +function afr_private_key_value() +{ + local v=$1 + local m=$2 + local replica_id=$3 + local key=$4 +#xargs at the end will strip leading spaces + grep -E "^${key} = " $m/.meta/graphs/active/${v}-replicate-${replica_id}/private | cut -f2 -d'=' | xargs +} + +function afr_anon_entry_count() +{ + local b=$1 + ls $b/.glusterfs-anonymous-inode* | wc -l +} |
