| #! /bin/sh |
| # |
| # @@@ START COPYRIGHT @@@ |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| # |
| # @@@ END COPYRIGHT @@@ |
| |
| # Some test suites contain tests that cannot be run concurrently with other tests. |
| # These test suites are executed in two passes. The first pass executes tests |
| # concurrently with other tests. The second pass executes exclusive tests sequentially. |
| # The -concurrent and -exclusive command line options indicate which pass to execute. |
| # Most test suites execute completely during the -concurrent pass. The -exclusive |
| # pass is used only for test suites containing tests that cannot be executed concurrently |
| # with other tests. |
| |
| # Set defaults: MX-format tables; sequential execution |
| sqlmxtbls=1 |
| table_format='sb' |
| ssd='../tools' |
| concurrent_execution=0 |
| exclusive_execution=0 |
| log_qualifier= |
| diffs=0 |
| failed=0 |
| |
| # Parse command line options. Options must appear on the command line before |
| # test names. |
| while [ "$#" -gt 0 ]; do |
| case "$1" in |
| -concurrent) |
| concurrent_execution=1 |
| shift |
| ;; |
| |
| -exclusive) |
| exclusive_execution=1 |
| log_qualifier='.excl' |
| shift |
| ;; |
| |
| -sb) |
| sqlmxtbls=1 |
| table_format='sb' |
| export SEABASE_REGRESS=2 |
| shift |
| ;; |
| |
| -diff) |
| diffs=1 |
| shift |
| ;; |
| |
| -failed) |
| failed=1 |
| shift |
| ;; |
| |
| -ssd) |
| ssd=${2:?'The -ssd option requires an argument'} |
| shift 2 |
| ;; |
| |
| *) |
| break |
| ;; |
| esac |
| done |
| |
| if [ "$diffs" -eq 1 -a "$table_format" == "sb" ]; then |
| export SEABASE_REGRESS_DIFFS=1 |
| fi |
| |
| export SQLMX_REGRESS=1 |
| export SQLMX_NAMETYPE=ANSI |
| echo "***** Running SQL regressions *****" |
| |
| $REGR_PREOP # you can set this envvar to any command you like |
| # e.g. export REGR_PREOP="cp $HOME/setupnskenv $RGRT" |
| |
| export NULL=/dev/null |
| export NSK=0 |
| export LINUX=1 |
| if [ "$scriptsdir" != "" ]; then |
| pushd $scriptsdir/tools > $NULL |
| . ./setuplnxenv |
| popd > $NULL |
| fi |
| |
| if [ -r $ssd/setupenv ]; then # second, generic pan-platform setup |
| . $ssd/setupenv |
| elif [ "$scriptsdir" != "" ]; then |
| . $scriptsdir/tools/setupenv |
| fi |
| |
| test "$scriptsdir" = "" && echo Scripts root dir env var \$scriptsdir not set. && exit 1 |
| test "$rundir" = "" && echo Run root dir env var \$rundir not set. && exit 1 |
| |
| export mxcmpdir=${mxcmpdir:-$arkcmpdir} |
| export TEMP=${TMP:-${TEMP:-$rundir/tmp}} |
| test -f $TEMP -a ! -d $TEMP && TEMP=$rundir/tmpdir |
| test ! -d $TEMP && mkdir -p $TEMP |
| test ! -d $TEMP -o ! -w $TEMP && TEMP=/tmp |
| |
| if [ ! -e $scriptsdir/tools/logsort_linux.exe ]; then |
| if [ "$scriptsdir/tools/logsort_src" != "" ]; then |
| pushd $scriptsdir/tools/logsort_src > $NULL |
| sh makeit_linux.ksh |
| popd > $NULL |
| mv -f $scriptsdir/tools/logsort_src/logsort.exe $scriptsdir/tools/logsort_linux.exe |
| fi |
| fi |
| |
| export LOGSORT=$scriptsdir/tools/logsort_linux.exe |
| export FILTER=$scriptsdir/tools/regress-filter-linux |
| |
| export MAKEPARAMS="$mxcmpdir $mxcidir" |
| export MAKEOBJTYP=o |
| export mxci=$mxcidir/sqlci |
| export mxcmp=$mxcmpdir/tdm_arkcmp |
| export mxudr=$mxcmpdir/tdm_udrserv |
| export javahome=${JAVA_HOME} |
| export java=$javahome/bin/java |
| export javac=$javahome/bin/javac |
| export jar=$javahome/bin/jar |
| export NSK_SYS=NSK |
| linuxinit=$scriptsdir/tools/linuxinit |
| |
| # export synonyms for convenience |
| export sqlci=$mxci |
| export arkcmp=$mxcmp |
| export arkcmpdir=$mxcmpdir |
| export nsk=$NSK |
| export TMP=$TEMP |
| |
| # determine regression directories and logs |
| export REGRBASDIR=$(basename $PWD) |
| export REGRRUNDIR=$rundir/$REGRBASDIR |
| export REGRTSTDIR=$scriptsdir/$REGRBASDIR |
| export rgrlog=$REGRRUNDIR/runregr-${table_format}${log_qualifier}.log |
| export rgrStats=$REGRRUNDIR/runregr-${table_format}${log_qualifier}.stats |
| export REGRTOOLSDIR=$scriptsdir/tools |
| |
| export REGRCONCURRENT="$concurrent_execution" |
| export REGREXCLUSIVE="$exclusive_execution" |
| |
| # setup up make file script, same for mx and mp |
| export MAKESCRIPT=$scriptsdir/tools/makefileall.ksh |
| |
| # Single-quoted versions of the REGR* variables |
| export REGRBASDIR_Q="'$REGRBASDIR'" |
| export REGRRUNDIR_Q="'$REGRRUNDIR'" |
| export REGRTSTDIR_Q="'$REGRTSTDIR'" |
| export REGRRUNDIR_QCleanup="'$REGRRUNDIR/cleanup'" |
| export REGRRUNDIR_QAB="'$REGRRUNDIR/A/B'" |
| |
| ###################################################### |
| #these tests are run as part of checktests. Used by runregr_checktest*.ksh |
| #They are skipped by individual tests if 'runallsb' script is used to |
| #run multiple suites and checktests is part of it. |
| #That way we avoid running the same tests multiple times: once as part of |
| #checktests and then as part of individual test. |
| |
| # "orig" tests are the original tests that need to be run. |
| # non-orig are the ones currently being run due to existing issues with |
| # some tests in the orig list. |
| export coreCT="TEST000 TEST001 TEST002 TEST005 TEST032 TEST056 TEST116 TESTRTS" |
| export compGeneralCT="TEST006 TEST015 TEST042 TESTTOK" |
| export charsetsCT="TEST001 TEST311" |
| export executorCT="TEST013 TEST015 TEST022 TEST107" |
| export fullstack2CT="TEST062" |
| |
| export hiveCTorig="TEST001 TEST005 TEST009 TEST015 TEST021 TEST031 TEST041 TEST046 TEST055" |
| export hiveCT="TEST001 TEST005 TEST009 TEST015 TEST017 TEST021" |
| |
| export seabaseCT="TEST002 TEST003 TEST010 TEST011 TEST022 TEST025 TEST030 TEST031" |
| export udrCT="TEST002" |
| export privs1CT="TEST120 TEST137" |
| |
| export privs2CTorig="TEST145" |
| #export privs2CT="TEST145" |
| export privs2CT="" |
| #################################### |
| |
| tmplocal=$TMP/`basename $0 .ksh`.tmp |
| |
| # Make sure sed commands in $FILTER work -- |
| # otherwise all regressions will come up with ostensible zero diffs |
| # (falsely reporting SUCCESS) |
| # because all .flt files will contain the same sed error message! |
| # |
| # This can happen when the $FILTER is not write-protected by ClearCase, |
| # for instance on NSK, and you inadvertently type a stray character |
| # while looking at the file in an editor. |
| # |
| test ! -x $FILTER && chmod +rwx $FILTER # ensure we can run it |
| $FILTER $NULL # run it (emits errmsg if bad) |
| test $? -ne 0 && echo && echo "ERROR: Your copy of $FILTER is broken." && exit 1 |
| |
| flavor1= |
| if [ "$diffs" -ne 1 -o "$table_format" != "sb" ]; then |
| echo 'select TESTEXIT;' > $tmplocal.flavor.tmp |
| flavor1=`$sqlci -i $tmplocal.flavor.tmp | grep 15001` |
| fi |
| flavor2= |
| if [ "$flavor1" = "" ]; then |
| flavor1=DEBUG |
| # enable NA memory overflow checking during test |
| export MEMDEBUG=2 |
| else |
| flavor1=RELEASE |
| fi |
| export BUILD_FLAVOR_TEXT="($flavor1$flavor2 build)" |
| export BUILD_FLAVOR=`echo $flavor1 | tr A-Z a-z` # case-sensitive filename lookup (most runregr_xxx.ksh use lowercase for "expectednnn.nsk*") |
| |
| |
| tool=$scriptsdir/tools/runregr_$REGRBASDIR.ksh |
| if [ ! -f $tool ]; then |
| tool=$scriptsdir/tools/runregr_other.ksh |
| fi |
| if [ "$diffs" -eq 1 ]; then |
| echo "Command requested: $tool -diff $*" |
| else |
| echo "Command requested: $tool $*" |
| fi |
| echo "Build flavor is: $BUILD_FLAVOR_TEXT" |
| export PATH="$scriptsdir/tools:$PATH" |
| |
| # Create the FilteredLogs directory |
| FilteredLogs=$scriptsdir/FilteredLogs |
| if [ ! -d "$FilteredLogs" ]; then |
| echo "Creating directory $FilteredLogs" |
| mkdir $FilteredLogs |
| fi |
| |
| if [ ! -d "$FilteredLogs/win" ]; then |
| echo "Creating directory $FilteredLogs/win" |
| mkdir $FilteredLogs/win |
| fi |
| FilteredLogs=$FilteredLogs/win |
| |
| if [ ! -d "$FilteredLogs/$REGRBASDIR" ]; then |
| echo "Creating directory $FilteredLogs/$REGRBASDIR" |
| mkdir $FilteredLogs/$REGRBASDIR |
| fi |
| export FilteredLogs="$FilteredLogs/$REGRBASDIR" |
| |
| #Delete files left from previous run |
| rm -f core dumpfile sh_histo ZZSA* |
| |
| |
| #Establish log, exp and bsl directories |
| if [ ! -d "$FilteredLogs/logfiles" ]; then |
| echo "Creating directory $FilteredLogs/logfiles" |
| mkdir $FilteredLogs/logfiles |
| fi |
| if [ ! -d "$FilteredLogs/expfiles" ]; then |
| echo "Creating directory $FilteredLogs/expfiles" |
| mkdir $FilteredLogs/expfiles |
| fi |
| echo "Using the following directory for filtered logs: $FilteredLogs" |
| |
| if [ "$failed" -eq 1 ]; then |
| rm -f $REGRRUNDIR/runregr-failed.log 2>$NULL |
| echo "Command executed: $tool -diff $* " |
| $tool -diff $* > $REGRRUNDIR/runregr-failed.log |
| ff=`cat $REGRRUNDIR/runregr-failed.log | grep ' ### FAIL ' | cut -c 22-28 ` 2>$NULL |
| |
| if [ "$ff" == "" ]; then |
| echo "No failed tests, nothing to execute." |
| rm -f $REGRRUNDIR/runregr-failed.log 2>$NULL |
| echo "No failed tests." > $REGRRUNDIR/runregr-failed.log |
| else |
| failedTests= |
| for i in $ff; do |
| failedTests="$failedTests $i" |
| done |
| echo "Command executed: $tool $failedTests" |
| $tool $failedTests |
| rm -f $REGRRUNDIR/runregr-failed.log 2>$NULL |
| cp $rgrlog $REGRRUNDIR/runregr-failed.log 2>$NULL |
| fi |
| elif [ "$diffs" -eq 1 ]; then |
| echo "Command executed: $tool -diff $*" |
| $tool -diff $* |
| else |
| echo "Command executed: $tool $*" |
| $tool $* |
| fi |
| |
| |
| # Concatentate logs for test suites that are executed in separate |
| # concurrent and sequential phases. The exclusive phase is executed |
| # after the concurrent phase, so the logs are concatenated at the end |
| # of the exclusive phase. |
| if [ "$REGREXCLUSIVE" -ne 0 ]; then |
| normal_log="$REGRRUNDIR/runregr-mx.log" |
| if [ -a "$normal_log" ]; then |
| exclusive_log="$rgrlog" |
| echo 'Exclusive (sequential) tests:' | \ |
| cat - "$exclusive_log" >>"$normal_log" && rm "$exclusive_log" |
| rgrlog="$normal_log" |
| else |
| echo "Error: Log file $normal_log doesn't exist!" |
| fi |
| fi |
| |
| $REGR_POSTOP # you can set this envvar to any command you like |
| # e.g. export REGR_POSTOP="$HOME/bin/rgrCleanup" |
| echo "***** Done running regressions *****" |