tests/geo-rep: Add symlink rename test case

Added a test case of symlink rename and directory
creation with the name same as original symlink
file. Also fixed few other issues in geo-rep.rc

fixes: bz#1595726
Change-Id: I8e6acd3e742f3a0104cd37b87d1c0e0c902679b5
Signed-off-by: Kotresh HR <khiremat@redhat.com>
This commit is contained in:
Kotresh HR 2018-06-27 08:26:44 -04:00 committed by Nigel Babu
parent b3c2116d99
commit 957e2963cf
3 changed files with 104 additions and 35 deletions

View File

@ -3,7 +3,6 @@
. $(dirname $0)/../include.rc
. $(dirname $0)/../volume.rc
. $(dirname $0)/../geo-rep.rc
. $(dirname $0)/../env.rc
AREQUAL_PATH=$(dirname $0)/../utils
test "`uname -s`" != "Linux" && {
@ -157,6 +156,25 @@ EXPECT_WITHIN $GEO_REP_TIMEOUT 0 hardlink_rename_ok ${slave_mnt}/hardlink_rename
#Stop Geo-rep
TEST $GEOREP_CLI $master $slave stop
#Symlink testcase: Rename symlink and create dir with same name
TEST mkdir ${master_mnt}/symlink_test1
TEST touch ${master_mnt}/symlink_test1/file1
TEST ln -s "./file1" ${master_mnt}/symlink_test1/sym_link
TEST mv ${master_mnt}/symlink_test1/sym_link ${master_mnt}/symlink_test1/rn_sym_link
TEST mkdir ${master_mnt}/symlink_test1/sym_link
#Start Geo-rep
TEST $GEOREP_CLI $master $slave start
#Check for hardlink rename case. It should not create src file again on
# changelog reprocessing. Refer BUG1296174
EXPECT_WITHIN $GEO_REP_TIMEOUT 0 hardlink_rename_ok ${slave_mnt}/hardlink_rename_test_file
#symlink rename mkdir
EXPECT_WITHIN $GEO_REP_TIMEOUT 0 symlink_rename_mkdir_ok ${slave_mnt}/symlink_test1
#Stop Geo-rep
TEST $GEOREP_CLI $master $slave stop
#Delete Geo-rep
TEST $GEOREP_CLI $master $slave delete

View File

@ -159,6 +159,25 @@ EXPECT_WITHIN $GEO_REP_TIMEOUT 0 hardlink_rename_ok ${slave_mnt}/hardlink_rename
#Stop Geo-rep
TEST $GEOREP_CLI $master $slave stop
#Symlink testcase: Rename symlink and create dir with same name
TEST mkdir ${master_mnt}/symlink_test1
TEST touch ${master_mnt}/symlink_test1/file1
TEST ln -s "./file1" ${master_mnt}/symlink_test1/sym_link
TEST mv ${master_mnt}/symlink_test1/sym_link ${master_mnt}/symlink_test1/rn_sym_link
TEST mkdir ${master_mnt}/symlink_test1/sym_link
#Start Geo-rep
TEST $GEOREP_CLI $master $slave start
#Check for hardlink rename case. It should not create src file again on
# changelog reprocessing. Refer BUG1296174
EXPECT_WITHIN $GEO_REP_TIMEOUT 0 hardlink_rename_ok ${slave_mnt}/hardlink_rename_test_file
#symlink rename mkdir
EXPECT_WITHIN $GEO_REP_TIMEOUT 0 symlink_rename_mkdir_ok ${slave_mnt}/symlink_test1
#Stop Geo-rep
TEST $GEOREP_CLI $master $slave stop
#Delete Geo-rep
TEST $GEOREP_CLI $master $slave delete

View File

@ -92,17 +92,20 @@ function hardlink_file_ok()
orig_inode=$(stat --format "%i" "$orig_file")
rc=$?
if test $rc != 0; then echo $rc; fi
link_inode=$(stat --format "%i" "$link_file")
rc=$?
if test $rc != 0; then echo $rc; fi
if test $orig_inode != $link_inode
then
echo 1
if test $rc != 0; then
echo $rc
else
echo 0
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
}
@ -113,8 +116,7 @@ function data_ok()
data2=$(cat $path)
echo "data1:$data1"
echo "data2:$data2"
if test "X$data1" != "X$data2"
then
if test "X$data1" != "X$data2"; then
echo 1
else
echo 0
@ -134,10 +136,17 @@ function symlink_ok()
local symlink_file=$2
local file_type=$(stat --format "%F" "$symlink_file")
if test "X$file_type" != "Xsymbolic link"; then echo 1;else echo 0; fi
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
local fname=$(readlink $symlink_file)
if test "X$fname" != "X$orig_file_name"; then echo 1;else echo 0; fi
}
function rename_ok()
@ -145,27 +154,30 @@ function rename_ok()
old_name=$1
new_name=$2
if [ -f $old_name ]
then
if [ -f $old_name ]; then
echo 1
fi
if [ ! -f $new_name ]
then
elif [ ! -f $new_name ]; then
echo 1
else
echo 0
fi
echo 0
}
function create_georep_session()
{
$CLI system:: execute gsec_create
rc=$?
if test $rc != 0; then echo $rc; fi
$CLI volume geo-rep $master $slave create push-pem
rc=$?
if test $rc != 0; then echo $rc; fi
echo 0
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
@ -214,9 +226,10 @@ function create_rename_ok()
# 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
echo 1
else
echo 0
fi
echo 0
}
function hardlink_rename()
@ -224,16 +237,35 @@ function hardlink_rename()
file_name=$1
echo $file_name > $file_name
ln $file_name $file_name.hl
mv $file_name.hl $file_name
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
if [ -f "$file_name.hl" ]; then
echo 1
# 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
echo 0
}