#!/bin/sh
DIR_PATH=$(cd `dirname $0`;pwd)
code_path=$(cd ${DIR_PATH}/../../;pwd)
regress_path=${code_path}/pkg/test/og_regress
script_path=${code_path}/CI/script
mkdir /home/ogracdba/tmp -p
tmp_file_path=/home/ogracdba/tmp
report_file=$tmp_file_path/regress.log
rm -rf $tmp_file_path/*
BASHRC_ORIGIN_NUM=$(sed -n '$=' /home/ogracdba/.bashrc)
echo export OGDB_HOME=/home/ogracdb/install >> /home/ogracdba/.bashrc
echo export OGDB_HOME_1=/home/ogracdb1/install >> /home/ogracdba/.bashrc
echo export sys_user_passwd='mHmNxBvw7Uu7LtSvrUIy8NY9womwIuJG9vAlMl0+zNifU7x5TnIz5UOqmkozbTyW' >> /home/ogracdba/.bashrc
echo export OGSQL_SSL_QUIET=TRUE >> /home/ogracdba/.bashrc
export OGDB_HOME=/home/ogracdb/install
export OGDB_HOME_1=/home/ogracdb1/install
PORT=`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:" |head -n 1`
echo export PORT=${PORT} >> /home/ogracdba/.bashrc
collect_core()
{
BASHRC_AFTER_NUM=$(sed -n '$=' /home/ogracdba/.bashrc)
sed $(($BASHRC_ORIGIN_NUM+1)),${BASHRC_AFTER_NUM}d -i /home/ogracdba/.bashrc
files=/home/core/ogracDB_`date +%Y-%m-%d-%H-%M-%S`
mkdir -p ${files}
mkdir -p ${files}/ogracdb0
mkdir -p ${files}/ogracdb1
cp -r ${OGDB_HOME}/add-ons ${files}/ogracdb0
cp -r ${OGDB_HOME}/bin ${files}/ogracdb0
cp -r ${OGDB_HOME}/cfg ${files}/ogracdb0
cp -r ${OGDB_HOME}/lib ${files}/ogracdb0
cp -r ${OGDB_HOME}/log ${files}/ogracdb0
cp -r ${OGDB_HOME}/cfg ${files}/ogracdb1
cp -r ${OGDB_HOME_1}/log ${files}/ogracdb1
cp /home/ogsql.log ${files}/
cp ${report_file} ${files}/
tar -zcf ${files}.tar.gz ${files}
mv ${files}.tar.gz ${files}.tar.gz.log
mkdir -p /home/regress/ograc/build_test/logs/
ls -l /home/core
cp -r /home/core/* /home/regress/ograc/build_test/logs/
ls -l /home/regress/ograc/build_test/logs/
}
log()
{
echo
echo
echo $1
}
kill_ogracdb()
{
ps -ef |grep ogracd |grep -v grep |awk '{print $2}' |xargs kill -9
sleep 2
ps -ef |grep cms |grep -v grep |awk '{print $2}' |xargs kill -9
sleep 2
}
init_and_start_cms1()
{
rm -rf /home/cms
mkdir -p /home/cms
dd if=/dev/zero of=/home/cms/gcc_file bs=100M count=1
export CMS_HOME=${OGDB_HOME}
echo export CMS_HOME=${OGDB_HOME} >> /home/ogracdba/.bashrc
rm -rf ${CMS_HOME}/cfg/cms.ini
echo NODE_ID = 0 >> ${CMS_HOME}/cfg/cms.ini
echo GCC_HOME = /home/cms/gcc_file >> ${CMS_HOME}/cfg/cms.ini
echo GCC_TYPE = FILE >> ${CMS_HOME}/cfg/cms.ini
echo _IP = 127.0.0.1 >> ${CMS_HOME}/cfg/cms.ini
echo _PORT = 1720 >> ${CMS_HOME}/cfg/cms.ini
echo _DISK_DETECT_FILE = gcc_file >> ${CMS_HOME}/cfg/cms.ini
chmod -R 777 /home/cms/
chown -R ogracdba:ogracdba /home/cms/
chmod -R 777 ${CMS_HOME}/
chown -R ogracdba:ogracdba ${CMS_HOME}/
su - ogracdba -c 'cms gcc -reset -f' >> $report_file
su - ogracdba -c 'cms node -add 0 node0 127.0.0.1 1720' >> $report_file
su - ogracdba -c 'cms node -add 1 node1 127.0.0.1 1721' >> $report_file
su - ogracdba -c 'cms res -add db -type db -attr "check_timeout=10"'>> $report_file
su - ogracdba -c 'cms node -list' >> $report_file
su - ogracdba -c 'cms res -list' >> $report_file
echo "start to start cms 1"
nohup su - ogracdba -c 'cms server -start' >> $report_file 2>&1 &
}
init_and_start_cms2()
{
export CMS_HOME=${OGDB_HOME_1}
rm -rf ${CMS_HOME}/cfg/cms.ini
echo NODE_ID = 1 >> ${CMS_HOME}/cfg/cms.ini
echo GCC_HOME = /home/cms/gcc_file >> ${CMS_HOME}/cfg/cms.ini
echo GCC_TYPE = FILE >> ${CMS_HOME}/cfg/cms.ini
echo _IP = 127.0.0.1 >> ${CMS_HOME}/cfg/cms.ini
echo _PORT = 1721 >> ${CMS_HOME}/cfg/cms.ini
echo _DISK_DETECT_FILE = gcc_file >> ${CMS_HOME}/cfg/cms.ini
chmod -R 777 ${CMS_HOME}/
chown -R ogracdba:ogracdba ${CMS_HOME}/
echo "start to start cms 2"
nohup su - ogracdba -c 'cms server -start' >> $report_file 2>&1 &
}
init_og_regress()
{
log "=============== Initialize the Regression Program =============="
kill_ogracdb
rm -rf ${OGDB_HOME}
mkdir -p ${OGDB_HOME}/data
mkdir -p ${OGDB_HOME}/cfg
mkdir -p ${OGDB_HOME}/log
mkdir -p ${OGDB_HOME}/protect
chmod 755 ${OGDB_HOME} -R
echo JOB_QUEUE_PROCESSES = 0 >> ${OGDB_HOME}/cfg/ogracd.ini
echo STATS_LEVEL = BASIC >> ${OGDB_HOME}/cfg/ogracd.ini
echo CLUSTER_DATABASE = TRUE >> ${OGDB_HOME}/cfg/ogracd.ini
echo "INTERCONNECT_ADDR = 127.0.0.1;${PORT}" >> ${OGDB_HOME}/cfg/ogracd.ini
echo INTERCONNECT_PORT = 1601,1602 >> ${OGDB_HOME}/cfg/ogracd.ini
echo INTERCONNECT_TYPE = TCP >> ${OGDB_HOME}/cfg/ogracd.ini
echo INSTANCE_ID = 0 >> ${OGDB_HOME}/cfg/ogracd.ini
echo MES_POOL_SIZE = 16384 >> ${OGDB_HOME}/cfg/ogracd.ini
echo LSNR_ADDR = 127.0.0.1 >> ${OGDB_HOME}/cfg/ogracd.ini
echo LSNR_PORT = 1611 >> ${OGDB_HOME}/cfg/ogracd.ini
echo _LOG_LEVEL = 16712567 >> ${OGDB_HOME}/cfg/ogracd.ini
echo USE_NATIVE_DATATYPE = TRUE >> ${OGDB_HOME}/cfg/ogracd.ini
echo _SYS_PASSWORD = pkAqfAUA0AdWc/O/W13ODhC9+5o+V1fWhXHm1kGv7z79S/GQyydsJFnLix8jBrY43bdNMsPJmYfwziCSpxgASC3Hi+3eq+C4lsCxy5dDimVWGWTGNfwpfA== >> ${OGDB_HOME}/cfg/ogracd.ini
rm -rf ${OGDB_HOME_1}
mkdir -p ${OGDB_HOME_1}/cfg
mkdir -p ${OGDB_HOME_1}/log
mkdir -p ${OGDB_HOME_1}/protect
chmod 755 ${OGDB_HOME_1} -R
echo JOB_QUEUE_PROCESSES = 0 >> ${OGDB_HOME_1}/cfg/ogracd.ini
echo STATS_LEVEL = BASIC >> ${OGDB_HOME_1}/cfg/ogracd.ini
echo CLUSTER_DATABASE = TRUE >> ${OGDB_HOME_1}/cfg/ogracd.ini
echo "INTERCONNECT_ADDR = 127.0.0.1;${PORT}" >> ${OGDB_HOME_1}/cfg/ogracd.ini
echo INTERCONNECT_PORT = 1601,1602 >> ${OGDB_HOME_1}/cfg/ogracd.ini
echo INTERCONNECT_TYPE = TCP >> ${OGDB_HOME_1}/cfg/ogracd.ini
echo INSTANCE_ID = 1 >> ${OGDB_HOME_1}/cfg/ogracd.ini
echo MES_POOL_SIZE = 16384 >> ${OGDB_HOME_1}/cfg/ogracd.ini
echo LSNR_ADDR = ${PORT} >> ${OGDB_HOME_1}/cfg/ogracd.ini
echo LSNR_PORT = 1612 >> ${OGDB_HOME_1}/cfg/ogracd.ini
echo _LOG_LEVEL = 16712567 >> ${OGDB_HOME_1}/cfg/ogracd.ini
echo USE_NATIVE_DATATYPE = TRUE >> ${OGDB_HOME_1}/cfg/ogracd.ini
echo _SYS_PASSWORD = pkAqfAUA0AdWc/O/W13ODhC9+5o+V1fWhXHm1kGv7z79S/GQyydsJFnLix8jBrY43bdNMsPJmYfwziCSpxgASC3Hi+3eq+C4lsCxy5dDimVWGWTGNfwpfA== >> ${OGDB_HOME_1}/cfg/ogracd.ini
echo CONTROL_FILES = ${OGDB_HOME}/data/ctrl1, ${OGDB_HOME}/data/ctrl2, ${OGDB_HOME}/data/ctrl3 >> ${OGDB_HOME_1}/cfg/ogracd.ini
}
make_code()
{
log "==================== Begin Rebuild ogracKernel ================="
lcov_build_flag=""
if [ "${LCOV_ENABLE}" = TRUE ]
then
lcov_build_flag="lcov=1"
fi
cd ${code_path}/build
sh Makefile.sh clean
sh Makefile.sh make_regress_test ${lcov_build_flag}
if [ "$?" != "0" ]; then
error "make package error!"
fi
cd ${code_path}/build
source ./common.sh
cd ${code_path}/build/pkg/test/cluster_test
strip -N main ${OGRACDB_LIB}/libogserver.a
make -sj 8
if [ "$?" != "0" ]; then
echo "make test error!"
exit 1
fi
chown -R ogracdba:ogracdba ${code_path}/build/pkg/
}
cp_ograc_add_ons()
{
mkdir -p $1/add-ons
cp -d ${code_path}/library/pcre/lib/libpcre2-8.so* $1/add-ons/
cp -d ${code_path}/library/zlib/lib/libz.so* $1/add-ons/
cp -d ${code_path}/library/Zstandard/lib/libzstd.so* $1/add-ons/
}
cp_ograc_bin()
{
echo "################ cp_ograc_bin #######################"
mkdir -p $1/bin
cp ${code_path}/output/bin/ogracd $1/bin/
cp ${code_path}/output/bin/cms $1/bin/
cp ${code_path}/output/bin/ogbackup $1/bin/
cp ${code_path}/output/bin/ogsql $1/bin/
cp ${code_path}/output/bin/ogbox $1/bin/
cp ${code_path}/output/bin/ogencrypt $1/bin/
cp ${code_path}/library/Zstandard/bin/zstd $1/bin/
cp ${code_path}/pkg/install/installdb.sh $1/bin/
cp ${code_path}/pkg/install/shutdowndb.sh $1/bin/
cp ${code_path}/pkg/install/uninstall.py $1/bin/
cp ${code_path}/pkg/install/script/cluster/cluster.sh $1/bin/
}
cp_ograc_lib()
{
mkdir -p $1/lib
cp ${code_path}/output/lib/libogclient.so $1/lib/
cp ${code_path}/output/lib/libogcommon.so $1/lib/
cp ${code_path}/output/lib/libogprotocol.so $1/lib/
}
install_ogracdb()
{
log "========================= Install ogracDB ======================="
echo "################ copy new lib #######################"
if [ ! -d ${OGDB_HOME} ];then
mkdir -p ${OGDB_HOME}
fi
rm -rf ${OGDB_HOME}/add-ons
rm -rf ${OGDB_HOME}/bin
rm -rf ${OGDB_HOME}/lib
rm -rf ${OGDB_HOME}/admin
cp_ograc_add_ons /home/ogracdb/install
cp_ograc_bin /home/ogracdb/install
cp_ograc_lib /home/ogracdb/install
cp -R ${code_path}/pkg/admin ${OGDB_HOME}/
echo export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${OGDB_HOME}/add-ons/nomlnx:${OGDB_HOME}/add-ons:${OGDB_HOME}/lib >> /home/ogracdba/.bashrc
echo export PATH=${OGDB_HOME}/bin:$PATH >> /home/ogracdba/.bashrc
if [ ! -d ${OGDB_HOME_1} ];then
mkdir -p ${OGDB_HOME_1}
fi
rm -rf ${OGDB_HOME_1}/add-ons
rm -rf ${OGDB_HOME_1}/bin
rm -rf ${OGDB_HOME_1}/lib
rm -rf ${OGDB_HOME_1}/admin
cp_ograc_add_ons /home/ogracdb1/install
cp_ograc_bin /home/ogracdb1/install
cp_ograc_lib /home/ogracdb1/install
cp -R ${code_path}/pkg/admin ${OGDB_HOME_1}/
chmod -R 777 ${OGDB_HOME}/
chown -R ogracdba:ogracdba ${OGDB_HOME}/
chmod -R 777 ${OGDB_HOME_1}/
chown -R ogracdba:ogracdba ${OGDB_HOME_1}/
echo "copy linux lib complate!!"
echo "start to init cms 1"
init_and_start_cms1
echo "Start ogracd with nomount:"
echo export CMS_HOME=${OGDB_HOME} >> /home/ogracdba/.bashrc
nohup su - ogracdba -c 'ogracd nomount -D ${OGDB_HOME}' >> $report_file 2>&1 &
pid=`ps ux | grep ogracd |grep -v grep |awk '{print $2}'`
echo "ogracd pid=$pid"
sleep 10
rm -rf /home/ogsql.log
echo "create database ..."
chmod -R 777 ${code_path}/CI/build/script/init.sql
chown -R ogracdba:ogracdba ${code_path}/CI/build/script/init.sql
su - ogracdba -c "ogsql sys/sys@127.0.0.1:1611 -q -f ${code_path}/CI/build/script/init.sql" >> /home/ogsql.log
echo "start ogracd node1"
sleep 60
echo export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${OGDB_HOME_1}/add-ons/nomlnx:${OGDB_HOME_1}/add-ons:${OGDB_HOME_1}/lib >> /home/ogracdba/.bashrc
echo export PATH=${OGDB_HOME_1}/bin:$PATH >> /home/ogracdba/.bashrc
echo "start to init cms 2"
init_and_start_cms2
export CMS_HOME=${OGDB_HOME_1}
echo export CMS_HOME=${OGDB_HOME_1} >> /home/ogracdba/.bashrc
su - ogracdba -c 'ogracd -h' 2>&1
su - ogracdba -c 'ogracd -v' 2>&1
nohup su - ogracdba -c 'ogracd -D ${OGDB_HOME_1}' >> $report_file 2>&1 &
sleep 20
pid1=`ps ux | grep ogracd |grep -v grep |awk '{print $2}'`
echo "ogracd pid1=$pid1"
sleep 10
echo "create new user"
su - ogracdba -c 'ogsql sys/sys@127.0.0.1:1611 -c "create user cluster_tester identified by database_123;" ' >> /home/ogsql.log
su - ogracdba -c 'ogsql sys/sys@127.0.0.1:1611 -c "grant dba to cluster_tester;" ' >> /home/ogsql.log
su - ogracdba -c 'ogsql sys/sys@127.0.0.1:1611 -c "grant all privileges to cluster_tester;" ' >> /home/ogsql.log
su - ogracdba -c 'ogsql sys/sys@127.0.0.1:1611 -c "grant unlimited tablespace to cluster_tester;" ' >> /home/ogsql.log
error_num=`cat /home/ogsql.log |grep 'Succeed.'|wc -l`
if [ $error_num -eq 0 ];then
echo "Error: create database failed"
collect_core
exit 1
fi
sleep 2
echo "copy linux lib complate!!"
}
run_ogbox_test()
{
su - ogracdba -c "ogbox -T cminer -c ${code_path}/ogbox_test/ctrl_test -F -D -C"
su - ogracdba -c "ogbox -T cminer -f ${code_path}/ogbox_test/page_test -F -D -C"
su - ogracdba -c "ogbox -T cminer -l ${code_path}/ogbox_test/redo_test -F -D -C"
su - ogracdba -c "echo -e 'y' | ogbox -T crepair -k ${code_path}/ogbox_test/dataObj -c storage.redo[1].logfiles[9].block_size=5120" || true
echo
su - ogracdba -c "echo -e 'y' | ogbox -T crepair -k ${code_path}/ogbox_test/dataObj -c storage.node[0].rcy_point=0-0-0-0-0" || true
echo
su - ogracdba -c "echo -e 'y' | ogbox -T crepair -k ${code_path}/ogbox_test/dataObj -c storage.node[1].lrp_point=0-0-0-0-0" || true
echo
su - ogracdba -c "echo -e 'y' | ogbox -T crepair -k ${code_path}/ogbox_test/dataObj -c storage.spaces[9].spaceid=1" || true
echo
su - ogracdba -c "echo -e 'y' | ogbox -T crepair -k ${code_path}/ogbox_test/dataObj -c storage.datafiles[9].dfileid=1" || true
echo
su - ogracdba -c "echo -e 'y' | ogbox -T crepair -k ${code_path}/ogbox_test/dataObj -c storage.redo[1].archive[9].first=1" || true
echo
su - ogracdba -c "echo -e 'y' | ogbox -T crepair -k ${code_path}/ogbox_test/dataObj -c storage.redo[1].logfiles[9].block_size=1" || true
echo
su - ogracdba -c "echo -e 'y' | ogbox -T crepair -k ${code_path}/ogbox_test/dataObj -c storage.node[0].raft_point=0" || true
echo
su - ogracdba -c "echo -e 'y' | ogbox -T crepair -k ${code_path}/ogbox_test/dataObj -c storage.redo[6].logfiles[9].block_size=1" || true
echo
su - ogracdba -c "echo -e 'y' | ogbox -T crepair -k ${code_path}/ogbox_test/dataObj -c storage.redo[1].archive[10250].first=1" || true
echo
su - ogracdba -c "echo -e 'y' | ogbox -T crepair -k ${code_path}/ogbox_test/dataObj -c storage.redo[1].logfiles[257].block_size=1" || true
echo
su - ogracdba -c "echo -e 'y' | ogbox -T crepair -k ${code_path}/ogbox_test/dataObj -c storage.redo[1].datefiles[257].block_size=1" || true
echo
su - ogracdba -c "echo -e 'y' | ogbox -T crepair -k ${code_path}/ogbox_test/dataObj -c storage.node[6].rcy_point=0-0-0-0-0" || true
echo
su - ogracdba -c "echo -e 'y' | ogbox -T crepair -k ${code_path}/ogbox_test/dataObj -c storage.spaces[1025].spaceid=1" || true
echo
su - ogracdba -c "echo -e 'y' | ogbox -T crepair -k ${code_path}/ogbox_test/dataObj -c storage.datafiles[1025].dfileid=1" || true
echo
}
run_cluster_test()
{
log "========================= Run Cluster Test ======================="
echo `pwd`
chown -R ogracdba:ogracdba ${code_path}/output/bin/cluster_test
chmod -R 777 ${code_path}/output/bin/cluster_test
su - ogracdba -c "${code_path}/output/bin/cluster_test '127.0.0.1:1611' ${PORT}':1612' $1" 2>&1 | tee -a $report_file
test_num=`cat $report_file | grep '\--------------------- TEST_CASE' | wc -l`
succ_num=`cat $report_file | grep '\--------------------- FINISHED ---------------------' | wc -l`
BASHRC_AFTER_NUM=$(sed -n '$=' /home/ogracdba/.bashrc)
if [ $succ_num -ne $test_num ];then
echo "something wrong when cluster_test!"
echo "something wrong when cluster_test!" >> $report_file 2>&1
collect_core
exit 1
fi
sed $(($BASHRC_ORIGIN_NUM+1)),${BASHRC_AFTER_NUM}d -i /home/ogracdba/.bashrc
echo "success finish cluster_test!"
}
gen_lcov_report()
{
if [[ ! -d "${code_path}/lcov_output" ]]
then
mkdir -p ${code_path}/lcov_output
fi
coverage_info_name="${code_path}/lcov_output/cluster_test_coverage.info"
coverage_report_name="${code_path}/lcov_output/cluster_test_coverage.report"
find ${code_path}/ -name "*.gcno" | xargs touch
lcov --capture --directory ${code_path}/ --rc lcov_branch_coverage=1 --output-file "${coverage_info_name}"
lcov -l --rc lcov_branch_coverage=1 "${coverage_info_name}" > "${coverage_report_name}"
lcov -d ./ -z
log ">>>>>>>>>>>>>>>>>>>>> Lcov report successfully <<<<<<<<<<<<<<<<<<<<<<<<<<<"
}
main()
{
LCOV_ENABLE=FALSE
test_list=-1
for arg in "$@"
do
echo "arg is ${arg}"
if [ ${arg} = "--coverage" ]
then
echo "Enable coverage detection."
LCOV_ENABLE=TRUE
fi
if [ ${arg} = "test_list_0" ]
then
echo "Enable coverage detection."
test_list=0
fi
if [ ${arg} = "test_list_1" ]
then
echo "Enable coverage detection."
test_list=1
fi
done
echo "test_list is ${test_list}"
init_og_regress
make_code
install_ogracdb
run_cluster_test ${test_list}
if [ "${LCOV_ENABLE}" = TRUE ]
then
gen_lcov_report
fi
}
main "$@"