summaryrefslogtreecommitdiff
path: root/mysql-test/mysql-test-run.sh
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/mysql-test-run.sh')
-rw-r--r--mysql-test/mysql-test-run.sh743
1 files changed, 558 insertions, 185 deletions
diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh
index 64eaaab9fa4..8ccd6770995 100644
--- a/mysql-test/mysql-test-run.sh
+++ b/mysql-test/mysql-test-run.sh
@@ -1,7 +1,7 @@
-#! /bin/sh
+#!/bin/sh
# mysql-test-run - originally written by Matt Wagner <matt@mysql.com>
# modified by Sasha Pachev <sasha@mysql.com>
-# Sligtly updated by Monty
+# Slightly updated by Monty
# Cleaned up again by Matt
# Fixed by Sergei
# List of failed cases (--force) backported from 4.1 by Joerg
@@ -16,12 +16,17 @@ VERBOSE=""
USE_MANAGER=0
MY_TZ=GMT-3
TZ=$MY_TZ; export TZ # for UNIX_TIMESTAMP tests to work
+LOCAL_SOCKET=@MYSQL_UNIX_ADDR@
+MYSQL_TCP_PORT=@MYSQL_TCP_PORT@
# For query_cache test
case `uname` in
SCO_SV | UnixWare | OpenUNIX )
# do nothing (Causes strange behavior)
;;
+ QNX)
+ # do nothing (avoid error message)
+ ;;
* )
ulimit -n 1024
;;
@@ -165,7 +170,8 @@ cd ..
BASEDIR=`pwd`
cd $CWD
MYSQL_TEST_DIR=$BASEDIR/mysql-test
-export MYSQL_TEST_DIR
+MYSQL_TEST_WINDIR=$MYSQL_TEST_DIR
+export MYSQL_TEST_DIR MYSQL_TEST_WINDIR
STD_DATA=$MYSQL_TEST_DIR/std_data
hostname=`hostname` # Installed in the mysql privilege table
@@ -189,15 +195,17 @@ MY_LOG_DIR="$MYSQL_TEST_DIR/var/log"
#
# Set LD_LIBRARY_PATH if we are using shared libraries
#
-LD_LIBRARY_PATH="$BASEDIR/lib:$BASEDIR/libmysql/.libs:$LD_LIBRARY_PATH"
-DYLD_LIBRARY_PATH="$BASEDIR/lib:$BASEDIR/libmysql/.libs:$DYLD_LIBRARY_PATH"
+LD_LIBRARY_PATH="$BASEDIR/lib:$BASEDIR/libmysql/.libs:$BASEDIR/zlib/.libs:$LD_LIBRARY_PATH"
+DYLD_LIBRARY_PATH="$BASEDIR/lib:$BASEDIR/libmysql/.libs:$BASEDIR/zlib/.libs:$DYLD_LIBRARY_PATH"
export LD_LIBRARY_PATH DYLD_LIBRARY_PATH
MASTER_RUNNING=0
+MASTER1_RUNNING=0
MASTER_MYPORT=9306
SLAVE_RUNNING=0
-SLAVE_MYPORT=9307
+SLAVE_MYPORT=9308 # leave room for 2 masters for cluster tests
MYSQL_MANAGER_PORT=9305 # needs to be out of the way of slaves
+NDBCLUSTER_PORT=9350
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
@@ -216,11 +224,13 @@ if [ -n "$MTR_BUILD_THREAD" ] ; then
MASTER_MYPORT=`expr $MTR_BUILD_THREAD '*' 10 + 10000`
MYSQL_MANAGER_PORT=`expr $MASTER_MYPORT + 2`
SLAVE_MYPORT=`expr $MASTER_MYPORT + 3`
+ NDBCLUSTER_PORT=`expr $MASTER_MYPORT + 6`
echo "Using MTR_BUILD_THREAD = $MTR_BUILD_THREAD"
echo "Using MASTER_MYPORT = $MASTER_MYPORT"
echo "Using MYSQL_MANAGER_PORT = $MYSQL_MANAGER_PORT"
echo "Using SLAVE_MYPORT = $SLAVE_MYPORT"
+ echo "Using NDBCLUSTER_PORT = $NDBCLUSTER_PORT"
fi
NO_SLAVE=0
@@ -229,10 +239,14 @@ FAILED_CASES=
EXTRA_MASTER_OPT=""
EXTRA_MYSQL_TEST_OPT=""
-USE_RUNNING_SERVER=1
-# backport from 5.1, disabled - this substitution is not done in 4.0
-# USE_NDBCLUSTER=@USE_NDBCLUSTER@
-# USE_NDBCLUSTER_ONLY=0
+EXTRA_MYSQLDUMP_OPT=""
+EXTRA_MYSQLBINLOG_OPT=""
+USE_RUNNING_SERVER=""
+USE_NDBCLUSTER=@USE_NDBCLUSTER@
+USE_NDBCLUSTER_ONLY=0
+USE_RUNNING_NDBCLUSTER=""
+USE_PURIFY=""
+PURIFY_LOGS=""
DO_GCOV=""
DO_GDB=""
MANUAL_GDB=""
@@ -241,19 +255,37 @@ DO_CLIENT_GDB=""
SLEEP_TIME_AFTER_RESTART=1
SLEEP_TIME_FOR_DELETE=10
SLEEP_TIME_FOR_FIRST_MASTER=400 # Enough time to create innodb tables
-SLEEP_TIME_FOR_SECOND_MASTER=30
+SLEEP_TIME_FOR_SECOND_MASTER=400
SLEEP_TIME_FOR_FIRST_SLAVE=400
-SLEEP_TIME_FOR_SECOND_SLAVE=30
+SLEEP_TIME_FOR_SECOND_SLAVE=300
CHARACTER_SET=latin1
DBUSER=""
START_WAIT_TIMEOUT=10
STOP_WAIT_TIMEOUT=10
MYSQL_TEST_SSL_OPTS=""
+USE_TIMER=""
+USE_EMBEDDED_SERVER=""
+TEST_MODE=""
+
+NDB_MGM_EXTRA_OPTS=
+NDB_MGMD_EXTRA_OPTS=
+NDBD_EXTRA_OPTS=
while test $# -gt 0; do
case "$1" in
+ --embedded-server)
+ USE_EMBEDDED_SERVER=1
+ USE_MANAGER=0 NO_SLAVE=1
+ USE_RUNNING_SERVER=""
+ TEST_MODE="$TEST_MODE embedded" ;;
+ --purify)
+ USE_PURIFY=1
+ USE_MANAGER=0
+ USE_RUNNING_SERVER=""
+ TEST_MODE="$TEST_MODE purify" ;;
--user=*) DBUSER=`$ECHO "$1" | $SED -e "s;--user=;;"` ;;
--force) FORCE=1 ;;
+ --timer) USE_TIMER=1 ;;
--verbose-manager) MANAGER_QUIET_OPT="" ;;
--old-master) MASTER_40_ARGS="";;
--master-binary=*)
@@ -261,15 +293,22 @@ while test $# -gt 0; do
--slave-binary=*)
SLAVE_MYSQLD=`$ECHO "$1" | $SED -e "s;--slave-binary=;;"` ;;
--local) USE_RUNNING_SERVER="" ;;
- --extern) USE_RUNNING_SERVER="1" ;;
+ --extern) USE_RUNNING_SERVER="1" ;;
--with-ndbcluster)
-# USE_NDBCLUSTER="--ndbcluster" ;;
- $ECHO "Option '--with-ndbcluster' is ignored in this version" ;;
+ USE_NDBCLUSTER="--ndbcluster" ;;
--with-ndbcluster-only)
-# USE_NDBCLUSTER="--ndbcluster"
-# USE_NDBCLUSTER_SLAVE="--ndbcluster"
-# USE_NDBCLUSTER_ONLY=1 ;;
- $ECHO "Option '--with-ndbcluster-only' is ignored in this version" ;;
+ USE_NDBCLUSTER="--ndbcluster"
+ USE_NDBCLUSTER_SLAVE="--ndbcluster"
+ USE_NDBCLUSTER_ONLY=1 ;;
+ --ndb-connectstring=*)
+ USE_NDBCLUSTER="--ndbcluster" ;
+ USE_RUNNING_NDBCLUSTER=`$ECHO "$1" | $SED -e "s;--ndb-connectstring=;;"` ;;
+ --ndb_mgm-extra-opts=*)
+ NDB_MGM_EXTRA_OPTS=`$ECHO "$1" | $SED -e "s;--ndb_mgm-extra-opts=;;"` ;;
+ --ndb_mgmd-extra-opts=*)
+ NDB_MGMD_EXTRA_OPTS=`$ECHO "$1" | $SED -e "s;--ndb_mgmd-extra-opts=;;"` ;;
+ --ndbd-extra-opts=*)
+ NDBD_EXTRA_OPTS=`$ECHO "$1" | $SED -e "s;--ndbd-extra-opts=;;"` ;;
--tmpdir=*) MYSQL_TMP_DIR=`$ECHO "$1" | $SED -e "s;--tmpdir=;;"` ;;
--local-master)
MASTER_MYPORT=3306;
@@ -279,6 +318,7 @@ while test $# -gt 0; do
--master_port=*) MASTER_MYPORT=`$ECHO "$1" | $SED -e "s;--master_port=;;"` ;;
--slave_port=*) SLAVE_MYPORT=`$ECHO "$1" | $SED -e "s;--slave_port=;;"` ;;
--manager-port=*) MYSQL_MANAGER_PORT=`$ECHO "$1" | $SED -e "s;--manager_port=;;"` ;;
+ --ndbcluster_port=*) NDBCLUSTER_PORT=`$ECHO "$1" | $SED -e "s;--ndbcluster_port=;;"` ;;
--with-openssl)
EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT \
--ssl-ca=$BASEDIR/SSL/cacert.pem \
@@ -299,9 +339,11 @@ while test $# -gt 0; do
--start-and-exit)
START_AND_EXIT=1
;;
+ --socket=*) LOCAL_SOCKET=`$ECHO "$1" | $SED -e "s;--socket=;;"` ;;
--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=;;"`;;
+ --start-from=* ) START_FROM=`$ECHO "$1" | $SED -e "s;--start-from=;;"` ;;
--warnings | --log-warnings)
EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT --log-warnings"
EXTRA_SLAVE_MYSQLD_OPT="$EXTRA_SLAVE_MYSQLD_OPT --log-warnings"
@@ -312,6 +354,11 @@ while test $# -gt 0; do
--record)
RECORD=1;
EXTRA_MYSQL_TEST_OPT="$EXTRA_MYSQL_TEST_OPT $1" ;;
+ --small-bench)
+ DO_SMALL_BENCH=1
+ DO_BENCH=1
+ NO_SLAVE=1
+ ;;
--bench)
DO_BENCH=1
NO_SLAVE=1
@@ -324,6 +371,8 @@ while test $# -gt 0; do
EXTRA_MYSQL_TEST_OPT="$EXTRA_MYSQL_TEST_OPT $1"
SLEEP_TIME_AFTER_RESTART=`$ECHO "$1" | $SED -e "s;--sleep=;;"`
;;
+ --ps-protocol)
+ TEST_MODE="$TEST_MODE ps-protocol" EXTRA_MYSQL_TEST_OPT="$EXTRA_MYSQL_TEST_OPT $1" ;;
--user-test=*)
USER_TEST=`$ECHO "$1" | $SED -e "s;--user-test=;;"`
;;
@@ -380,7 +429,7 @@ while test $# -gt 0; do
EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT --gdb"
EXTRA_SLAVE_MYSQLD_OPT="$EXTRA_SLAVE_MYSQLD_OPT --gdb"
;;
- --valgrind)
+ --valgrind | --valgrind-all)
VALGRIND=`which valgrind` # this will print an error if not found
# Give good warning to the user and stop
if [ -z "$VALGRIND" ] ; then
@@ -393,15 +442,21 @@ while test $# -gt 0; do
EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT --skip-safemalloc --skip-bdb"
EXTRA_SLAVE_MYSQLD_OPT="$EXTRA_SLAVE_MYSQLD_OPT --skip-safemalloc --skip-bdb"
SLEEP_TIME_AFTER_RESTART=10
- SLEEP_TIME_FOR_DELETE=120
+ SLEEP_TIME_FOR_DELETE=60
USE_RUNNING_SERVER=""
+ if test "$1" = "--valgrind-all"
+ then
+ VALGRIND="$VALGRIND -v --show-reachable=yes"
+ fi
;;
--valgrind-options=*)
TMP=`$ECHO "$1" | $SED -e "s;--valgrind-options=;;"`
VALGRIND="$VALGRIND $TMP"
;;
- --valgrind-all)
- VALGRIND="$VALGRIND -v --show-reachable=yes"
+ --skip-ndbcluster | --skip-ndb)
+ USE_NDBCLUSTER=""
+ EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT --skip-ndbcluster"
+ EXTRA_SLAVE_MYSQLD_OPT="$EXTRA_SLAVE_MYSQLD_OPT --skip-ndbcluster"
;;
--skip-*)
EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT $1"
@@ -417,6 +472,11 @@ while test $# -gt 0; do
--debug=d:t:i:A,$MYSQL_TEST_DIR/var/log/slave.trace"
EXTRA_MYSQL_TEST_OPT="$EXTRA_MYSQL_TEST_OPT \
--debug=d:t:A,$MYSQL_TEST_DIR/var/log/mysqltest.trace"
+ EXTRA_MYSQLDUMP_OPT="$EXTRA_MYSQLDUMP_OPT \
+ --debug=d:t:A,$MYSQL_TEST_DIR/var/log/mysqldump.trace"
+ EXTRA_MYSQLBINLOG_OPT="$EXTRA_MYSQLBINLOG_OPT \
+ --debug=d:t:A,$MYSQL_TEST_DIR/var/log/mysqlbinlog.trace"
+ EXTRA_MYSQL_CLIENT_TEST_OPT="--debug=d:t:A,$MYSQL_TEST_DIR/var/log/mysql_client_test.trace"
;;
--fast)
FAST_START=1
@@ -435,6 +495,13 @@ while test $# -gt 0; do
shift
done
+if [ -z "$TEST_MODE" ] ; then
+ TEST_MODE="default"
+else
+ # Remove the leading space if any
+ TEST_MODE=`echo $TEST_MODE | sed 's/^ *//'`
+fi
+
#++
# mysqld Environment Parameters
#--
@@ -444,6 +511,7 @@ MANAGER_PID_FILE="$MYRUN_DIR/manager.pid"
MASTER_MYDDIR="$MYSQL_TEST_DIR/var/master-data"
MASTER_MYSOCK="$MYSQL_TMP_DIR/master.sock"
+MASTER_MYSOCK1=$MYSQL_MYSOCK"1"
MASTER_MYPID="$MYRUN_DIR/master.pid"
MASTER_MYLOG="$MYSQL_TEST_DIR/var/log/master.log"
MASTER_MYERR="$MYSQL_TEST_DIR/var/log/master.err"
@@ -455,10 +523,14 @@ SLAVE_MYLOG="$MYSQL_TEST_DIR/var/log/slave.log"
SLAVE_MYERR="$MYSQL_TEST_DIR/var/log/slave.err"
CURRENT_TEST="$MYSQL_TEST_DIR/var/log/current_test"
-SMALL_SERVER="-O key_buffer_size=1M -O sort_buffer=256K -O max_heap_table_size=1M"
+SMALL_SERVER="--key_buffer_size=1M --sort_buffer=256K --max_heap_table_size=1M"
+
+export MASTER_MYPORT MASTER_MYPORT1 SLAVE_MYPORT MYSQL_TCP_PORT MASTER_MYSOCK MASTER_MYSOCK1
-export MASTER_MYPORT
-export SLAVE_MYPORT
+NDBCLUSTER_BASE_PORT=`expr $NDBCLUSTER_PORT + 2`
+NDBCLUSTER_OPTS="--port=$NDBCLUSTER_PORT --port-base=$NDBCLUSTER_BASE_PORT --data-dir=$MYSQL_TEST_DIR/var --ndb_mgm-extra-opts=$NDB_MGM_EXTRA_OPTS --ndb_mgmd-extra-opts=$NDB_MGMD_EXTRA_OPTS --ndbd-extra-opts=$NDBD_EXTRA_OPTS"
+NDB_BACKUP_DIR=$MYSQL_TEST_DIR/var/ndbcluster-$NDBCLUSTER_PORT
+NDB_TOOLS_OUTPUT=$MYSQL_TEST_DIR/var/log/ndb_tools.log
if [ x$SOURCE_DIST = x1 ] ; then
MY_BASEDIR=$MYSQL_TEST_DIR
@@ -478,24 +550,43 @@ fi
if test ${COLUMNS:-0} -lt 80 ; then COLUMNS=80 ; fi
E=`$EXPR $COLUMNS - 8`
-DASH72=`$ECHO '------------------------------------------'|$CUT -c 1-$E`
+DASH72=`$ECHO '-------------------------------------------------------'|$CUT -c 1-$E`
# on source dist, we pick up freshly build executables
# on binary, use what is installed
if [ x$SOURCE_DIST = x1 ] ; then
- MYSQLD="$VALGRIND $BASEDIR/sql/mysqld"
- if [ -f "$BASEDIR/client/.libs/lt-mysqltest" ] ; then
- MYSQL_TEST="$BASEDIR/client/.libs/lt-mysqltest"
- elif [ -f "$BASEDIR/client/.libs/mysqltest" ] ; then
- MYSQL_TEST="$BASEDIR/client/.libs/mysqltest"
+ if [ "x$USE_EMBEDDED_SERVER" = "x1" ] ; then
+ if [ -f "$BASEDIR/libmysqld/examples/mysqltest_embedded" ] ; then
+ MYSQL_TEST="$VALGRIND $BASEDIR/libmysqld/examples/mysqltest_embedded"
+ else
+ echo "Fatal error: Cannot find embedded server 'mysqltest_embedded'" 1>&2
+ exit 1
+ fi
+ MYSQL_CLIENT_TEST="$BASEDIR/libmysqld/examples/mysql_client_test_embedded"
else
- MYSQL_TEST="$BASEDIR/client/mysqltest"
+ MYSQLD="$BASEDIR/sql/mysqld"
+ if [ -n "$VALGRIND" ] ; then
+ MYSQLD="$VALGRIND $MYSQLD"
+ fi
+ if [ -f "$BASEDIR/client/.libs/lt-mysqltest" ] ; then
+ MYSQL_TEST="$BASEDIR/client/.libs/lt-mysqltest"
+ elif [ -f "$BASEDIR/client/.libs/mysqltest" ] ; then
+ MYSQL_TEST="$BASEDIR/client/.libs/mysqltest"
+ else
+ MYSQL_TEST="$BASEDIR/client/mysqltest"
+ fi
+ MYSQL_CLIENT_TEST="$BASEDIR/tests/mysql_client_test"
fi
if [ -f "$BASEDIR/client/.libs/mysqldump" ] ; then
MYSQL_DUMP="$BASEDIR/client/.libs/mysqldump"
else
MYSQL_DUMP="$BASEDIR/client/mysqldump"
fi
+ if [ -f "$BASEDIR/client/.libs/mysqlimport" ] ; then
+ MYSQL_IMPORT="$BASEDIR/client/.libs/mysqlimport"
+ else
+ MYSQL_IMPORT="$BASEDIR/client/mysqlimport"
+ fi
if [ -f "$BASEDIR/client/.libs/mysqlbinlog" ] ; then
MYSQL_BINLOG="$BASEDIR/client/.libs/mysqlbinlog"
else
@@ -516,7 +607,39 @@ if [ x$SOURCE_DIST = x1 ] ; then
CHARSETSDIR="$BASEDIR/sql/share/charsets"
INSTALL_DB="./install_test_db"
MYSQL_FIX_SYSTEM_TABLES="$BASEDIR/scripts/mysql_fix_privilege_tables"
+ NDB_TOOLS_DIR="$BASEDIR/ndb/tools"
+ NDB_MGM="$BASEDIR/ndb/src/mgmclient/ndb_mgm"
+
+ if [ -n "$USE_PURIFY" ] ; then
+ PSUP="$MYSQL_TEST_DIR/suppress.purify"
+ PURIFYOPTIONS="-windows=no -log-file=%v.purifylog -append-logfile -add-suppression-files=$PSUP"
+ if [ -f "${MYSQL_TEST}-purify" ] ; then
+ MYSQL_TEST="${MYSQL_TEST}-purify"
+ PLOG="$MYSQL_TEST.purifylog"
+ if [ -f $PLOG ]; then
+ mv $PLOG $PLOG.$$
+ fi
+ PURIFY_LOGS="$PLOG"
+ fi
+ if [ -f "${MYSQLD}-purify" ] ; then
+ MYSQLD="${MYSQLD}-purify"
+ PLOG="$MYSQLD.purifylog"
+ if [ -f $PLOG ]; then
+ mv $PLOG $PLOG.$$
+ fi
+ PURIFY_LOGS="$PURIFY_LOGS $PLOG"
+ fi
+ fi
+
else
+
+ # We have a binary installation. Note that this can be both from
+ # unpacking a MySQL AB binary distribution (created using
+ # "scripts/make_binary_distribution", and from a "make install".
+ # Unfortunately the structure differs a bit, for a "make install"
+ # currently all binaries are in "bin", for a MySQL AB packaging
+ # some are in "tests".
+
if test -x "$BASEDIR/libexec/mysqld"
then
MYSQLD="$VALGRIND $BASEDIR/libexec/mysqld"
@@ -524,8 +647,15 @@ else
MYSQLD="$VALGRIND $BASEDIR/bin/mysqld"
fi
CLIENT_BINDIR="$BASEDIR/bin"
+ if test -d "$BASEDIR/tests"
+ then
+ TESTS_BINDIR="$BASEDIR/tests"
+ else
+ TESTS_BINDIR="$BASEDIR/bin"
+ fi
MYSQL_TEST="$CLIENT_BINDIR/mysqltest"
MYSQL_DUMP="$CLIENT_BINDIR/mysqldump"
+ MYSQL_IMPORT="$CLIENT_BINDIR/mysqlimport"
MYSQL_BINLOG="$CLIENT_BINDIR/mysqlbinlog"
MYSQLADMIN="$CLIENT_BINDIR/mysqladmin"
WAIT_PID="$CLIENT_BINDIR/mysql_waitpid"
@@ -535,6 +665,8 @@ else
MYSQL="$CLIENT_BINDIR/mysql"
INSTALL_DB="./install_test_db --bin"
MYSQL_FIX_SYSTEM_TABLES="$CLIENT_BINDIR/mysql_fix_privilege_tables"
+ NDB_TOOLS_DIR="$CLIENT_BINDIR"
+ NDB_MGM="$CLIENT_BINDIR/ndb_mgm"
if test -d "$BASEDIR/share/mysql/english"
then
LANGUAGE="$BASEDIR/share/mysql/english/"
@@ -542,15 +674,25 @@ else
else
LANGUAGE="$BASEDIR/share/english/"
CHARSETSDIR="$BASEDIR/share/charsets"
- fi
+ fi
+ if [ "x$USE_EMBEDDED_SERVER" = "x1" ] ; then
+ if [ -f "$CLIENT_BINDIR/mysqltest_embedded" ] ; then
+ MYSQL_TEST="$VALGRIND $CLIENT_BINDIR/mysqltest_embedded"
+ else
+ echo "Fatal error: Cannot find embedded server 'mysqltest_embedded'" 1>&2
+ exit 1
+ fi
+ if [ -d "$BASEDIR/tests/mysql_client_test_embedded" ] ; then
+ MYSQL_CLIENT_TEST="$TESTS_BINDIR/mysql_client_test_embedded"
+ else
+ MYSQL_CLIENT_TEST="$CLIENT_BINDIR/mysql_client_test_embedded"
+ fi
+ else
+ MYSQL_TEST="$CLIENT_BINDIR/mysqltest"
+ MYSQL_CLIENT_TEST="$CLIENT_BINDIR/mysql_client_test"
+ fi
fi
-MYSQL_DUMP="$MYSQL_DUMP --no-defaults -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD"
-MYSQL_BINLOG="$MYSQL_BINLOG --no-defaults --local-load=$MYSQL_TMP_DIR"
-MYSQL_FIX_SYSTEM_TABLES="$MYSQL_FIX_SYSTEM_TABLES --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD --bindir=$CLIENT_BINDIR"
-MYSQL="$MYSQL --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD"
-export MYSQL MYSQL_DUMP MYSQL_BINLOG MYSQL_FIX_SYSTEM_TABLES CLIENT_BINDIR
-
if [ -z "$MASTER_MYSQLD" ]
then
MASTER_MYSQLD=$MYSQLD
@@ -569,7 +711,7 @@ then
fi
if [ -n "$USE_RUNNING_SERVER" ]
then
- MASTER_MYSOCK="/tmp/mysql.sock"
+ MASTER_MYSOCK=$LOCAL_SOCKET;
DBUSER=${DBUSER:-test}
else
DBUSER=${DBUSER:-root} # We want to do FLUSH xxx commands
@@ -582,12 +724,40 @@ then
EXTRA_SLAVE_MYSQLD_OPT="$EXTRA_SLAVE_MYSQLD_OPT --user=root"
fi
+MYSQL_CLIENT_TEST="$MYSQL_CLIENT_TEST --no-defaults --testcase --user=root --socket=$MASTER_MYSOCK --port=$MYSQL_TCP_PORT --silent $EXTRA_MYSQL_CLIENT_TEST_OPT"
+# Need to pass additional arguments to MYSQL_CLIENT_TEST for embedded server
+# -A marks each argument for passing to the function which initializes the
+# embedded library
+if [ "x$USE_EMBEDDED_SERVER" = "x1" ]; then
+ MYSQL_CLIENT_TEST="$MYSQL_CLIENT_TEST -A --language=$LANGUAGE -A --datadir=$SLAVE_MYDDIR -A --character-sets-dir=$CHARSETSDIR"
+fi
+# Save path and name of mysqldump
+MYSQL_DUMP_DIR="$MYSQL_DUMP"
+export MYSQL_DUMP_DIR
+MYSQL_DUMP="$MYSQL_DUMP --no-defaults -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLDUMP_OPT"
+MYSQL_IMPORT="$MYSQL_IMPORT -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLDUMP_OPT"
+MYSQL_BINLOG="$MYSQL_BINLOG --no-defaults --local-load=$MYSQL_TMP_DIR $EXTRA_MYSQLBINLOG_OPT"
+MYSQL_FIX_SYSTEM_TABLES="$MYSQL_FIX_SYSTEM_TABLES --no-defaults --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD --basedir=$BASEDIR --bindir=$CLIENT_BINDIR --verbose"
+MYSQL="$MYSQL --no-defaults --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD"
+export MYSQL MYSQL_DUMP MYSQL_IMPORT MYSQL_BINLOG MYSQL_FIX_SYSTEM_TABLES
+export CLIENT_BINDIR MYSQL_CLIENT_TEST CHARSETSDIR
+export NDB_TOOLS_DIR
+export NDB_MGM
+export NDB_BACKUP_DIR
+export NDB_TOOLS_OUTPUT
+export PURIFYOPTIONS
+NDB_STATUS_OK=1
+export NDB_STATUS_OK
MYSQL_TEST_ARGS="--no-defaults --socket=$MASTER_MYSOCK --database=$DB \
--user=$DBUSER --password=$DBPASSWD --silent -v --skip-safemalloc \
--tmpdir=$MYSQL_TMP_DIR --port=$MASTER_MYPORT $MYSQL_TEST_SSL_OPTS"
+if [ x$USE_TIMER = x1 ] ; then
+ MYSQL_TEST_ARGS="$MYSQL_TEST_ARGS --timer-file=$MY_LOG_DIR/timer"
+fi
MYSQL_TEST_BIN=$MYSQL_TEST
MYSQL_TEST="$MYSQL_TEST $MYSQL_TEST_ARGS"
+export MYSQL_TEST
GDB_CLIENT_INIT=$MYSQL_TMP_DIR/gdbinit.client
GDB_MASTER_INIT=$MYSQL_TMP_DIR/gdbinit.master
GDB_SLAVE_INIT=$MYSQL_TMP_DIR/gdbinit.slave
@@ -631,10 +801,9 @@ show_failed_diff ()
$DIFF -c $result_file $reject_file
echo "-------------------------------------------------------"
echo "Please follow the instructions outlined at"
- echo "http://www.mysql.com/doc/en/Reporting_mysqltest_bugs.html"
+ echo "http://dev.mysql.com/doc/mysql/en/reporting-mysqltest-bugs.html"
echo "to find the reason to this problem and how to report this."
echo ""
- echo "Test $1 failed!"
fi
}
@@ -655,7 +824,7 @@ error () {
error_is () {
$ECHO "Errors are (from $TIMEFILE) :"
$CAT < $TIMEFILE
- $ECHO "(the last line(s) may be the ones that caused the die() in mysqltest)"
+ $ECHO "(the last lines may be the most important ones)"
}
prefix_to_8() {
@@ -689,6 +858,29 @@ skip_test() {
$ECHO "$RES$RES_SPACE [ skipped ]"
}
+
+disable_test() {
+ USERT=" ...."
+ SYST=" ...."
+ REALT=" ...."
+ pname=`$ECHO "$1 "|$CUT -c 1-24`
+ RES="$pname"
+ skip_inc
+ $ECHO "$RES$RES_SPACE [ disabled ] $2"
+}
+
+
+report_current_test () {
+ tname=$1
+ echo "CURRENT_TEST: $tname" >> $MASTER_MYERR
+ if [ -n "$PURIFY_LOGS" ] ; then
+ for log in $PURIFY_LOGS
+ do
+ echo "CURRENT_TEST: $tname" >> $log
+ done
+ fi
+}
+
report_stats () {
if [ $TOT_FAIL = 0 ]; then
$ECHO "All $TOT_TEST tests were successful."
@@ -699,12 +891,12 @@ report_stats () {
whole=`$PRINTF %.2s $raw`
xwhole=`$EXPR $whole \* 100`
deci=`$EXPR $raw - $xwhole`
- $ECHO "Failed ${TOT_FAIL}/${TOT_TEST} tests, ${whole}.${deci}% successful."
+ $ECHO "Failed ${TOT_FAIL}/${TOT_TEST} tests, ${whole}.${deci}% were successful."
$ECHO ""
$ECHO "The log files in $MY_LOG_DIR may give you some hint"
$ECHO "of what when wrong."
$ECHO "If you want to report this error, please read first the documentation at"
- $ECHO "http://www.mysql.com/doc/M/y/MySQL_test_suite.html"
+ $ECHO "http://dev.mysql.com/doc/mysql/en/mysql-test-suite.html"
fi
if test -z "$USE_RUNNING_SERVER"
@@ -715,13 +907,15 @@ report_stats () {
$RM -f $MY_LOG_DIR/warnings $MY_LOG_DIR/warnings.tmp
# Remove some non fatal warnings from the log files
$SED -e 's!Warning: Table:.* on delete!!g' -e 's!Warning: Setting lower_case_table_names=2!!g' -e 's!Warning: One can only use the --user.*root!!g' \
- $MY_LOG_DIR/*.err > $MY_LOG_DIR/warnings.tmp
+ $MY_LOG_DIR/*.err \
+ | $SED -e 's!Warning: Table:.* on rename!!g' \
+ > $MY_LOG_DIR/warnings.tmp
found_error=0
# Find errors
for i in "^Warning:" "^Error:" "^==.* at 0x"
do
- if `$GREP "$i" $MY_LOG_DIR/warnings.tmp >> $MY_LOG_DIR/warnings`
+ if $GREP "$i" $MY_LOG_DIR/warnings.tmp >> $MY_LOG_DIR/warnings
then
found_error=1
fi
@@ -737,13 +931,22 @@ report_stats () {
mysql_install_db () {
$ECHO "Removing Stale Files"
- $RM -rf $MASTER_MYDDIR $SLAVE_MYDDIR $MY_LOG_DIR/*
+ $RM -rf $MASTER_MYDDIR $MASTER_MYDDIR"1" $SLAVE_MYDDIR $MY_LOG_DIR/*
$ECHO "Installing Master Databases"
$INSTALL_DB
if [ $? != 0 ]; then
error "Could not install master test DBs"
exit 1
fi
+ if [ ! -z "$USE_NDBCLUSTER" ]
+ then
+ $ECHO "Installing Master Databases 1"
+ $INSTALL_DB -1
+ if [ $? != 0 ]; then
+ error "Could not install master test DBs 1"
+ exit 1
+ fi
+ fi
$ECHO "Installing Slave Databases"
$INSTALL_DB -slave
if [ $? != 0 ]; then
@@ -861,13 +1064,13 @@ manager_launch()
ident=$1
shift
if [ $USE_MANAGER = 0 ] ; then
- $@ >> $CUR_MYERR 2>&1 &
+ echo $@ | /bin/sh >> $CUR_MYERR 2>&1 &
sleep 2 #hack
return
fi
$MYSQL_MANAGER_CLIENT $MANAGER_QUIET_OPT --user=$MYSQL_MANAGER_USER \
--password=$MYSQL_MANAGER_PW --port=$MYSQL_MANAGER_PORT <<EOF
-def_exec $ident $@
+def_exec $ident "$@"
set_exec_stdout $ident $CUR_MYERR
set_exec_stderr $ident $CUR_MYERR
set_exec_con $ident root localhost $CUR_MYSOCK
@@ -882,10 +1085,10 @@ manager_term()
ident=$2
if [ $USE_MANAGER = 0 ] ; then
# Shutdown time must be high as slave may be in reconnect
- $MYSQLADMIN --no-defaults -uroot --socket=$MYSQL_TMP_DIR/$ident.sock --connect_timeout=5 --shutdown_timeout=70 shutdown >> $MYSQL_MANAGER_LOG 2>&1
+ $MYSQLADMIN --no-defaults -uroot --socket=$MYSQL_TMP_DIR/$ident.sock$3 --connect_timeout=5 --shutdown_timeout=70 shutdown >> $MYSQL_MANAGER_LOG 2>&1
res=$?
# Some systems require an extra connect
- $MYSQLADMIN --no-defaults -uroot --socket=$MYSQL_TMP_DIR/$ident.sock --connect_timeout=1 ping >> $MYSQL_MANAGER_LOG 2>&1
+ $MYSQLADMIN --no-defaults -uroot --socket=$MYSQL_TMP_DIR/$ident.sock$3 --connect_timeout=1 ping >> $MYSQL_MANAGER_LOG 2>&1
if test $res = 0
then
wait_for_pid $pid
@@ -899,18 +1102,68 @@ EOF
abort_if_failed "Could not execute manager command"
}
+start_ndbcluster()
+{
+ if [ ! -z "$USE_NDBCLUSTER" ]
+ then
+ rm -f $NDB_TOOLS_OUTPUT
+ if [ -z "$USE_RUNNING_NDBCLUSTER" ]
+ then
+ echo "Starting ndbcluster"
+ if [ "$DO_BENCH" = 1 ]
+ then
+ NDBCLUSTER_EXTRA_OPTS=""
+ else
+ NDBCLUSTER_EXTRA_OPTS="--small"
+ fi
+ ./ndb/ndbcluster $NDBCLUSTER_OPTS $NDBCLUSTER_EXTRA_OPTS --initial || NDB_STATUS_OK=0
+ if [ x$NDB_STATUS_OK != x1 ] ; then
+ if [ x$FORCE != x1 ] ; then
+ exit 1
+ fi
+ USE_NDBCLUSTER=
+ return
+ fi
+
+ NDB_CONNECTSTRING="host=localhost:$NDBCLUSTER_PORT"
+ else
+ NDB_CONNECTSTRING="$USE_RUNNING_NDBCLUSTER"
+ echo "Using ndbcluster at $NDB_CONNECTSTRING"
+ fi
+ USE_NDBCLUSTER="$USE_NDBCLUSTER --ndb-connectstring=\"$NDB_CONNECTSTRING\""
+ export NDB_CONNECTSTRING
+ fi
+}
+
+stop_ndbcluster()
+{
+ if [ ! -z "$USE_NDBCLUSTER" ]
+ then
+ if [ -z "$USE_RUNNING_NDBCLUSTER" ]
+ then
+ # Kill any running ndbcluster stuff
+ ./ndb/ndbcluster $NDBCLUSTER_OPTS --stop
+ fi
+ fi
+}
+
+# The embedded server needs the cleanup so we do some of the start work
+# but stop before actually running mysqld or anything.
start_master()
{
- if [ x$MASTER_RUNNING = x1 ] || [ x$LOCAL_MASTER = x1 ] ; then
+ eval "this_master_running=\$MASTER$1_RUNNING"
+ if [ x$this_master_running = x1 ] || [ x$LOCAL_MASTER = x1 ] ; then
return
fi
- # Remove old berkeley db log files that can confuse the server
- $RM -f $MASTER_MYDDIR/log.*
- # Remove stale binary logs
- $RM -f $MYSQL_TEST_DIR/var/log/master-bin.*
+ # Remove stale binary logs except for 2 tests which need them
+ if [ "$tname" != "rpl_crash_binlog_ib_1b" ] && [ "$tname" != "rpl_crash_binlog_ib_2b" ] && [ "$tname" != "rpl_crash_binlog_ib_3b" ]
+ then
+ $RM -f $MYSQL_TEST_DIR/var/log/master-bin$1.*
+ fi
+
# Remove old master.info and relay-log.info files
- $RM -f $MYSQL_TEST_DIR/var/master-data/master.info $MYSQL_TEST_DIR/var/master-data/relay-log.info
+ $RM -f $MYSQL_TEST_DIR/var/master-data$1/master.info $MYSQL_TEST_DIR/var/master-data$1/relay-log.info
#run master initialization shell script if one exists
@@ -919,19 +1172,31 @@ start_master()
/bin/sh $master_init_script
fi
cd $BASEDIR # for gcov
+ if [ -n "$1" ] ; then
+ id=`$EXPR $1 + 101`;
+ this_master_myport=`$EXPR $MASTER_MYPORT + $1`
+ NOT_FIRST_MASTER_EXTRA_OPTS="--skip-innodb"
+ eval "MASTER_MYPORT$1=$this_master_myport"
+ export MASTER_MYPORT$1
+ else
+ id=1;
+ this_master_myport=$MASTER_MYPORT
+ NOT_FIRST_MASTER_EXTRA_OPTS=""
+ fi
if [ -z "$DO_BENCH" ]
then
- master_args="--no-defaults --log-bin=$MYSQL_TEST_DIR/var/log/master-bin \
- --server-id=1 \
+ master_args="--no-defaults --log-bin=$MYSQL_TEST_DIR/var/log/master-bin$1 \
+ --server-id=$id \
--basedir=$MY_BASEDIR \
- --port=$MASTER_MYPORT \
+ --port=$this_master_myport \
--local-infile \
--exit-info=256 \
--core \
- --datadir=$MASTER_MYDDIR \
- --pid-file=$MASTER_MYPID \
- --socket=$MASTER_MYSOCK \
- --log=$MASTER_MYLOG \
+ $USE_NDBCLUSTER \
+ --datadir=$MASTER_MYDDIR$1 \
+ --pid-file=$MASTER_MYPID$1 \
+ --socket=$MASTER_MYSOCK$1 \
+ --log=$MASTER_MYLOG$1 \
--character-sets-dir=$CHARSETSDIR \
--default-character-set=$CHARACTER_SET \
--tmpdir=$MYSQL_TMP_DIR \
@@ -940,29 +1205,44 @@ start_master()
--open-files-limit=1024 \
$MASTER_40_ARGS \
$SMALL_SERVER \
- $EXTRA_MASTER_OPT $EXTRA_MASTER_MYSQLD_OPT"
+ $EXTRA_MASTER_OPT $EXTRA_MASTER_MYSQLD_OPT \
+ $NOT_FIRST_MASTER_EXTRA_OPTS"
else
- master_args="--no-defaults --log-bin=$MYSQL_TEST_DIR/var/log/master-bin \
- --server-id=1 --rpl-recovery-rank=1 \
+ master_args="--no-defaults --log-bin=$MYSQL_TEST_DIR/var/log/master-bin$1 \
+ --server-id=$id --rpl-recovery-rank=1 \
--basedir=$MY_BASEDIR --init-rpl-role=master \
- --port=$MASTER_MYPORT \
+ --port=$this_master_myport \
--local-infile \
- --datadir=$MASTER_MYDDIR \
- --pid-file=$MASTER_MYPID \
- --socket=$MASTER_MYSOCK \
+ --datadir=$MASTER_MYDDIR$1 \
+ --pid-file=$MASTER_MYPID$1 \
+ --socket=$MASTER_MYSOCK$1 \
--character-sets-dir=$CHARSETSDIR \
--default-character-set=$CHARACTER_SET \
--core \
+ $USE_NDBCLUSTER \
--tmpdir=$MYSQL_TMP_DIR \
--language=$LANGUAGE \
--innodb_data_file_path=ibdata1:50M \
$MASTER_40_ARGS \
$SMALL_SERVER \
- $EXTRA_MASTER_OPT $EXTRA_MASTER_MYSQLD_OPT"
+ $EXTRA_MASTER_OPT $EXTRA_MASTER_MYSQLD_OPT \
+ $NOT_FIRST_MASTER_EXTRA_OPTS"
fi
- CUR_MYERR=$MASTER_MYERR
- CUR_MYSOCK=$MASTER_MYSOCK
+ CUR_MYERR=$MASTER_MYERR$1
+ CUR_MYSOCK=$MASTER_MYSOCK$1
+
+ # For embedded server we collect the server flags and return
+ if [ "x$USE_EMBEDDED_SERVER" = "x1" ] ; then
+ # Add a -A to each argument to pass it to embedded server
+ EMBEDDED_SERVER_OPTS=""
+ for opt in $master_args
+ do
+ EMBEDDED_SERVER_OPTS="$EMBEDDED_SERVER_OPTS -A $opt"
+ done
+ EXTRA_MYSQL_TEST_OPT="$EMBEDDED_SERVER_OPTS"
+ return
+ fi
if [ x$DO_DDD = x1 ]
then
@@ -994,9 +1274,9 @@ EOF
else
manager_launch master $MASTER_MYSQLD $master_args
fi
- sleep_until_file_created $MASTER_MYPID $wait_for_master
+ sleep_until_file_created $MASTER_MYPID$1 $wait_for_master
wait_for_master=$SLEEP_TIME_FOR_SECOND_MASTER
- MASTER_RUNNING=1
+ eval "MASTER$1_RUNNING=1"
}
start_slave()
@@ -1028,8 +1308,12 @@ start_slave()
slave_sock="$SLAVE_MYSOCK"
fi
# Remove stale binary logs and old master.info files
- $RM -f $MYSQL_TEST_DIR/var/log/$slave_ident-*bin.*
- $RM -f $slave_datadir/master.info $slave_datadir/relay-log.info
+ # except for too tests which need them
+ if [ "$tname" != "rpl_crash_binlog_ib_1b" ] && [ "$tname" != "rpl_crash_binlog_ib_2b" ] && [ "$tname" != "rpl_crash_binlog_ib_3b" ]
+ then
+ $RM -f $MYSQL_TEST_DIR/var/log/$slave_ident-*bin.*
+ $RM -f $slave_datadir/master.info $slave_datadir/relay-log.info
+ fi
#run slave initialization shell script if one exists
if [ -f "$slave_init_script" ] ;
@@ -1065,7 +1349,7 @@ start_slave()
--core --init-rpl-role=slave \
--tmpdir=$MYSQL_TMP_DIR \
--language=$LANGUAGE \
- --skip-innodb --skip-slave-start \
+ --skip-innodb --skip-ndbcluster --skip-slave-start \
--slave-load-tmpdir=$SLAVE_LOAD_TMPDIR \
--report-host=127.0.0.1 --report-user=root \
--report-port=$slave_port \
@@ -1120,6 +1404,7 @@ mysql_start ()
# start_master
# start_slave
cd $MYSQL_TEST_DIR
+ start_ndbcluster
return 1
}
@@ -1168,26 +1453,31 @@ stop_slave_threads ()
stop_master ()
{
- if [ x$MASTER_RUNNING = x1 ]
+ eval "this_master_running=\$MASTER$1_RUNNING"
+ if [ x$this_master_running = x1 ]
then
- pid=`$CAT $MASTER_MYPID`
- manager_term $pid master
- if [ $? != 0 ] && [ -f $MASTER_MYPID ]
- then # try harder!
- $ECHO "master not cooperating with mysqladmin, will try manual kill"
- kill $pid
- sleep_until_file_deleted $pid $MASTER_MYPID
- if [ -f $MASTER_MYPID ] ; then
- $ECHO "master refused to die. Sending SIGKILL"
- kill -9 `$CAT $MASTER_MYPID`
- $RM -f $MASTER_MYPID
+ # For embedded server we don't stop anyting but mark that
+ # MASTER_RUNNING=0 to get cleanup when calling start_master().
+ if [ x$USE_EMBEDDED_SERVER != x1 ] ; then
+ pid=`$CAT $MASTER_MYPID$1`
+ manager_term $pid master $1
+ if [ $? != 0 ] && [ -f $MASTER_MYPID$1 ]
+ then # try harder!
+ $ECHO "master not cooperating with mysqladmin, will try manual kill"
+ kill $pid
+ sleep_until_file_deleted $pid $MASTER_MYPID$1
+ if [ -f $MASTER_MYPID$1 ] ; then
+ $ECHO "master refused to die. Sending SIGKILL"
+ kill -9 `$CAT $MASTER_MYPID$1`
+ $RM -f $MASTER_MYPID$1
+ else
+ $ECHO "master responded to SIGTERM "
+ fi
else
- $ECHO "master responded to SIGTERM "
+ sleep $SLEEP_TIME_AFTER_RESTART
fi
- else
- sleep $SLEEP_TIME_AFTER_RESTART
fi
- MASTER_RUNNING=0
+ eval "MASTER$1_RUNNING=0"
fi
}
@@ -1197,12 +1487,13 @@ mysql_stop ()
$ECHO "Shutting-down MySQL daemon"
$ECHO ""
stop_master
+ stop_master 1
$ECHO "Master shutdown finished"
stop_slave
stop_slave 1
stop_slave 2
$ECHO "Slave shutdown finished"
-
+ stop_ndbcluster
return 1
}
@@ -1228,43 +1519,71 @@ run_testcase ()
master_init_script=$TESTDIR/$tname-master.sh
slave_init_script=$TESTDIR/$tname-slave.sh
slave_master_info_file=$TESTDIR/$tname.slave-mi
- result_file=$tname
+ tsrcdir=$TESTDIR/$tname-src
+ result_file="r/$tname.result"
echo $tname > $CURRENT_TEST
SKIP_SLAVE=`$EXPR \( $tname : rpl \) = 0`
- if [ $USE_MANAGER = 1 ] ; then
+ if [ -f "$TESTDIR/$tname.disabled" ]
+ then
+ comment=`$CAT $TESTDIR/$tname.disabled`;
+ disable_test $tname "$comment"
+ return
+ fi
+ NDBCLUSTER_TEST=`$EXPR \( $tname : '.*ndb.*' \) != 0`
+ if [ "x$USE_NDBCLUSTER_ONLY" = "x1" -a "x$NDBCLUSTER_TEST" != "x1" ] ; then
+ skip_test $tname
+ return
+ fi
+ if [ "$USE_MANAGER" = 1 ] ; then
many_slaves=`$EXPR \( \( $tname : rpl_failsafe \) != 0 \) \| \( \( $tname : rpl_chain_temp_table \) != 0 \)`
fi
+ if $EXPR "$tname" '<' "$START_FROM" > /dev/null ; then
+ #skip_test $tname
+ return
+ fi
- if [ -n "$SKIP_TEST" ] ; then
- SKIP_THIS_TEST=`$EXPR \( $tname : "$SKIP_TEST" \) != 0`
- if [ x$SKIP_THIS_TEST = x1 ] ;
- then
- skip_test $tname;
- return;
+ if [ "$SKIP_TEST" ] ; then
+ if $EXPR \( "$tname" : "$SKIP_TEST" \) > /dev/null ; then
+ skip_test $tname
+ return
fi
- fi
+ fi
- if [ -n "$DO_TEST" ] ; then
- DO_THIS_TEST=`$EXPR \( $tname : "$DO_TEST" \) != 0`
- if [ x$DO_THIS_TEST = x0 ] ;
- then
- skip_test $tname;
- return;
+ if [ "$DO_TEST" ] ; then
+ if $EXPR \( "$tname" : "$DO_TEST" \) > /dev/null ; then
+ : #empty command to keep some shells happy
+ else
+ #skip_test $tname
+ return
fi
- fi
-
+ fi
- if [ x${NO_SLAVE}x$SKIP_SLAVE = x1x0 ] ;
- then
- skip_test $tname;
+ if [ x${NO_SLAVE}x$SKIP_SLAVE = x1x0 ] ; then
+ skip_test $tname
return
fi
- # Stop all slave threads, so that we don't have useless reconnection attempts
- # and error messages in case the slave and master servers restart.
- stop_slave_threads
- stop_slave_threads 1
- stop_slave_threads 2
+ if [ "x$USE_EMBEDDED_SERVER" != "x1" ] ; then
+ # Stop all slave threads, so that we don't have useless reconnection
+ # attempts and error messages in case the slave and master servers restart.
+ stop_slave_threads
+ stop_slave_threads 1
+ stop_slave_threads 2
+ fi
+
+ # FIXME temporary solution, we will get a new C version of this
+ # script soon anyway so it is not worth it spending the time
+ if [ "x$USE_EMBEDDED_SERVER" = "x1" -a -z "$DO_TEST" ] ; then
+ for t in \
+ "init_connect" \
+ "init_file"
+ do
+ if [ "$tname" = "$t" ] ; then
+ skip_test $tname
+ return
+ fi
+ done
+ fi
if [ -z "$USE_RUNNING_SERVER" ] ;
then
@@ -1280,67 +1599,90 @@ run_testcase ()
;;
--result-file=*)
result_file=`$ECHO "$EXTRA_MASTER_OPT" | $SED -e "s;--result-file=;;"`
- # Note that this must be set to space, not "" for test-reset to work
+ result_file="r/$result_file.result"
+ # Note that this must be set to space, not "" for test-reset to
+# work
EXTRA_MASTER_OPT=" "
;;
esac
stop_master
- echo "CURRENT_TEST: $tname" >> $MASTER_MYERR
+ stop_master 1
+ report_current_test $tname
start_master
+ if [ -n "$USE_NDBCLUSTER" -a -z "$DO_BENCH" ] ; then
+ start_master 1
+ fi
TZ=$MY_TZ; export TZ
else
- if [ ! -z "$EXTRA_MASTER_OPT" ] || [ x$MASTER_RUNNING != x1 ] || [ -f $master_init_script ]
+ # If we had extra master opts to the previous run
+ # or there is no master running (FIXME strange.....)
+ # or there is a master init script
+ if [ ! -z "$EXTRA_MASTER_OPT" ] || [ x$MASTER_RUNNING != x1 ] || \
+ [ -f $master_init_script ]
then
EXTRA_MASTER_OPT=""
stop_master
- echo "CURRENT_TEST: $tname" >> $MASTER_MYERR
+ stop_master 1
+ report_current_test $tname
start_master
+ if [ -n "$USE_NDBCLUSTER" -a -z "$DO_BENCH" ] ; then
+ start_master 1
+ fi
else
- echo "CURRENT_TEST: $tname" >> $MASTER_MYERR
+ report_current_test $tname
fi
fi
- do_slave_restart=0
- if [ -f $slave_opt_file ] ;
- then
- EXTRA_SLAVE_OPT=`$CAT $slave_opt_file | $SED -e "s;\\$MYSQL_TEST_DIR;$MYSQL_TEST_DIR;"`
- do_slave_restart=1
- else
- if [ ! -z "$EXTRA_SLAVE_OPT" ] || [ x$SLAVE_RUNNING != x1 ] ;
- then
- EXTRA_SLAVE_OPT=""
- do_slave_restart=1
- fi
- fi
-
- if [ -f $slave_master_info_file ] ; then
- SLAVE_MASTER_INFO=`$CAT $slave_master_info_file`
- do_slave_restart=1
- else
- if [ ! -z "$SLAVE_MASTER_INFO" ] || [ x$SLAVE_RUNNING != x1 ] ;
+ # We never start a slave if embedded server is used
+ if [ "x$USE_EMBEDDED_SERVER" != "x1" ] ; then
+ do_slave_restart=0
+ if [ -f $slave_opt_file ] ;
then
- SLAVE_MASTER_INFO=""
+ EXTRA_SLAVE_OPT=`$CAT $slave_opt_file | $SED -e "s;\\$MYSQL_TEST_DIR;$MYSQL_TEST_DIR;"`
do_slave_restart=1
+ else
+ if [ ! -z "$EXTRA_SLAVE_OPT" ] || [ x$SLAVE_RUNNING != x1 ] ;
+ then
+ EXTRA_SLAVE_OPT=""
+ do_slave_restart=1
+ fi
fi
- fi
- if [ x$do_slave_restart = x1 ] ; then
- stop_slave
- echo "CURRENT_TEST: $tname" >> $SLAVE_MYERR
- start_slave
- else
- echo "CURRENT_TEST: $tname" >> $SLAVE_MYERR
- fi
- if [ x$many_slaves = x1 ]; then
- start_slave 1
- start_slave 2
+ if [ -f $slave_master_info_file ] ; then
+ SLAVE_MASTER_INFO=`$CAT $slave_master_info_file`
+ do_slave_restart=1
+ else
+ if [ ! -z "$SLAVE_MASTER_INFO" ] || [ x$SLAVE_RUNNING != x1 ] ;
+ then
+ SLAVE_MASTER_INFO=""
+ do_slave_restart=1
+ fi
+ fi
+
+ if [ x$do_slave_restart = x1 ] ; then
+ stop_slave
+ echo "CURRENT_TEST: $tname" >> $SLAVE_MYERR
+ start_slave
+ else
+ echo "CURRENT_TEST: $tname" >> $SLAVE_MYERR
+ fi
+ if [ x$many_slaves = x1 ]; then
+ start_slave 1
+ start_slave 2
+ fi
fi
fi
+
+ if [ "x$START_AND_EXIT" = "x1" ] ; then
+ echo "Servers started, exiting"
+ exit
+ fi
+
cd $MYSQL_TEST_DIR
if [ -f $tf ] ; then
$RM -f r/$tname.*reject
- mysql_test_args="-R r/$result_file.result $EXTRA_MYSQL_TEST_OPT"
+ mysql_test_args="-R $result_file $EXTRA_MYSQL_TEST_OPT"
if [ -z "$DO_CLIENT_GDB" ] ; then
`$MYSQL_TEST $mysql_test_args < $tf 2> $TIMEFILE`;
else
@@ -1360,24 +1702,33 @@ run_testcase ()
if [ $res = 0 ]; then
total_inc
pass_inc
- $ECHO "$RES$RES_SPACE [ pass ]"
+ TIMER=""
+ if [ x$USE_TIMER = x1 -a -f "$MY_LOG_DIR/timer" ]; then
+ TIMER=`cat $MY_LOG_DIR/timer`
+ TIMER=`$PRINTF "%13s" $TIMER`
+ fi
+ $ECHO "$RES$RES_SPACE [ pass ] $TIMER"
else
# why the following ``if'' ? That is why res==1 is special ?
- if [ $res = 2 ]; then
+ if [ $res = 62 ]; then
skip_inc
$ECHO "$RES$RES_SPACE [ skipped ]"
else
+ if [ $res -ne 1 ]; then
+ $ECHO "mysqltest returned unexpected code $res, it has probably crashed" >> $TIMEFILE
+ fi
total_inc
fail_inc
$ECHO "$RES$RES_SPACE [ fail ]"
$ECHO
error_is
- show_failed_diff $result_file
+ show_failed_diff $tname
$ECHO
if [ x$FORCE != x1 ] ; then
- $ECHO "Aborting: $tname failed. To continue, re-run with '--force'."
+ $ECHO "Aborting: $tname failed in $TEST_MODE mode. To continue, re-run with '--force'."
$ECHO
- if [ -z "$DO_GDB" ] && [ -z "$USE_RUNNING_SERVER" ] && [ -z "$DO_DDD" ]
+ if [ -z "$DO_GDB" ] && [ -z "$USE_RUNNING_SERVER" ] && \
+ [ -z "$DO_DDD" ] && [ -z "$USE_EMBEDDED_SERVER" ]
then
mysql_stop
stop_manager
@@ -1385,7 +1736,8 @@ run_testcase ()
exit 1
fi
FAILED_CASES="$FAILED_CASES $tname"
- if [ -z "$DO_GDB" ] && [ -z "$USE_RUNNING_SERVER" ] && [ -z "$DO_DDD" ]
+ if [ -z "$DO_GDB" ] && [ -z "$USE_RUNNING_SERVER" ] && \
+ [ -z "$DO_DDD" ] && [ -z "$USE_EMBEDDED_SERVER" ]
then
mysql_restart
fi
@@ -1411,14 +1763,17 @@ then
then
# Ensure that no old mysqld test servers are running
$MYSQLADMIN --no-defaults --socket=$MASTER_MYSOCK -u root -O connect_timeout=5 -O shutdown_timeout=20 shutdown > /dev/null 2>&1
+ $MYSQLADMIN --no-defaults --socket=$MASTER_MYSOCK1 -u root -O connect_timeout=5 -O shutdown_timeout=20 shutdown > /dev/null 2>&1
$MYSQLADMIN --no-defaults --socket=$SLAVE_MYSOCK -u root -O connect_timeout=5 -O shutdown_timeout=20 shutdown > /dev/null 2>&1
$MYSQLADMIN --no-defaults --host=$hostname --port=$MASTER_MYPORT -u root -O connect_timeout=5 -O shutdown_timeout=20 shutdown > /dev/null 2>&1
+ $MYSQLADMIN --no-defaults --host=$hostname --port=$MASTER_MYPORT+1 -u root -O connect_timeout=5 -O shutdown_timeout=20 shutdown > /dev/null 2>&1
$MYSQLADMIN --no-defaults --host=$hostname --port=$SLAVE_MYPORT -u root -O connect_timeout=5 -O shutdown_timeout=20 shutdown > /dev/null 2>&1
$MYSQLADMIN --no-defaults --host=$hostname --port=`expr $SLAVE_MYPORT + 1` -u root -O connect_timeout=5 -O shutdown_timeout=20 shutdown > /dev/null 2>&1
sleep_until_file_deleted 0 $MASTER_MYPID
+ sleep_until_file_deleted 0 $MASTER_MYPID"1"
sleep_until_file_deleted 0 $SLAVE_MYPID
else
- rm $MASTER_MYPID $SLAVE_MYPID
+ rm $MASTER_MYPID $MASTER_MYPID"1" $SLAVE_MYPID
fi
# Kill any running managers
@@ -1433,13 +1788,21 @@ then
fi
fi
+ stop_ndbcluster
+
# Remove files that can cause problems
+ $RM -rf $MYSQL_TEST_DIR/var/ndbcluster
$RM -f $MYSQL_TEST_DIR/var/run/* $MYSQL_TEST_DIR/var/tmp/*
+ # Remove old berkeley db log files that can confuse the server
+ $RM -f $MASTER_MYDDIR/log.*
+ $RM -f $MASTER_MYDDIR"1"/log.*
+
wait_for_master=$SLEEP_TIME_FOR_FIRST_MASTER
wait_for_slave=$SLEEP_TIME_FOR_FIRST_SLAVE
$ECHO "Installing Test Databases"
mysql_install_db
+
start_manager
# Do not automagically start daemons if we are in gdb or running only one test
@@ -1452,11 +1815,6 @@ then
mysql_loadstd
fi
-if [ "x$START_AND_EXIT" = "x1" ] ; then
- echo "Servers started, exiting"
- exit
-fi
-
$ECHO "Starting Tests"
#
@@ -1464,16 +1822,28 @@ $ECHO "Starting Tests"
#
if [ "$DO_BENCH" = 1 ]
then
+ start_master
+
+ if [ "$DO_SMALL_BENCH" = 1 ]
+ then
+ EXTRA_BENCH_ARGS="--small-test --small-tables"
+ fi
+
+ if [ ! -z "$USE_NDBCLUSTER" ]
+ then
+ EXTRA_BENCH_ARGS="--create-options=TYPE=ndb $EXTRA_BENCH_ARGS"
+ fi
+
BENCHDIR=$BASEDIR/sql-bench/
savedir=`pwd`
cd $BENCHDIR
if [ -z "$1" ]
then
- ./run-all-tests --socket=$MASTER_MYSOCK --user=root
+ ./run-all-tests --socket=$MASTER_MYSOCK --user=root $EXTRA_BENCH_ARGS --log
else
if [ -x "./$1" ]
then
- ./$1 --socket=$MASTER_MYSOCK --user=root
+ ./$1 --socket=$MASTER_MYSOCK --user=root $EXTRA_BENCH_ARGS
else
echo "benchmark $1 not found"
fi
@@ -1485,20 +1855,24 @@ then
fi
$ECHO
-$ECHO " TEST RESULT"
+if [ x$USE_TIMER = x1 ] ; then
+$ECHO "TEST RESULT TIME (ms)"
+else
+$ECHO "TEST RESULT"
+fi
$ECHO $DASH72
if [ -z "$1" ] ;
then
- if [ x$RECORD = x1 ]; then
- $ECHO "Will not run in record mode without a specific test case."
- else
- for tf in $TESTDIR/*.$TESTSUFFIX
- do
- run_testcase $tf
- done
- $RM -f $TIMEFILE # Remove for full test
- fi
+ if [ x$RECORD = x1 ]; then
+ $ECHO "Will not run in record mode without a specific test case."
+ else
+ for tf in $TESTDIR/*.$TESTSUFFIX
+ do
+ run_testcase $tf
+ done
+ $RM -f $TIMEFILE # Remove for full test
+ fi
else
while [ ! -z "$1" ]; do
tname=`$BASENAME $1 .test`
@@ -1519,7 +1893,6 @@ if [ -z "$DO_GDB" ] && [ -z "$USE_RUNNING_SERVER" ] && [ -z "$DO_DDD" ]
then
mysql_stop
fi
-
stop_manager
report_stats
$ECHO
@@ -1528,7 +1901,7 @@ $ECHO
[ "$DO_GPROF" ] && gprof_collect # collect coverage information
if [ $TOT_FAIL -ne 0 ]; then
- $ECHO "mysql-test-run: *** Failing the test(s):$FAILED_CASES"
+ $ECHO "mysql-test-run in $TEST_MODE mode: *** Failing the test(s):$FAILED_CASES"
$ECHO
exit 1
else