#! /bin/sh #++ # Access Definitions #-- DB=test USER=test PASSWD= #++ # Misc. Definitions #-- CWD=`pwd` cd .. BASEDIR=`pwd` cd $CWD MYBIN="$CWD/mybin" TESTVER=3.23 TESTDIR="$CWD/t/$TESTVER" TESTSUFFIX=test TOT_PASS=0 TOT_FAIL=0 TOT_TEST=0 TIME_FORMAT='%U\t%S\t%E\t%P' DASHBLANK="----\t----\t-------\t----" [ -z $COLUMNS ] && COLUMNS=80 E=`expr $COLUMNS - 8` C=0 while [ $C != $E ] do DASH72="${DASH72}-" C=`expr $C + 1` done #++ # mysqld Environment Parameters #-- MYPORT=9306 MYDDIR="$CWD/var/lib" MYSOCK="$CWD/var/tmp/mysql.sock" MYPID="$CWD/var/run/mysqld.pid" MYLOG="$CWD/var/log/mysqld.log" MYERR="$CWD/var/log/mysqld.err" #++ # Program Definitions #-- ECHO=/bin/echo EXPR=/usr/bin/expr PRINTF=/usr/bin/printf TIME=/usr/bin/time MYSQLD="$BASEDIR/sql/mysqld" MYSQL_TEST="$BASEDIR/client/mysqltest" MYSQLADMIN="$BASEDIR/client/mysqladmin" MYSQL_TEST="$MYSQL_TEST --socket=$MYSOCK --database=$DB --user=$USER --password=$PASSWD --silent" INSTALL_DB="$MYBIN/mysql-test_install_db" #++ # Terminal Modifications #-- MOVE_TO_COL="$ECHO -en \\033[300C\\033[20D" SETCOLOR_SUCCESS="$ECHO -en \\033[1;32m" SETCOLOR_FAILURE="$ECHO -en \\033[1;31m" SETCOLOR_WARNING="$ECHO -en \\033[1;33m" SETCOLOR_NORMAL="$ECHO -en \\033[0;39m" #++ # Function Definitions #-- echo_ok() { $MOVE_TO_COL && $SETCOLOR_NORMAL $ECHO -n "[ " $SETCOLOR_SUCCESS $ECHO -n "ok" $SETCOLOR_NORMAL $ECHO " ]" return 0 } echo_notok() { $MOVE_TO_COL && $SETCOLOR_NORMAL $ECHO -n "[ " $SETCOLOR_FAILURE $ECHO -n "not ok" $SETCOLOR_NORMAL $ECHO " ]" return 0 } echo_pass () { $MOVE_TO_COL && $SETCOLOR_NORMAL $ECHO -n "[ " $SETCOLOR_SUCCESS $ECHO -n "pass" $SETCOLOR_NORMAL $ECHO " ]" return 0 } echo_fail () { $MOVE_TO_COL && $SETCOLOR_NORMAL $ECHO -n "[ " $SETCOLOR_FAILURE $ECHO -n "fail" $SETCOLOR_NORMAL $ECHO " ]" return 0 } error () { $SETCOLOR_FAILURE $ECHO -n "Error: " && $SETCOLOR_NORMAL && $ECHO $1 $SETCOLOR_NORMAL exit 1 } pass_inc () { TOT_PASS=`$EXPR $TOT_PASS + 1` } fail_inc () { TOT_FAIL=`$EXPR $TOT_FAIL + 1` } total_inc () { TOT_TEST=`$EXPR $TOT_TEST + 1` } report_stats () { if [ $TOT_FAIL = 0 ]; then $ECHO "All tests successful." else $ECHO -n "Failed ${TOT_FAIL}/${TOT_TEST} tests, " xten=`$EXPR $TOT_PASS \* 10000` # raw=`$EXPR $xten / $TOT_TEST` # My God raw=`$PRINTF %.4d $raw` # This is such a ... whole=`$PRINTF %.2s $raw` # Narttu!! xwhole=`$EXPR $whole \* 100` # Hynda!!! deci=`$EXPR $raw - $xwhole` # $ECHO "${whole}.${deci}% successful." fi } mysql_install_db () { `$INSTALL_DB` if [ $? != 0 ]; then error "Could not install tmp DBs" exit 1 fi return 0 } mysql_start () { `$MYSQLD --no-defaults \ --skip-networking \ --basedir=$CWD \ --datadir=$MYDDIR \ --pid-file=$MYPID \ --socket=$MYSOCK \ --log=$MYLOG \ --language=english >> $MYERR 2>&1 &` return 1 } mysql_stop () { `$MYSQLADMIN --socket=$MYSOCK -u root shutdown` return 1 } mysql_restart () { mysql_stop res=$? [ $res != 1 ] && echo_notok && error "Stopping mysqld" mysql_start res=$? [ $res != 1 ] && echo_notok && error "Starting mysqld" return 1 } mysql_loadstd () { sleep 2 return 1 } mysql_install_db $SETCOLOR_NORMAL && $ECHO -n "Starting mysqld for Testing" mysql_start res=$? res=1 [ $res != 1 ] && echo_notok && error "Starting mysqld" [ $res = 1 ] && echo_ok $SETCOLOR_NORMAL && $ECHO -n "Loading Standard Test Database" mysql_loadstd res=$? [ $res != 1 ] && echo_notok && error "Loading STD" [ $res = 1 ] && echo_ok $SETCOLOR_NORMAL && $ECHO -n "Starting Tests for MySQL $TESTVER Series" $SETCOLOR_SUCCESS && echo_ok $ECHO $ECHO -e " TEST\t\t\tUSER\tSYSTEM\tELAPSED\t%CPU\t RESULT" $ECHO $DASH72 for tf in $TESTDIR/*.$TESTSUFFIX do if [ -f $tf ] ; then mytime=`$TIME -f $TIME_FORMAT $MYSQL_TEST < $tf 2>&1` res=$? tf=`basename $tf` [ $res = 1 ] && mytime=`$ECHO -ne $mytime | cut -b 39-` $SETCOLOR_NORMAL && $ECHO -ne "$tf\t$mytime" [ $res = 1 ] && fail_inc && echo_fail [ $res != 1 ] && pass_inc && echo_pass total_inc if [ $res != 0 ]; then $ECHO $SETCOLOR_NORMAL && $ECHO -ne "Restarting mysqld\t$DASHBLANK" mysql_restart $SETCOLOR_SUCCESS && echo_ok $SETCOLOR_NORMAL && $ECHO -ne "Resuming Tests\t\t$DASHBLANK" $SETCOLOR_SUCCESS && echo_ok $ECHO fi fi done $ECHO $DASH72 $ECHO $SETCOLOR_NORMAL && $ECHO -n "Ending Tests for MySQL $TESTVER Series" $SETCOLOR_SUCCESS && echo_ok $SETCOLOR_NORMAL && $ECHO -n "Shutdown mysqld" mysql_stop res=$? res=1 [ $res != 1 ] && echo_notok && error "Shutdown mysqld" [ $res = 1 ] && echo_ok $SETCOLOR_NORMAL $ECHO report_stats $ECHO exit 0