blob: 04101d0f6d24316b9b415b37565b6259c76e3554 [file] [log] [blame]
#!/bin/bash -e
source /usr/local/hawq/greenplum_path.sh
TEST_DB_NAME="hawq_feature_test_db"
export PGDATABASE=$TEST_DB_NAME
function check_feature_test_data
{
if [ ! -f src/test/feature/query/data/test_insert_groupby.data ] || [ ! -d src/test/feature/query/data/joindata ];then
echo -e '
\033[01;32m
###############################################################################
Note:
Please download data from
https://s3.cn-north-1.amazonaws.com.cn/perfdata/generateddata/datatype.tar.gz
1. login in to https://console.amazonaws.cn/s3/home?region=cn-north-1# and it can not directly download from link.
2. Found datatype data from perfdata/generateddata/datatype.tar.gz
Found join data from perfdata/generateddata/joindata.tar.gz
And put the "*.data" files into
./src/test/feature/query/data/
using
"tar -xvf ~/Downloads/datatype.tar.gz -C ./src/test/feature/query/data/"
"tar -xvf ~/Downloads/joindata.tar.gz -C ./src/test/feature/query/data/"
You would not receive this NOTE again once you did what mention above.
###############################################################################
\033[00m'
exit 1
fi
}
function initTestDB()
{
echo "Init Test Database ..."
psql -d postgres -c "drop database if exists $TEST_DB_NAME;"
psql -d postgres -c "create database $TEST_DB_NAME;"
psql -c "alter database $TEST_DB_NAME set lc_messages to 'C';"
psql -c "alter database $TEST_DB_NAME set lc_monetary to 'C';"
psql -c "alter database $TEST_DB_NAME set lc_numeric to 'C';"
psql -c "alter database $TEST_DB_NAME set lc_time to 'C';"
psql -c "alter database $TEST_DB_NAME set timezone_abbreviations to 'Default';"
psql -c "alter database $TEST_DB_NAME set timezone to 'PST8PDT';"
psql -c "alter database $TEST_DB_NAME set datestyle to 'postgres,MDY';"
echo "Done."
}
function printf_usage ()
{
echo -e "Usage: ./sanity-test.sh [-i] [-c] [-t <orctiny/orcsanity/orcall/magmatiny/magmasanity/magmaall>] [-s <'serial case'>] [-p <'parallel case'>]"
}
function printf_help ()
{
printf_usage
echo
echo -e " -c\t Make feature test clean"
echo -e " -i\t Init test db, Note: it only drop database and recreate database not reinitialize hawq cluster"
echo -e " -t\t orctiny/orcsanity/orcall/magmatiny/magmasanity/magmaall/magmaaptiny/magmaapsanity/magmaapall/user if not specified, magmatiny is default"
echo -e " -s\t Feature test serial case. It can be used together with -s option"
echo -e " -p\t Feature test parallel case. It can be used togher with -p option"
echo -e " -h\t Print help"
}
function compile_featuretest()
{
echo "Clean feature-test ..."
if [[ $cleanfeature == "true" ]]; then
make feature-test-clean
echo "Done."
fi
echo "Build feature-test ..."
make -j8 feature-test
echo "Done."
}
function clean_and_check_test()
{
rm -rf src/test/feature/testresult
check_feature_test_data
echo "Check Hdfs/python/GPHOME command ..."
command -v hdfs >/dev/null 2>&1 || { echo >&2 "Need to add hdfs command in PATH"; exit 1; }
command -v python >/dev/null 2>&1 || { echo >&2 "Need to add python command in PATH"; exit 1; }
: ${GPHOME?"Need to source greenplum_path.sh"}
echo "Done."
if [[ $inittestdb == "true" ]]; then
initTestDB
fi
}
DIR="$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
PREFIX="/opt/dependency"
#source $PREFIX/env.sh
export DEPENDENCY_PATH=$PREFIX/package
serial_case1=""
serial_case2=""
parallel_case1="TestExtMagma.TestMagmaAP*:TestSelectQuery.TestMagmaAP*"
parallel_case2=""
inittestdb=false
cleanfeature=false
while getopts s:p:t:cih opt
do
case "$opt" in
s)
serial_case2=$OPTARG
;;
p)
parallel_case2=$OPTARG
;;
i)
inittestdb=true
;;
c)
cleanfeature=true
;;
h)
printf_help
exit 0
;;
t)
echo "param"
echo "$OPTARG"
case $OPTARG in
"user" )
serial_case1=""
parallel_case1=""
;;
"orctiny" )
serial_case1=""
parallel_case1="TestNewExecutor.*:-*Magma*"
;;
"orcsanity" )
serial_case1="TestTPCH.TestORC_NewQE_Hash"
parallel_case1="TestNewExecutor.*:TestExtOrc.*:TestSelectQuery.*ORC:TestOlapQuery.*ORC:TestQueryPrepare.*ORC:TestSlice.*ORC"
;;
"orcall" )
serial_case1="TestTPCH.TestORC_NewQE_Partition:TestTPCH.TestORC_OldQE"
parallel_case1="TestNewExecutor.*:TestExtOrc.*:TestSelectQuery.*ORC:TestOlapQuery.*ORC:TestQueryPrepare.*ORC:TestSlice.*ORC"
;;
"magmatiny" )
serial_case1=""
parallel_case1="TestExtMagma.TestMagmaTP*:TestSelectQuery.TestMagmaTP*:TestNewExecutor.TestMagmaTP*"
;;
"magmasanity" )
serial_case1="TestTPCH.TestMagmaTP"
parallel_case1="TestExternalDataType.TestMagmaTP*"
;;
"magmaall" )
serial_case1="TestTPCH.TestMagmaTPPartition:TestTPCH.TestMagmaTP_PK:TestTransaction.TestMagmaTP*"
parallel_case1="*.TestMagmaTP*:-TestTransaction*.*:TestMagmaQuitQuery.*:TestTPCH.*:TestMagmaFault.*"
;;
"magmaaptiny" )
serial_case1=""
parallel_case1="TestExtMagma.TestMagmaAP*:TestSelectQuery.TestMagmaAP*"
;;
"magmaapsanity" )
serial_case1="TestTPCH.TestMagmaAP"
parallel_case1="TestExternalDataType.TestMagmaAP*"
;;
"magmaapall" )
serial_case1="TestTPCH.TestMagmaAP:TestTransaction.TestMagmaAP*"
parallel_case1="*.TestMagmaAP*:-TestTransaction*.*:TestMagmaQuitQuery.*:TestTPCH.*:TestMagmaFault.*"
;;
*)
echo "It should be orctiny/orcsanity/orcall/magmatiny/magmasanity/magmaall"
exit
esac
;;
*)
echo "Unknown option: $opt"
exit 1
;;
esac
done
#compile_featuretest
clean_and_check_test
echo "The first part test is $serial_case1 and $parallel_case1"
if [[ $serial_case1 != "" ]]; then
echo "Run sanity test Serial test and filer is $serial_case1"
src/test/feature/feature-test --gtest_filter=$serial_case1
fi
if [[ $parallel_case1 != "" ]]; then
rm -rf src/test/feature/testresult
mkdir -p src/test/feature/testresult
echo "Run sanity test Parallel test and filer is $parallel_case1"
python src/test/feature/gtest-parallel --workers=4 --output_dir=src/test/feature/testmagmaresult --print_test_times src/test/feature/feature-test --gtest_filter=$parallel_case1
fi
if [[ $serial_case2 != "" ]]; then
echo "Run sanity test Serial test and filer is $serial_case2"
src/test/feature/feature-test --gtest_filter=$serial_case2
fi
if [[ $parallel_case2 != "" ]]; then
rm -rf mkdir -p src/test/feature/testresult2
mkdir -p src/test/feature/testresult2
python src/test/feature/gtest-parallel --workers=4 --output_dir=src/test/feature/testresult2 --print_test_times src/test/feature/feature-test --gtest_filter=$parallel_case2
fi
echo "Finish test"