GEO_REP_TIMEOUT=120 function check_status_num_rows() { local search_key=$1 $GEOREP_CLI $master $slave status detail | egrep -i "$search_key" | wc -l } function create_data() { prefix=$1 # GF_FOP_MKNOD # GF_FOP_MKDIR # GF_FOP_UNLINK # GF_FOP_RMDIR # GF_FOP_SYMLINK # GF_FOP_RENAME # GF_FOP_LINK # GF_FOP_SETXATTR # GF_FOP_REMOVEXATTR # GF_FOP_CREATE # GF_FOP_SETATTR # Regular file touch ${master_mnt}/${prefix}_f1 touch ${master_mnt}/${prefix}_f2 touch ${master_mnt}/${prefix}_f3 # dir mkdir ${master_mnt}/${prefix}_d1 mkdir ${master_mnt}/${prefix}_d2 touch ${master_mnt}/${prefix}_d3 # Hardlink ln ${master_mnt}/${prefix}_f1 ${master_mnt}/${prefix}_hl1 # Symlink cd ${master_mnt} ln -s ${prefix}_f1 ${prefix}_sl1 cd - # data echo "HelloWorld!" >> ${master_mnt}/${prefix}_f1 # UNLINK rm ${master_mnt}/${prefix}_f2 # RMDIR rmdir ${master_mnt}/${prefix}_d2 # Rename - File mv ${master_mnt}/${prefix}_f3 ${master_mnt}/${prefix}_f4 # Rename - Dir mv ${master_mnt}/${prefix}_d3 ${master_mnt}/${prefix}_d4 # chown touch ${master_mnt}/${prefix}_chown_f1 chown 1000:1000 ${master_mnt}/${prefix}_chown_f1 } function chown_file_ok() { local file_owner=$(stat --format "%u:%g" "$1") if test "X$file_owner" != "X1000:1000"; then echo 1; else echo 0; fi } function regular_file_ok() { local file_type=$(stat --format "%F" "$1") if test "X$file_type" != "Xregular file"; then echo 1; else echo 0; fi } function directory_ok() { file_type=$(stat --format "%F" "$1") if test "X$file_type" != "Xdirectory"; then echo 1; else echo 0; fi } function unlink_ok() { stat "$1" > /dev/null 2>&1 rc=$? echo $rc } function hardlink_file_ok() { orig_file=$1 link_file=$2 orig_inode=$(stat --format "%i" "$orig_file") rc=$? if test $rc != 0; then echo $rc else link_inode=$(stat --format "%i" "$link_file") rc=$? if test $rc != 0; then echo $rc else if test $orig_inode != $link_inode; then echo 1 else echo 0 fi fi fi } function data_ok() { path=$1 data1="$2" data2=$(cat $path) echo "data1:$data1" echo "data2:$data2" if test "X$data1" != "X$data2"; then echo 1 else echo 0 fi } function arequal_checksum() { master=$1 slave=$2 diff <(arequal-checksum -p $master) <(arequal-checksum -p $slave) | wc -l } function symlink_ok() { local orig_file_name=$1 local symlink_file=$2 local file_type=$(stat --format "%F" "$symlink_file") if test "X$file_type" != "Xsymbolic link"; then echo 1 else local fname=$(readlink $symlink_file) if test "X$fname" != "X$orig_file_name"; then echo 1 else echo 0 fi fi } function rename_ok() { old_name=$1 new_name=$2 if [ -f $old_name ]; then echo 1 elif [ ! -f $new_name ]; then echo 1 else echo 0 fi } function create_georep_session() { $CLI system:: execute gsec_create rc=$? if test $rc != 0; then echo $rc else $CLI volume geo-rep $master $slave create push-pem rc=$? if test $rc != 0; then echo $rc else echo 0 fi fi } # logrotate_simulate should be called (rotate_count + 1) times to cause # an unlink and a gfid re-allocation. # remember to keep the file name and rotate_count the same across the # calls function logrotate_simulate() { file_name=$1 declare -i rotate_count=$2 while [ $rotate_count -ge 0 ]; do source_file="$file_name.$((rotate_count))" if [ $rotate_count -eq 0 ]; then source_file="$file_name" fi if [ -f "${source_file}" ]; then mv "${source_file}" "$file_name.$((rotate_count+1))" fi ((rotate_count--)) done # logrotate causes gfid to be rellocated to a new file created # after an unlink and a blind rename later causes georep session # to go Faulty # this should not happen if source basename on slave is tested # to be linked with its own gfid as on master, before invoking # the rename syscall touch $file_name rotate_count=$2 unlink_file_name="$file_name.$((rotate_count+1))" unlink $unlink_file_name 2>/dev/null } function create_rename() { file_name=$1 echo $file_name > $file_name mv $file_name $file_name.bak } function create_rename_ok() { file_name=$1 # after a log replay, we don't expect the original file # to be recreated i.e. a dangling entry without a corresponding # back-end gfid link should not exist on the slave if [ -f "$file_name" ]; then echo 1 else echo 0 fi } function hardlink_rename() { file_name=$1 echo $file_name > $file_name ln $file_name $file_name.hl mv $file_name.hl $file_name.hl1 } function hardlink_rename_ok() { file_name=$1 # the hardlink file should not exist on the slave after renaming # to one of its links on changelog reprocessing if [ ! -f "$file_name" ]; then echo 1 elif [ ! -f "$file_name.hl1" ]; then echo 1 elif [ -f "$file_name.hl" ]; then echo 1 else echo 0 fi } function symlink_rename_mkdir_ok() { sym_dir=$1 if [ ! -f $sym_dir/file1 ]; then echo 1 elif [ ! -h $sym_dir/rn_sym_link ]; then echo 1 elif [ ! -d $sym_dir/sym_link ]; then echo 1 else echo 0 fi }