diff options
Diffstat (limited to 'mysql-test/mysql-test-run.sh')
-rw-r--r-- | mysql-test/mysql-test-run.sh | 94 |
1 files changed, 71 insertions, 23 deletions
diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index 559e2774403..3fef5e7dcf7 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -98,7 +98,8 @@ MYSQL_TEST_DIR=$BASEDIR/mysql-test export MYSQL_TEST_DIR STD_DATA=$MYSQL_TEST_DIR/std_data hostname=`hostname` # Installed in the mysql privilege table - + +MANAGER_QUIET_OPT="-q" TESTDIR="$MYSQL_TEST_DIR/t" TESTSUFFIX=test TOT_SKIP=0 @@ -119,6 +120,9 @@ MASTER_MYPORT=9306 SLAVE_RUNNING=0 SLAVE_MYPORT=9307 MYSQL_MANAGER_PORT=23546 +MYSQL_MANAGER_PW_FILE=$MYSQL_TEST_DIR/var/tmp/manager.pwd +MYSQL_MANAGER_LOG=$MYSQL_TEST_DIR/var/log/manager.log +MYSQL_MANAGER_USER=root NO_SLAVE=0 EXTRA_MASTER_OPT="" @@ -131,11 +135,14 @@ DO_CLIENT_GDB="" SLEEP_TIME=2 CHARACTER_SET=latin1 DBUSER="" +START_WAIT_TIMEOUT=3 +STOP_WAIT_TIMEOUT=3 while test $# -gt 0; do case "$1" in --user=*) DBUSER=`$ECHO "$1" | $SED -e "s;--user=;;"` ;; --force) FORCE=1 ;; + --verbose-manager) MANAGER_QUIET_OPT="" ;; --local) USE_RUNNING_SERVER="" ;; --tmpdir=*) MYSQL_TMP_DIR=`$ECHO "$1" | $SED -e "s;--tmpdir=;;"` ;; --master_port=*) MASTER_MYPORT=`$ECHO "$1" | $SED -e "s;--master_port=;;"` ;; @@ -158,6 +165,9 @@ while test $# -gt 0; do --skip-rpl) NO_SLAVE=1 ;; --skip-test=*) SKIP_TEST=`$ECHO "$1" | $SED -e "s;--skip-test=;;"`;; --do-test=*) DO_TEST=`$ECHO "$1" | $SED -e "s;--do-test=;;"`;; + --wait-timeout=*) + START_WAIT_TIMEOUT=`$ECHO "$1" | $SED -e "s;--wait-timeout=;;"` + STOP_WAIT_TIMEOUT=$START_WAIT_TIMEOUT;; --record) RECORD=1; EXTRA_MYSQL_TEST_OPT="$EXTRA_MYSQL_TEST_OPT $1" ;; @@ -187,6 +197,8 @@ while test $# -gt 0; do DO_GPROF=1 ;; --gdb ) + START_WAIT_TIMEOUT=300 + STOP_WAIT_TIMEOUT=300 if [ x$BINARY_DIST = x1 ] ; then $ECHO "Note: you will get more meaningful output on a source distribution compiled with debugging option when running tests with --gdb option" fi @@ -337,6 +349,7 @@ GPROF_MASTER=$GPROF_DIR/master.gprof GPROF_SLAVE=$GPROF_DIR/slave.gprof TIMEFILE="$MYSQL_TMP_DIR/mysqltest-time" SLAVE_MYSQLD=$MYSQLD #this can be changed later if we are doing gcov +XTERM=`which xterm` #++ # Function Definitions @@ -503,21 +516,48 @@ abort_if_failed() start_manager() { - MYSQL_MANAGER_PW=`$MYSQL_MANAGER_PWGEN -o $MYSQL_MANAGER_PW_FILE` + MYSQL_MANAGER_PW=`$MYSQL_MANAGER_PWGEN -u $MYSQL_MANAGER_USER \ + -o $MYSQL_MANAGER_PW_FILE` $MYSQL_MANAGER --log=$MYSQL_MANAGER_LOG --port=$MYSQL_MANAGER_PORT \ --password-file=$MYSQL_MANAGER_PW_FILE abort_if_failed "Could not start MySQL manager" } -manager_cmd() +stop_manager() +{ + $MYSQL_MANAGER_CLIENT $MANAGER_QUIET_OPT -u$MYSQL_MANAGER_USER \ + -p$MYSQL_MANAGER_PW -P $MYSQL_MANAGER_PORT <<EOF +shutdown +EOF +} + +manager_launch() { - $MYSQL_MANAGER_CLIENT --user=$MYSQL_MANAGER_USER \ + ident=$1 + shift + $MYSQL_MANAGER_CLIENT $MANAGER_QUIET_OPT --user=$MYSQL_MANAGER_USER \ --password=$MYSQL_MANAGER_PW --port=$MYSQL_MANAGER_PORT <<EOF -$@ +def_exec $ident $@ +set_exec_stdout $ident $CUR_MYERR +set_exec_stderr $ident $CUR_MYERR +set_exec_con $ident root localhost $CUR_MYSOCK +start_exec $ident $START_WAIT_TIMEOUT EOF abort_if_failed "Could not execute manager command" } +manager_term() +{ + ident=$1 + shift + $MYSQL_MANAGER_CLIENT $MANAGER_QUIET_OPT --user=$MYSQL_MANAGER_USER \ + --password=$MYSQL_MANAGER_PW --port=$MYSQL_MANAGER_PORT <<EOF +stop_exec $ident $TERM_WAIT_TIMEOUT +EOF + abort_if_failed "Could not execute manager command" +} + + start_master() { [ x$MASTER_RUNNING = 1 ] && return @@ -564,21 +604,24 @@ start_master() --innodb_data_file_path=ibdata1:50M \ $SMALL_SERVER \ $EXTRA_MASTER_OPT $EXTRA_MASTER_MYSQLD_OPT" - fi + fi + + CUR_MYERR=$MASTER_MYERR + CUR_MYSOCK=$MASTER_MYSOCK + if [ x$DO_DDD = x1 ] then $ECHO "set args $master_args" > $GDB_MASTER_INIT - ddd --debugger "gdb -x $GDB_MASTER_INIT" $MYSQLD & - prompt_user "Hit enter to continue after you've started the master" + manager_launch master ddd -display $DISPLAY --debugger \ + "gdb -x $GDB_MASTER_INIT" $MYSQLD elif [ x$DO_GDB = x1 ] then $ECHO "set args $master_args" > $GDB_MASTER_INIT - xterm -title "Master" -e gdb -x $GDB_MASTER_INIT $MYSQLD & - prompt_user "Hit enter to continue after you've started the master" + manager_launch master $XTERM -display :0 -title "Master" -e gdb -x \ + $GDB_MASTER_INIT $MYSQLD else - $MYSQLD $master_args >> $MASTER_MYERR 2>&1 & + manager_launch master $MYSQLD $master_args fi - wait_for_server_start $MASTER_MYPORT MASTER_RUNNING=1 } @@ -607,7 +650,7 @@ start_slave() $RM -f $SLAVE_MYDDIR/log.* slave_args="--no-defaults $master_info \ --exit-info=256 \ - --log-bin=$MYSQL_TEST_DIR/var/log/slave-bin + --log-bin=$MYSQL_TEST_DIR/var/log/slave-bin \ --log-slave-updates \ --basedir=$MY_BASEDIR \ --datadir=$SLAVE_MYDDIR \ @@ -626,20 +669,22 @@ start_slave() --report-port=$SLAVE_MYPORT \ $SMALL_SERVER \ $EXTRA_SLAVE_OPT $EXTRA_SLAVE_MYSQLD_OPT" + CUR_MYERR=$SLAVE_MYERR + CUR_MYSOCK=$SLAVE_MYSOCK + if [ x$DO_DDD = x1 ] then $ECHO "set args $master_args" > $GDB_SLAVE_INIT - ddd --debugger "gdb -x $GDB_SLAVE_INIT" $SLAVE_MYSQLD & - prompt_user "Hit enter to continue after you've started the slave" + manager_launch slave ddd -display $DISPLAY --debugger \ + "gdb -x $GDB_SLAVE_INIT" $SLAVE_MYSQLD elif [ x$DO_GDB = x1 ] then $ECHO "set args $slave_args" > $GDB_SLAVE_INIT - xterm -title "Slave" -e gdb -x $GDB_SLAVE_INIT $SLAVE_MYSQLD & - prompt_user "Hit enter to continue after you've started the slave" + manager_launch slave $XTERM -display $DISPLAY -title "Slave" -e gdb -x \ + $GDB_SLAVE_INIT $SLAVE_MYSQLD else - $SLAVE_MYSQLD $slave_args >> $SLAVE_MYERR 2>&1 & + manager_launch slave $SLAVE_MYSQLD $slave_args fi - wait_for_server_start $SLAVE_MYPORT SLAVE_RUNNING=1 } @@ -655,7 +700,7 @@ stop_slave () { if [ x$SLAVE_RUNNING = x1 ] then - $MYSQLADMIN --no-defaults --socket=$SLAVE_MYSOCK -u root -O shutdown_timeout=10 shutdown + manager_term slave if [ $? != 0 ] && [ -f $SLAVE_MYPID ] then # try harder! $ECHO "slave not cooperating with mysqladmin, will try manual kill" @@ -677,7 +722,7 @@ stop_master () { if [ x$MASTER_RUNNING = x1 ] then - $MYSQLADMIN --no-defaults --socket=$MASTER_MYSOCK -u root -O shutdown_timeout=10 shutdown + manager_term master if [ $? != 0 ] && [ -f $MASTER_MYPID ] then # try harder! $ECHO "master not cooperating with mysqladmin, will try manual kill" @@ -862,6 +907,7 @@ run_testcase () if [ -z "$DO_GDB" ] && [ -z "$USE_RUNNING_SERVER" ] && [ -z "$DO_DDD" ] then mysql_stop + stop_manager fi exit 1 fi @@ -894,7 +940,8 @@ then $MYSQLADMIN --no-defaults --socket=$SLAVE_MYSOCK -u root -O connect_timeout=5 shutdown > /dev/null 2>&1 $ECHO "Installing Test Databases" mysql_install_db - + $ECHO "Starting MySQL Manager" + start_manager #do not automagically start deamons if we are in gdb or running only one test #case if [ -z "$DO_GDB" ] && [ -z "$DO_DDD" ] @@ -926,10 +973,10 @@ then fi cd $savedir mysql_stop + stop_manager exit fi - $ECHO $ECHO " TEST USER SYSTEM ELAPSED RESULT" $ECHO $DASH72 @@ -963,6 +1010,7 @@ then mysql_stop fi +stop_manager report_stats $ECHO |