tests: New simple geo-rep regression test suite

This is a new simple regression test suite for
geo-replication. This is written keeping in mind
the run time for regression test. The existing
regression test suite is rigorous one and could
be run nightly. Hence the existing geo-rep tests
are being removed as part of this.

Also re-enable geo-rep regression with this patch.

Thanks Aravinda for initial template and plan.

Change-Id: If544ac295eaf67ac66e0b071903cc1096e71d437
BUG: 1227624
Signed-off-by: Kotresh HR <khiremat@redhat.com>
Reviewed-on: http://review.gluster.org/11058
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Tested-by: NetBSD Build System <jenkins@build.gluster.org>
Reviewed-by: Aravinda VK <avishwan@redhat.com>
This commit is contained in:
Kotresh HR 2015-05-28 19:26:00 +05:30 committed by Venky Shankar
parent 64e6836ac8
commit dace4bbd0f
14 changed files with 371 additions and 961 deletions

View File

@ -164,8 +164,7 @@ function run_tests()
return $match
}
RES=0
for t in $(find ${regression_testsdir}/tests | grep -v geo-rep \
| LC_COLLATE=C sort) ; do
for t in $(find ${regression_testsdir}/tests | LC_COLLATE=C sort) ; do
if match $t "$@" ; then
if [ -d $t ] ; then
echo "Running tests in directory $t"
@ -208,7 +207,6 @@ function is_bad_test ()
function run_all ()
{
find ${regression_testsdir}/tests -name '*.t' \
| grep -v geo-rep \
| LC_COLLATE=C sort \
| while read t; do
old_cores=$(ls /core.* 2> /dev/null | wc -l)

183
tests/geo-rep.rc Normal file
View File

@ -0,0 +1,183 @@
function check_status()
{
local search_key=$1
$GEOREP_CLI $master $slave status detail | egrep -i "$search_key"
}
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
ln -s ${master_mnt}/${prefix}_f1 ${master_mnt}/${prefix}_sl1
# data
echo "Hello World!" >> ${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
}
function regular_file_ok()
{
local file_type=$(stat --format "%F" "$1")
if test "X$file_type" != "Xregular file"; then return 1; fi
}
function directory_ok()
{
file_type=$(stat --format "%F" "$1")
if test "X$file_type" != "Xdirectory"; then return 1; fi
}
function unlink_ok()
{
stat "$1" stat ./case > /dev/null 2>&1
rc=$?
if test $rc != 0; then return 0; fi
return 1;
}
function hardlink_file_ok()
{
orig_file=$1
link_file=$2
orig_inode=$(stat --format "%i" "$orig_file")
rc=$?
if test $rc != 0; then return $rc; fi
link_inode=$(stat --format "%i" "$link_file")
rc=$?
if test $rc != 0; then return $rc; fi
if test $orig_inode != $link_inode
then
return 1
fi
}
function data_ok()
{
path=$1
data1=$2
data2=$(cat $path)
if test "X$data1" != "X$data2"
then
return 1
fi
}
function symlink_ok()
{
local orig_file_name=$(basename $1)
local symlink_file=$2
local file_type=$(stat --format "%F" "$symlink_file")
if test "X$file_type" != "Xsymbolic link"; then return 1; fi
local fname=$(stat $symlink_file --format "%N")
if test "X$fname" != "X$orig_file_name"; then return 1; fi
}
function rename_ok()
{
old_name=$1
new_name=$2
if [ -f $old_name ]
then
return 1
fi
if [ ! -f $new_name ]
then
return 1
fi
}
function data_tests()
{
local prefix=$1
sleep 10
#Regular file checking
regular_file_ok ${slave_mnt}/${prefix}_f1
if test $? != 0; then return $?; fi
#Directory checking
directory_ok ${slave_mnt}/${prefix}_d1
if test $? != 0; then return $?; fi
#Rename file/dir checking
rename_ok ${slave_mnt}/${prefix}_f3 ${slave_mnt}/${prefix}_f4
if test $? != 0; then return $?; fi
rename_ok ${slave_mnt}/${prefix}_d3 ${slave_mnt}/${prefix}_d4
if test $? != 0; then return $?; fi
#Symlink
symlink_ok ${slave_mnt}/${prefix}_f1 ${slave_mnt}/${prefix}_sl1
if test $? != 0; then return $?; fi
#Hardlink
hardlink_file_ok ${slave_mnt}/${prefix}_f1 ${slave_mnt}/${prefix}_hl1
if test $? != 0; then return $?; fi
#Unlink/rmdir checking
unlink_ok ${slave_mnt}/${prefix}_f2
if test $? != 0; then return $?; fi
unlink_ok ${slave_mnt}/${prefix}_d2
if test $? != 0; then return $?; fi
#Data
data_ok ${master_mnt}/${prefix}_f1 "Hello World!"
if test $? != 0; then return $?; fi
}
function create_georep_session()
{
$CLI system:: execute gsec_create
if test $? != 0; then return $?; fi
$CLI volume geo-rep $master $slave create push-pem
if test $? != 0; then return $?; fi
}

View File

@ -1,244 +0,0 @@
#!/usr/bin/python
import sys
import os
import re
import tempfile
import subprocess
from multiprocessing import Pool
import time
from optparse import OptionParser
slave_dict = {}
master_res = ''
def get_arequal_checksum(me, mnt):
global slave_dict
master_cmd = ['./tests/utils/arequal-checksum', '-p', mnt]
print "Calculating "+me+" checksum ..."
print ""
p = subprocess.Popen(master_cmd, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
ret = p.wait()
stdout, stderr = p.communicate()
if ret:
print "Failed to get the checksum of " + me + " with following error"
print stderr
return 1
else:
return stdout
def get_file_count(me, mnt):
global slave_dict
master_cmd = ['find ' + mnt + ' |wc -l']
print "Calculating " + me + " files ..."
print ""
p = subprocess.Popen(master_cmd, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, shell=True)
ret = p.wait()
stdout, stderr = p.communicate()
if ret:
print "Failed to get the count of files in " + me
+ " with following error"
print stderr
return 1
else:
return stdout.strip()
def compare_checksum(master_mnt, slave_dict):
proc = len(slave_dict)+1
pool = Pool(processes=proc)
master_res = pool.apply_async(get_arequal_checksum, args=("master",
master_mnt))
results = [(slave, pool.apply_async(get_arequal_checksum,
args=(slave_dict[slave]["vol"],
slave_dict[slave]["mnt"])))
for slave in slave_dict]
pool.close()
pool.join()
for slave, result in results:
slave_dict[slave]["res"] = result.get()
# exception: OSError
master_res = master_res.get()
print "arequal-checksum of master is : \n %s" % master_res
for slave in slave_dict:
print "arequal-checksum of geo_rep_slave %s: \n %s" % (
slave_dict[slave]["vol"], slave_dict[slave]["res"])
master_files, master_total = re.findall('Total[\s]+:\s(\w+)', master_res)
master_reg_meta, master_reg = re.findall('Regular files[\s]+:\s(\w+)',
master_res)[1:]
master_dir_meta, master_dir = re.findall('Directories[\s]+:\s(\w+)',
master_res)[1:]
ret = 0
for slave in slave_dict:
slave_dict[slave]["files"], slave_dict[slave]["total"] = re.findall(
'Total[\s]+:\s(\w+)', slave_dict[slave]["res"])
slave_dict[slave]["reg_meta"], slave_dict[slave]["reg"] = re.findall(
'Regular files[\s]+:\s(\w+)', slave_dict[slave]["res"])[1:]
slave_dict[slave]["dir_meta"], slave_dict[slave]["dir"] = re.findall(
'Directories[\s]+:\s(\w+)', slave_dict[slave]["res"])[1:]
if master_reg_meta != slave_dict[slave]["reg_meta"]:
print ("Meta data checksum for regular files doesn't match " +
"between master and "+slave_dict[slave]["vol"])
ret = 67
if master_dir_meta != slave_dict[slave]["dir_meta"]:
print ("Meta data checksum for directories doesn't match " +
"between master and "+slave_dict[slave]["vol"])
ret = 68
if master_files != slave_dict[slave]["files"]:
print ("Failed to sync all the files from master to " +
slave_dict[slave]["vol"])
ret = 1
if master_total != slave_dict[slave]["total"]:
if master_reg != slave_dict[slave]["reg"]:
print ("Checksum for regular files doesn't match " +
"between master and "+slave_dict[slave]["vol"])
ret = 1
elif master_dir != slave_dict[slave]["dir"]:
print ("Checksum for directories doesn't match between " +
"master and "+slave_dict[slave]["vol"])
ret = 1
else:
print ("Checksum for symlinks or others doesn't match " +
"between master and "+slave_dict[slave]["vol"])
ret = 1
if ret is 0:
print ("Successfully synced all the files from master " +
"to the "+slave_dict[slave]["vol"])
return ret
def compare_filecount(master_mnt, slave_dict):
proc = len(slave_dict)+1
pool = Pool(processes=proc)
master_res = pool.apply_async(get_file_count, args=("master", master_mnt))
results = [(slave, pool.apply_async(get_file_count,
args=(slave_dict[slave]["vol"],
slave_dict[slave]["mnt"])))
for slave in slave_dict]
pool.close()
pool.join()
for slave, result in results:
slave_dict[slave]["res"] = result.get()
master_res = master_res.get()
ret = 0
for slave in slave_dict:
if not master_res == slave_dict[slave]["res"]:
print ("files count between master and " +
slave_dict[slave]["vol"]+" doesn't match yet")
ret = 1
return ret
def parse_url(url):
match = re.search(r'([\w - _ @ \.]+)::([\w - _ @ \.]+)', url)
if match:
node = match.group(1)
vol = match.group(2)
else:
print 'given url is not a valid.'
sys.exit(1)
return node, vol
def cleanup(master_mnt, slave_dict):
try:
os.system("umount %s" % (master_mnt))
except:
print("Failed to unmount the master volume")
for slave in slave_dict:
try:
os.system("umount %s" % (slave_dict[slave]["mnt"]))
os.removedirs(slave_dict[slave]["mnt"])
except:
print("Failed to unmount the "+slave+" volume")
os.removedirs(master_mnt)
def main():
slaves = args[1:]
masterurl = args[0]
master_node, mastervol = parse_url(masterurl)
master_mnt = tempfile.mkdtemp()
i = 1
for slave in slaves:
slave_dict["slave"+str(i)] = {}
slave_dict["slave"+str(i)]["node"], slave_dict[
"slave"+str(i)]["vol"] = parse_url(slave)
slave_dict["slave"+str(i)]["mnt"] = tempfile.mkdtemp()
i += 1
try:
print ("mounting the master volume on "+master_mnt)
os.system("glusterfs -s %s --volfile-id %s %s" % (master_node,
mastervol,
master_mnt))
time.sleep(3)
except:
print("Failed to mount the master volume")
for slave in slave_dict:
print slave
print slave_dict[slave]
try:
print ("mounting the slave volume on "+slave_dict[slave]['mnt'])
os.system("glusterfs -s %s --volfile-id %s %s" % (
slave_dict[slave]["node"], slave_dict[slave]["vol"],
slave_dict[slave]["mnt"]))
time.sleep(3)
except:
print("Failed to mount the "+slave+" volume")
res = 0
if option.check == "arequal":
res = compare_checksum(master_mnt, slave_dict)
elif option.check == "find":
res = compare_filecount(master_mnt, slave_dict)
else:
print "wrong options given"
cleanup(master_mnt, slave_dict)
sys.exit(res)
if __name__ == '__main__':
usage = "usage: %prog [option] <master-host>::<master-vol> \
<slave1-host>::<slave1-vol> . . ."
parser = OptionParser(usage=usage)
parser.add_option("-c", dest="check", action="store", type="string",
default="arequal",
help="size of the files to be used [default: %default]")
(option, args) = parser.parse_args()
if not args:
print "usage: <script> [option] <master-host>::<master-vol>\
<slave1-host>::<slave1-vol> . . ."
print ""
sys.exit(1)
main()

View File

@ -1,95 +0,0 @@
#!/usr/bin/python
# Most of this script was written by M S Vishwanath Bhat (vbhat@redhat.com)
import re
import os
import sys
import xattr
import tempfile
def parse_url(url):
match = re.search(r'([\w - _ @ \.]+)::([\w - _ @ \.]+)', url)
if match:
node = match.group(1)
vol = match.group(2)
else:
print 'given url is not a valid url.'
sys.exit(1)
return node, vol
def cleanup(master_mnt, slave_mnt):
try:
os.system("umount %s" % (master_mnt))
except:
print("Failed to unmount the master volume")
try:
os.system("umount %s" % (slave_mnt))
except:
print("Failed to unmount the slave volume")
os.removedirs(master_mnt)
os.removedirs(slave_mnt)
def main():
masterurl = sys.argv[1]
slaveurl = sys.argv[2]
slave_node, slavevol = parse_url(slaveurl)
master_node, mastervol = parse_url(masterurl)
master_mnt = tempfile.mkdtemp()
slave_mnt = tempfile.mkdtemp()
try:
print "Mounting master volume on a temp mnt_pnt"
os.system("glusterfs -s %s --volfile-id %s %s" % (master_node,
mastervol,
master_mnt))
except:
print("Failed to mount the master volume")
cleanup(master_mnt, slave_mnt)
sys.exit(1)
try:
print "Mounting slave voluem on a temp mnt_pnt"
os.system("glusterfs -s %s --volfile-id %s %s" % (slave_node, slavevol,
slave_mnt))
except:
print("Failed to mount the master volume")
cleanup(master_mnt, slave_mnt)
sys.exit(1)
slave_file_list = [slave_mnt]
for top, dirs, files in os.walk(slave_mnt, topdown=False):
for subdir in dirs:
slave_file_list.append(os.path.join(top, subdir))
for file in files:
slave_file_list.append(os.path.join(top, file))
# chdir and then get the gfid, so that you don't need to replace
gfid_attr = 'glusterfs.gfid'
ret = 0
for sfile in slave_file_list:
mfile = sfile.replace(slave_mnt, master_mnt)
if xattr.getxattr(sfile, gfid_attr, True) != xattr.getxattr(
mfile, gfid_attr, True):
print ("gfid of file %s in slave is different from %s" +
" in master" % (sfile, mfile))
ret = 1
cleanup(master_mnt, slave_mnt)
sys.exit(ret)
if __name__ == '__main__':
if len(sys.argv[1:]) < 2:
print ("Please pass master volume name and slave url as arguments")
print ("USAGE : python <script> <master-host>::<master-vol> " +
"<slave-host>::<slave-vol>")
sys.exit(1)
main()

View File

@ -1,14 +0,0 @@
#!/bin/bash
#LOG_DIR="$DEFAULT_LOG_FILE_DIRECTORY/glusterfs/geo-rep-auto-logs"
LOG_DIR="/usr/local/var/log/geo-rep-auto-logs"
LOG_FILE="$LOG_DIR/geo-rep-auto.log.`date +%Y%m%d-%H%M%S`"
FILE_TYPE="text" # it can text, sparse or tar
nf="5" # number of files in each directory when DIR_STR is MULTI
ns="500" # number of files when DIR_STR is SINGLE
DIR_STR="MULTI" # It can be either SINGLE or MULTI
# Not using this option for now, can be used in the future.
SYNC_MODE="rsync" # this option can take another option "tarssh"
mkdir -p $LOG_DIR

View File

@ -1,296 +0,0 @@
#!/bin/bash
function geo_rep_checkpoint_status()
{
echo "Verifying the sync status using geo-rep checkpoint" >> $LOG_FILE
local timeout=300
local temp_status="NOTOK"
echo "setting the checkpoint" >> $LOG_FILE
$CLI volume geo-rep $GMV0 $H0::$GSV0 config checkpoint now >> $LOG_FILE 2>&1
# There is a bug, where in after checkpoint set, geo-rep status still
# shows the old data for the first execution of geo-rep status. Running
#geo-rep status to clear that.
$CLI volume geo-replication $GMV0 $H0::$GSV0 status >> $LOG_FILE 2>&1
while [ $timeout -gt 0 ] && [ $temp_status == "NOTOK" ];
do
$CLI volume geo-replication $GMV0 $H0::$GSV0 status | \
egrep -i "not reached yet" 2>&1 >/dev/null
test $? -ne 0 && temp_status="completed"
echo "Waiting for the files to sync ..." >> $LOG_FILE
sleep 20
timeout=`expr $timeout - 20`
echo "temp_status is $temp_status" >> $LOG_FILE
echo "geo-rep status output:" >> $LOG_FILE
$CLI volume geo-replication $GMV0 $H0::$GSV0 status detail >> \
$LOG_FILE 2>&1
done
echo "resetting the geo-rep checkpoint" >> $LOG_FILE
$CLI volume geo-rep $GMV0 $H0::$GSV0 config \!checkpoint >> $LOG_FILE 2>&1
if test $temp_status = "completed" ; then
echo "geo-rep checkpoint has completed" >> $LOG_FILE
return 0
elif test $temp_status = "NOTOK" ; then
echo "geo-rep checkpoint has failed to complete within 300 seconds" >> \
$LOG_FILE
return 1
fi
}
function geo_rep_arequal_status()
{
echo "Verifying the sync status using arequal" >> $LOG_FILE
local timeout=300
local temp_status="NOTOK"
local comp_arequal="$(dirname $0)/compare-arequal.py"
while [ $timeout -gt 0 ] && [ $temp_status == "NOTOK" ];
do
echo "Waiting for the files to sync ..." >> $LOG_FILE
sleep 20
timeout=`expr $timeout - 20`
echo "calculating and comparing arequal checksum between $GMV0 and \
$GSV0 " >> $LOG_FILE
$PYTHON $comp_arequal $H0::$GMV0 $H0::$GSV0 >> $LOG_FILE 2>&1
local ret=$?
# There is a bug, where sometimes metadata checksum of directories
# and regular files don't match. This is to avoid that for now.
if [[ $ret -eq 0 || $ret -eq 67 || $ret -eq 68 ]] ;then
temp_status="completed"
fi
done
if test $temp_status = "completed" ; then
echo "checksum between master and slave match " >> $LOG_FILE
return 0
elif test $temp_status = "NOTOK" ; then
echo "checksum between master and slave doesn't match" >> $LOG_FILE
return 1
fi
}
function geo_rep_filecount_status()
{
echo "Verifying the sync status through files count" >> $LOG_FILE
local timeout=300
local temp_status="NOTOK"
local comp_arequal="$(dirname $0)/compare-arequal.py"
while [ $timeout -gt 0 ] && [ $temp_status == "NOTOK" ];
do
echo "Waiting for the files to sync ..." >> $LOG_FILE
sleep 20
timeout=`expr $timeout - 20`
echo "calculating and comparing files count between $GMV0 and \
$GSV0 " >> $LOG_FILE
$PYTHON $comp_arequal -c "find" $H0::$GMV0 $H0::$GSV0 >> $LOG_FILE 2>&1
if [ $? -eq 0 ];then
temp_status="completed"
fi
done
if test $temp_status = "completed" ; then
echo "files count between master and slave match " >> $LOG_FILE
return 0
elif test $temp_status = "NOTOK" ; then
echo "files count between master and slave doesn't match" >> $LOG_FILE
return 1
fi
}
function check_status_arequal()
{
# checkpoint is failing to reach even though all the files got synced in the latest build.
# Hence not using checkpoint to check for sync status.
# geo_rep_checkpoint_status
local comp_arequal="$(dirname $0)/compare-arequal.py"
local comp_gfid="$(dirname $0)/compare-gfid.py"
geo_rep_filecount_status
geo_rep_arequal_status
echo "calculating and comparing gfids between $GMV0 and $GSV0 " \
>> $LOG_FILE
$PYTHON $comp_gfid $H0::$GMV0 $H0::$GSV0 >> $LOG_FILE 2>&1
if [ $? != 0 ]; then
return 1
else
echo "gfids between master and slave match" >> $LOG_FILE
fi
echo "calculating and comparing arequal checksum between $GMV0 and $GSV0 " \
>> $LOG_FILE
$PYTHON $comp_arequal $H0::$GMV0 $H0::$GSV0 >> $LOG_FILE 2>&1
local rett=$?
if [[ $rett -eq 0 || $rett -eq 67 || $rett -eq 68 ]] ;then
reta=0
else
reta=1
fi
return $reta
}
function create_data()
{
fop=$1
MNT_PNT=$2
create_data="$(dirname $0)/../utils/create-files.py"
if [ $DIR_STR == "MULTI" ];then
$PYTHON $create_data -n $nf --multi -b 10 -d 10 --random --max=2K \
--min=1K -t $FILE_TYPE --fop=$fop $MNT_PNT >> $LOG_FILE 2>&1
elif [ $DIR_STR == "SINGLE" ];then
$PYTHON $create_data -n $ns --random --max=2K --min=1K -t $FILE_TYPE \
--fop=$fop $MNT_PNT >> $LOG_FILE 2>&1
else
echo "Wrong option for the create-files" >> $LOG_FILE
fi
}
function result()
{
local ret=$1
local test=$2
if [ $ret -ne 0 ]; then
echo -e "\n[ FAIL ] : $test has failed" >> $LOG_FILE
exit 1
else
echo -e "\n[ PASS ] : $test has passed" >> $LOG_FILE
fi
}
## hybrid crawl test-cases
function hybrid_mode_test()
{
local FOP=$1
local MNT_PNT=$2
echo -e "\n:::::::::::::::::::::::" >> $LOG_FILE
echo "Start of hybrid-mode-$DIR_STR-$FILE_TYPE-$FOP-test with \
$MNT_PNT client" >> $LOG_FILE
echo -e ":::::::::::::::::::::::\n" >> $LOG_FILE
local ret=0
echo "stopping geo-rep session before creating data" >> $LOG_FILE
$CLI volume geo-rep $GMV0 $H0::$GSV0 stop force >> $LOG_FILE 2>&1
if [ $? -ne 0 ]; then
echo "stopping geo-rep session has failed" >> $LOG_FILE
return 1
fi
create_data $FOP $MNT_PNT
$CLI volume geo-rep $GMV0 $H0::$GSV0 start >> $LOG_FILE 2>&1
if [ $? -ne 0 ]; then
echo "starting geo-rep session has failed" >> $LOG_FILE
return 1
fi
check_status_arequal
if [ $? -ne 0 ]; then
ret=1
fi
result $ret "hybrid-mode-$DIR_STR-$FILE_TYPE-$FOP-test with $CLIENT client"
return $ret
}
#### Changelog based test-cases
function changelog_mode_test()
{
local FOP=$1
local MNT_PNT=$2
echo -e "\n:::::::::::::::::::::::" >> $LOG_FILE
echo "Start of changelog-mode-$DIR_STR-$FILE_TYPE-$FOP-test with \
$MNT_PNT client" >> $LOG_FILE
echo -e ":::::::::::::::::::::::\n" >> $LOG_FILE
local ret=0
create_data $FOP $MNT_PNT
check_status_arequal
if [ $? -ne 0 ]; then
ret=1
fi
result $ret "basic-changelog-$DIR_STR-$FILE_TYPE-$FOP-test with $CLIENT \
client"
return $ret
}
function changelog_mode_remove_test()
{
MNT_PNT=$1
echo -e "\n:::::::::::::::::::::::" >> $LOG_FILE
echo "Start of changelog-mode-$DIR_STR-$FILE_TYPE-remove-test with \
$MNT_PNT client" >> $LOG_FILE
echo -e ":::::::::::::::::::::::\n" >> $LOG_FILE
local ret=0
if [ ! -z $MNT_PNT ]; then
rm -rvf $MNT_PNT >> $LOG_FILE
else
echo "Value of MNT_PNT is NULL" >> $LOG_FILE
fi
check_status_arequal
if [ $? -ne 0 ]; then
ret=1
fi
result $ret "chnagelog-mode-$DIR_STR-$FILE_TYPE-remove-test with \
$MNT_PNT client"
return $ret
}

View File

@ -0,0 +1,89 @@
#!/bin/bash
. $(dirname $0)/../include.rc
. $(dirname $0)/../volume.rc
. $(dirname $0)/../geo-rep.rc
### Basic Tests with Distribute Replicate volumes
##Cleanup and start glusterd
cleanup;
TEST glusterd;
TEST pidof glusterd
##Variables
GEOREP_CLI="$CLI volume geo-replication"
master=$GMV0
slave=${H0}::${GSV0}
num_active=2
num_passive=2
master_mnt=$M0
slave_mnt=$M1
############################################################
#SETUP VOLUMES AND GEO-REPLICATION
############################################################
##create_and_start_master_volume
TEST $CLI volume create $GMV0 replica 2 $H0:$B0/${GMV0}{1,2,3,4};
TEST $CLI volume start $GMV0
##create_and_start_slave_volume
TEST $CLI volume create $GSV0 replica 2 $H0:$B0/${GSV0}{1,2,3,4}; #5
TEST $CLI volume start $GSV0
##Create, start and mount meta_volume
TEST $CLI volume create $META_VOL replica 3 $H0:$B0/${META_VOL}{1,2,3};
TEST $CLI volume start $META_VOL
TEST mkdir -p $META_MNT
TEST glusterfs -s $H0 --volfile-id $META_VOL $META_MNT #10
##Mount master
TEST glusterfs -s $H0 --volfile-id $GMV0 $M0
##Mount slave
TEST glusterfs -s $H0 --volfile-id $GSV0 $M1
############################################################
#BASIC GEO-REPLICATION TESTS
############################################################
#Check Hybrid Crawl
TEST create_data "hybrid"
TEST create_georep_session $master $slave
EXPECT 4 check_status_num_rows "Created" #15
#Enable_metavolume
TEST $GEOREP_CLI $master $slave config use_meta_volume true
#Start_georep
TEST $GEOREP_CLI $master $slave start
sleep 10
EXPECT 2 check_status_num_rows "Active"
EXPECT 2 check_status_num_rows "Passive"
TEST data_tests "hybrid" #20
#Check History Crawl.
TEST $GEOREP_CLI $master $slave stop
TEST create_data "history"
TEST $GEOREP_CLI $master $slave start
sleep 10
EXPECT 2 check_status_num_rows "Active"
EXPECT 2 check_status_num_rows "Passive" #25
TEST data_tests "history"
#Check History Crawl.
TEST create_data "changelog"
sleep 15
TEST check_status "Changelog Crawl"
TEST data_tests "changelog"
#Stop Geo-rep
TEST $GEOREP_CLI $master $slave stop #30
#Delete Geo-rep
TEST $GEOREP_CLI $master $slave delete
cleanup;

View File

@ -0,0 +1,94 @@
#!/bin/bash
. $(dirname $0)/../include.rc
. $(dirname $0)/../volume.rc
. $(dirname $0)/../geo-rep.rc
#################################################
# BASIC TESTS WITH DISTRIBUTE REPLICATE VOLUMES
#################################################
##Cleanup and start glusterd
cleanup;
TEST glusterd;
TEST pidof glusterd
##Variables
GEOREP_CLI="$CLI volume geo-replication"
master=$GMV0
slave=${H0}::${GSV0}
num_active=2
num_passive=2
master_mnt=$M0
slave_mnt=$M1
############################################################
#SETUP VOLUMES AND GEO-REPLICATION
############################################################
##create_and_start_master_volume
TEST $CLI volume create $GMV0 replica 2 $H0:$B0/${GMV0}{1,2,3,4};
TEST $CLI volume start $GMV0
##create_and_start_slave_volume
TEST $CLI volume create $GSV0 replica 2 $H0:$B0/${GSV0}{1,2,3,4}; #5
TEST $CLI volume start $GSV0
##Create, start and mount meta_volume
TEST $CLI volume create $META_VOL replica 3 $H0:$B0/${META_VOL}{1,2,3};
TEST $CLI volume start $META_VOL
TEST mkdir -p $META_MNT
TEST glusterfs -s $H0 --volfile-id $META_VOL $META_MNT #10
##Mount master
TEST glusterfs -s $H0 --volfile-id $GMV0 $M0
##Mount slave
TEST glusterfs -s $H0 --volfile-id $GSV0 $M1
############################################################
#BASIC GEO-REPLICATION TESTS
############################################################
#Check Hybrid Crawl
TEST create_data "hybrid"
TEST create_georep_session $master $slave
EXPECT 4 check_status_num_rows "Created" #15
#Enable_metavolume
TEST $GEOREP_CLI $master $slave config use_meta_volume true
#Config tarssh as sync-engine
TEST $GEOREP_CLI $master $slave config use_tarssh true
#Start_georep
TEST $GEOREP_CLI $master $slave start
sleep 10
EXPECT 2 check_status_num_rows "Active"
EXPECT 2 check_status_num_rows "Passive" #20
TEST data_tests "hybrid"
#Check History Crawl.
TEST $GEOREP_CLI $master $slave stop
TEST create_data "history"
TEST $GEOREP_CLI $master $slave start
sleep 10
EXPECT 2 check_status_num_rows "Active" #25
EXPECT 2 check_status_num_rows "Passive"
TEST data_tests "history"
#Check History Crawl.
TEST create_data "changelog"
sleep 15
TEST check_status "Changelog Crawl"
TEST data_tests "changelog" #30
#Stop Geo-rep
TEST $GEOREP_CLI $master $slave stop
#Delete Geo-rep
TEST $GEOREP_CLI $master $slave delete
cleanup;

View File

@ -1,73 +0,0 @@
#!/bin/bash
# Following tests involves geo-rep regresseion tests with changelog
# as change detector, and rsync as sync mode on both fuse and nfs mount
. $(dirname $0)/../include.rc
. $(dirname $0)/../volume.rc
. $(dirname $0)/geo-rep-helper.rc
. $(dirname $0)/geo-rep-config.rc
cleanup;
AREQUAL_PATH=$(dirname $0)/../utils
CFLAGS=""
test "`uname -s`" != "Linux" && {
CFLAGS="$CFLAGS -I$(dirname $0)/../../../contrib/argp-standalone ";
CFLAGS="$CFLAGS -L$(dirname $0)/../../../contrib/argp-standalone -largp ";
CFLAGS="$CFLAGS -lintl";
}
build_tester $AREQUAL_PATH/arequal-checksum.c $CFLAGS
TEST glusterd
TEST pidof glusterd
setup_georep ;
# start of tests on fuse mount
TEST glusterfs -s $H0 --volfile-id $GMV0 $M0
TEST changelog_mode_test "create" $M0
TEST changelog_mode_test "chmod" $M0
TEST changelog_mode_test "chown" $M0
TEST changelog_mode_test "chgrp" $M0
# Bug 1083963
#TEST changelog_mode_test "rename" $M0
TEST changelog_mode_test "truncate" $M0
TEST changelog_mode_test "symlink" $M0
# Bug 1003020
#TEST changelog_mode_test "hardlink" $M0
#TEST changelog_mode_remove_test $M0
# start of tests on nfs mount
TEST mount -t nfs -o vers=3,nolock $H0:$GMV0 $N0
TEST changelog_mode_test "create" $N0
TEST changelog_mode_test "chmod" $N0
TEST changelog_mode_test "chown" $N0
TEST changelog_mode_test "chgrp" $N0
#TEST changelog_mode_test "rename" $N0
TEST changelog_mode_test "truncate" $N0
TEST changelog_mode_test "symlink" $N0
#TEST changelog_mode_test "hardlink" $N0
#TEST changelog_mode_remove_test $N0
TEST rm -rf $AREQUAL_PATH/arequal-checksum
cleanup_georep;

View File

@ -1,65 +0,0 @@
#!/bin/bash
# Following tests involves geo-rep tests with hybrid crawl
# as change detector, and rsync as sync mode on both fuse and nfs mount
. $(dirname $0)/../include.rc
. $(dirname $0)/../volume.rc
. $(dirname $0)/geo-rep-helper.rc
. $(dirname $0)/geo-rep-config.rc
cleanup;
AREQUAL_PATH=$(dirname $0)/../utils
CFLAGS=""
test "`uname -s`" != "Linux" && {
CFLAGS="$CFLAGS -I$(dirname $0)/../../../contrib/argp-standalone ";
CFLAGS="$CFLAGS -L$(dirname $0)/../../../contrib/argp-standalone -largp ";
CFLAGS="$CFLAGS -lintl";
}
build_tester $AREQUAL_PATH/arequal-checksum.c $CFLAGS
TEST glusterd
TEST pidof glusterd
setup_georep ;
# start of tests on fuse mount
TEST glusterfs -s $H0 --volfile-id $GMV0 $M0
TEST hybrid_mode_test "create" $M0
TEST hybrid_mode_test "chmod" $M0
TEST hybrid_mode_test "chown" $M0
TEST hybrid_mode_test "chgrp" $M0
TEST hybrid_mode_test "truncate" $M0
TEST hybrid_mode_test "symlink" $M0
#TEST hybrid_mode_test "hardlink" $M0
# start of tests on nfs mount
TEST mount -t nfs -o vers=3,nolock $H0:$GMV0 $N0
TEST hybrid_mode_test "create" $N0
TEST hybrid_mode_test "chmod" $N0
TEST hybrid_mode_test "chown" $N0
TEST hybrid_mode_test "chgrp" $N0
TEST hybrid_mode_test "truncate" $N0
TEST hybrid_mode_test "symlink" $N0
#TEST hybrid_mode_test "hardlink" $N0
TEST rm -rf $AREQUAL_PATH/arequal-checksum
cleanup_georep;

View File

@ -1,33 +0,0 @@
#!/bin/bash
. $(dirname $0)/../include.rc
. $(dirname $0)/../volume.rc
cleanup;
TEST glusterd
TEST pidof glusterd
TEST $CLI volume create $GMV0 replica 2 $H0:$B0/${GMV0}{1,2,3,4};
TEST $CLI volume start $GMV0
TEST $CLI volume create $GSV0 replica 2 $H0:$B0/${GSV0}{1,2,3,4};
TEST $CLI volume start $GSV0
TEST $CLI system:: execute gsec_create
TEST $CLI volume geo-rep $GMV0 $H0::$GSV0 create push-pem
TEST $CLI volume geo-rep $GMV0 $H0::$GSV0 start
sleep 80 # after start geo-rep takes a minute to get stable
TEST ! "$CLI volume geo-rep $GMV0 $H0::$GSV0 status | egrep -i 'faulty'"
TEST "$CLI volume geo-rep $GMV0 $H0::$GSV0 status | egrep -i 'Changelog crawl'"
TEST $CLI volume geo-rep $GMV0 $H0::$GSV0 stop
TEST $CLI volume geo-rep $GMV0 $H0::$GSV0 delete

View File

@ -1,73 +0,0 @@
#!/bin/bash
# Following tests involves geo-rep regresseion tests with changelog
# as change detector, and rsync as sync mode on both fuse and nfs mount
. $(dirname $0)/../include.rc
. $(dirname $0)/../volume.rc
. $(dirname $0)/geo-rep-helper.rc
. $(dirname $0)/geo-rep-config.rc
cleanup;
AREQUAL_PATH=$(dirname $0)/../utils
CFLAGS=""
test "`uname -s`" != "Linux" && {
CFLAGS="$CFLAGS -I$(dirname $0)/../../../contrib/argp-standalone ";
CFLAGS="$CFLAGS -L$(dirname $0)/../../../contrib/argp-standalone -largp ";
CFLAGS="$CFLAGS -lintl";
}
build_tester $AREQUAL_PATH/arequal-checksum.c $CFLAGS
TEST glusterd
TEST pidof glusterd
setup_georep ;
# start of tests on fuse mount
TEST glusterfs -s $H0 --volfile-id $GMV0 $M0
TEST changelog_mode_test "create" $M0
TEST changelog_mode_test "chmod" $M0
TEST changelog_mode_test "chown" $M0
TEST changelog_mode_test "chgrp" $M0
#TEST changelog_mode_test "rename" $M0
TEST changelog_mode_test "truncate" $M0
TEST changelog_mode_test "symlink" $M0
#TEST changelog_mode_test "hardlink" $M0
#TEST changelog_mode_remove_test $M0
# start of tests on nfs mount
TEST mount -t nfs -o vers=3,nolock $H0:$GMV0 $N0
TEST changelog_mode_test "create" $N0
TEST changelog_mode_test "chmod" $N0
TEST changelog_mode_test "chown" $N0
TEST changelog_mode_test "chgrp" $N0
#TEST changelog_mode_test "rename" $N0
TEST changelog_mode_test "truncate" $N0
TEST changelog_mode_test "symlink" $N0
#TEST changelog_mode_test "hardlink" $N0
#TEST changelog_mode_remove_test $N0
TEST rm -rf $AREQUAL_PATH/arequal-checksum
cleanup_georep;

View File

@ -1,65 +0,0 @@
#!/bin/bash
# Following tests involves geo-rep tests with hybrid crawl
# as change detector, and rsync as sync mode on both fuse and nfs mount
. $(dirname $0)/../include.rc
. $(dirname $0)/../volume.rc
. $(dirname $0)/geo-rep-helper.rc
. $(dirname $0)/geo-rep-config.rc
cleanup;
AREQUAL_PATH=$(dirname $0)/../utils
CFLAGS=""
test "`uname -s`" != "Linux" && {
CFLAGS="$CFLAGS -I$(dirname $0)/../../../contrib/argp-standalone ";
CFLAGS="$CFLAGS -L$(dirname $0)/../../../contrib/argp-standalone -largp ";
CFLAGS="$CFLAGS -lintl";
}
build_tester $AREQUAL_PATH/arequal-checksum.c $CFLAGS
TEST glusterd
TEST pidof glusterd
setup_georep ;
# start of tests on fuse mount
TEST glusterfs -s $H0 --volfile-id $GMV0 $M0
TEST hybrid_mode_test "create" $M0
TEST hybrid_mode_test "chmod" $M0
TEST hybrid_mode_test "chown" $M0
TEST hybrid_mode_test "chgrp" $M0
TEST hybrid_mode_test "truncate" $M0
TEST hybrid_mode_test "symlink" $M0
#TEST hybrid_mode_test "hardlink" $M0
# start of tests on nfs mount
TEST mount -t nfs -o vers=3,nolock $H0:$GMV0 $N0
TEST hybrid_mode_test "create" $N0
TEST hybrid_mode_test "chmod" $N0
TEST hybrid_mode_test "chown" $N0
TEST hybrid_mode_test "chgrp" $N0
TEST hybrid_mode_test "truncate" $N0
TEST hybrid_mode_test "symlink" $N0
#TEST hybrid_mode_test "hardlink" $N0
TEST rm -rf $AREQUAL_PATH/arequal-checksum
cleanup_georep;

View File

@ -9,6 +9,10 @@ GMV0=${GMV0:=master}; # master volume name to use in geo-rep tests
GSV0=${GSV0:=slave}; # slave volume name to use in geo-rep tests
B0=${B0:=/d/backends}; # top level of brick directories
WORKDIRS="$B0 $M0 $M1 $M2 $N0 $N1"
META_VOL=${META_VOL:=gluster_shared_storage}; # shared gluster storage volume used by snapshot scheduler, nfs ganesha and geo-rep.
META_MNT=${META_MNT:=/var/run/gluster/shared_storage}; # Mount point of shared gluster volume.
CC=cc
OSTYPE=$(uname -s)