summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <sasha@mysql.sashanet.com>2001-09-15 22:09:12 -0600
committerunknown <sasha@mysql.sashanet.com>2001-09-15 22:09:12 -0600
commit3479f42807eb1bbd78804e4b6b06791635c60639 (patch)
treea22c542bd158059ed3e759903dce0a59eb493006
parent45ea63fec3b9cf740c363508730bb2ce63de719a (diff)
downloadmariadb-git-3479f42807eb1bbd78804e4b6b06791635c60639.tar.gz
fixed bug in mysqltest
updated mysql-test-run with features from 4.0 added a test case for broken load data from master for MyISAM tables with checksum client/mysqltest.c: fixed parser bug mysql-test/mysql-test-run.sh: backported changes from 4.0 ( needed to be able to run client in gdb) mysql-test/t/rpl000006.test: updated test case for a bug
-rw-r--r--client/mysqltest.c4
-rw-r--r--mysql-test/mysql-test-run.sh184
-rw-r--r--mysql-test/t/rpl000006.test18
3 files changed, 178 insertions, 28 deletions
diff --git a/client/mysqltest.c b/client/mysqltest.c
index 7d149fe6f66..4288b5d7871 100644
--- a/client/mysqltest.c
+++ b/client/mysqltest.c
@@ -1359,6 +1359,10 @@ int read_line(char* buf, int size)
*p = 0;
return 0;
}
+ else if (c == '\'')
+ state = R_Q1;
+ else if (c == '"')
+ state = R_Q2;
else
state = R_NORMAL;
break;
diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh
index 4d987e591e0..5504e224ca9 100644
--- a/mysql-test/mysql-test-run.sh
+++ b/mysql-test/mysql-test-run.sh
@@ -99,8 +99,9 @@ export MYSQL_TEST_DIR
STD_DATA=$MYSQL_TEST_DIR/std_data
hostname=`hostname` # Installed in the mysql privilege table
-TESTDIR="$MYSQL_TEST_DIR/t/"
+TESTDIR="$MYSQL_TEST_DIR/t"
TESTSUFFIX=test
+TOT_SKIP=0
TOT_PASS=0
TOT_FAIL=0
TOT_TEST=0
@@ -108,6 +109,7 @@ USERT=0
SYST=0
REALT=0
MYSQL_TMP_DIR=$MYSQL_TEST_DIR/var/tmp
+SLAVE_LOAD_TMPDIR=../../var/tmp #needs to be same length to test logging
RES_SPACE=" "
MYSQLD_SRC_DIRS="strings mysys include extra regex isam merge myisam \
myisammrg heap sql"
@@ -124,6 +126,7 @@ USE_RUNNING_SERVER=1
DO_GCOV=""
DO_GDB=""
DO_DDD=""
+DO_CLIENT_GDB=""
SLEEP_TIME=2
DBUSER=""
@@ -135,10 +138,33 @@ while test $# -gt 0; do
--tmpdir=*) MYSQL_TMP_DIR=`$ECHO "$1" | $SED -e "s;--tmpdir=;;"` ;;
--master_port=*) MASTER_MYPORT=`$ECHO "$1" | $SED -e "s;--master_port=;;"` ;;
--slave_port=*) SLAVE_MYPORT=`$ECHO "$1" | $SED -e "s;--slave_port=;;"` ;;
+ --with-openssl)
+ EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT \
+ --ssl-ca=$BASEDIR/SSL/cacert.pem \
+ --ssl-cert=$BASEDIR/SSL/server-cert.pem \
+ --ssl-key=$BASEDIR/SSL/server-key.pem"
+ EXTRA_SLAVE_MYSQLD_OPT="$EXTRA_SLAVE_MYSQLD_OPT \
+ --ssl-ca=$BASEDIR/SSL/cacert.pem \
+ --ssl-cert=$BASEDIR/SSL/server-cert.pem \
+ --ssl-key=$BASEDIR/SSL/server-key.pem" ;;
+ --skip-innobase)
+ EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT --skip-innobase"
+ EXTRA_SLAVE_MYSQLD_OPT="$EXTRA_SLAVE_MYSQLD_OPT --skip-innobase" ;;
+ --skip-bdb)
+ EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT --skip-bdb"
+ EXTRA_SLAVE_MYSQLD_OPT="$EXTRA_SLAVE_MYSQLD_OPT --skip-bdb" ;;
--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=;;"`;;
--record)
RECORD=1;
EXTRA_MYSQL_TEST_OPT="$EXTRA_MYSQL_TEST_OPT $1" ;;
+ --bench)
+ DO_BENCH=1
+ NO_SLAVE=1
+ ;;
+ --big*) # Actually --big-test
+ EXTRA_MYSQL_TEST_OPT="$EXTRA_MYSQL_TEST_OPT $1" ;;
--sleep=*)
EXTRA_MYSQL_TEST_OPT="$EXTRA_MYSQL_TEST_OPT $1"
SLEEP_TIME=`$ECHO "$1" | $SED -e "s;--sleep=;;"`
@@ -160,18 +186,22 @@ while test $# -gt 0; do
;;
--gdb )
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"
+ $ECHO "Note: you will get more meaningful output on a source distribution compiled with debugging option when running tests with --gdb option"
fi
DO_GDB=1
USE_RUNNING_SERVER=""
- EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT --skip-stack"
+ ;;
+ --client-gdb )
+ 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 --client-gdb option"
+ fi
+ DO_CLIENT_GDB=1
;;
--ddd )
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"
+ $ECHO "Note: you will get more meaningful output on a source distribution compiled with debugging option when running tests with --ddd option"
fi
DO_DDD=1
- EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT --skip-stack"
USE_RUNNING_SERVER=""
;;
--skip-*)
@@ -180,9 +210,9 @@ while test $# -gt 0; do
;;
--debug)
EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT \
- --debug=d:t:O,$MYSQL_TMP_DIR/master.trace"
+ --debug=d:t:O,$MYSQL_TEST_DIR/var/log/master.trace"
EXTRA_SLAVE_MYSQLD_OPT="$EXTRA_SLAVE_MYSQLD_OPT \
- --debug=d:t:O,$MYSQL_TMP_DIR/slave.trace"
+ --debug=d:t:O,$MYSQL_TEST_DIR/var/log/slave.trace"
EXTRA_MYSQL_TEST_OPT="$EXTRA_MYSQL_TEST_OPT --debug"
;;
-- ) shift; break ;;
@@ -231,16 +261,23 @@ fi
[ -z "$COLUMNS" ] && COLUMNS=80
E=`$EXPR $COLUMNS - 8`
-#DASH72=`expr substr '------------------------------------------------------------------------' 1 $E`
+#DASH72=`$EXPR substr '------------------------------------------------------------------------' 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="$BASEDIR/sql/mysqld"
- MYSQL_TEST="$BASEDIR/client/mysqltest"
+ if [ -e "$BASEDIR/client/.libs/mysqltest" ] ; then
+ [ -e "$BASEDIR/client/.libs/lt-mysqltest" ] || $BASEDIR/client/mysqltest -V
+ MYSQL_TEST="$BASEDIR/client/.libs/lt-mysqltest"
+ else
+ MYSQL_TEST="$BASEDIR/client/mysqltest"
+ fi
MYSQLADMIN="$BASEDIR/client/mysqladmin"
MYSQL="$BASEDIR/client/mysql"
+ LANGUAGE="$BASEDIR/sql/share/english/"
+ CHARSETSDIR="$BASEDIR/sql/share/charsets"
INSTALL_DB="./install_test_db"
else
MYSQLD="$BASEDIR/bin/mysqld"
@@ -248,6 +285,14 @@ else
MYSQLADMIN="$BASEDIR/bin/mysqladmin"
MYSQL="$BASEDIR/bin/mysql"
INSTALL_DB="./install_test_db -bin"
+ if test -d "$BASEDIR/share/mysql/english"
+ then
+ LANGUAGE="$BASEDIR/share/mysql/english/"
+ CHARSETSDIR="$BASEDIR/share/mysql/charsets"
+ else
+ LANGUAGE="$BASEDIR/share/english/"
+ CHARSETSDIR="$BASEDIR/share/charsets"
+ fi
fi
# If we should run all tests cases, we will use a local server for that
@@ -272,7 +317,10 @@ then
fi
-MYSQL_TEST="$MYSQL_TEST --no-defaults --socket=$MASTER_MYSOCK --database=$DB --user=$DBUSER --password=$DBPASSWD --silent -v --tmpdir=$MYSQL_TMP_DIR"
+MYSQL_TEST_ARGS="--no-defaults --socket=$MASTER_MYSOCK --database=$DB --user=$DBUSER --password=$DBPASSWD --silent -v --tmpdir=$MYSQL_TMP_DIR"
+MYSQL_TEST_BIN=$MYSQL_TEST
+MYSQL_TEST="$MYSQL_TEST $MYSQL_TEST_ARGS"
+GDB_CLIENT_INIT=$MYSQL_TMP_DIR/gdbinit.client
GDB_MASTER_INIT=$MYSQL_TMP_DIR/gdbinit.master
GDB_SLAVE_INIT=$MYSQL_TMP_DIR/gdbinit.slave
GCOV_MSG=$MYSQL_TMP_DIR/mysqld-gcov.out
@@ -303,11 +351,18 @@ show_failed_diff ()
{
reject_file=r/$1.reject
result_file=r/$1.result
+ eval_file=r/$1.eval
+
+ if [ -f $eval_file ]
+ then
+ result_file=$eval_file
+ fi
+
if [ -x "$DIFF" ] && [ -f $reject_file ]
then
echo "Below are the diffs between actual and expected results:"
echo "-------------------------------------------------------"
- $DIFF -c $result_file $reject_file
+ $DIFF -c -a $result_file $reject_file
echo "-------------------------------------------------------"
echo "Please follow the instructions outlined at"
echo "http://www.mysql.com/doc/R/e/Reporting_mysqltest_bugs.html"
@@ -315,6 +370,15 @@ show_failed_diff ()
fi
}
+do_gdb_test ()
+{
+ mysql_test_args="$MYSQL_TEST_ARGS $1"
+ $ECHO "set args $mysql_test_args < $2" > $GDB_CLIENT_INIT
+ echo "Set breakpoints ( if needed) and type 'run' in gdb window"
+ #this xterm should not be backgrounded
+ xterm -title "Client" -e gdb -x $GDB_CLIENT_INIT $MYSQL_TEST_BIN
+}
+
error () {
$ECHO "Error: $1"
exit 1
@@ -435,19 +499,38 @@ start_master()
# Remove old berkeley db log files that can confuse the server
$RM -f $MASTER_MYDDIR/log.*
#start master
- master_args="--no-defaults --log-bin=master-bin \
+ if [ -z "$DO_BENCH" ]
+ then
+ master_args="--no-defaults --log-bin=master-bin \
--server-id=1 \
--basedir=$MY_BASEDIR \
--port=$MASTER_MYPORT \
+ --exit-info=256 \
--datadir=$MASTER_MYDDIR \
--pid-file=$MASTER_MYPID \
--socket=$MASTER_MYSOCK \
- --log=$MASTER_MYLOG --default-character-set=latin1 \
+ --log=$MASTER_MYLOG \
+ --character-sets-dir=$CHARSETSDIR \
--tmpdir=$MYSQL_TMP_DIR \
- --language=english \
+ --language=$LANGUAGE \
--innodb_data_file_path=ibdata1:50M \
$SMALL_SERVER \
$EXTRA_MASTER_OPT $EXTRA_MASTER_MYSQLD_OPT"
+ else
+ master_args="--no-defaults --log-bin=master-bin --server-id=1 \
+ --basedir=$MY_BASEDIR \
+ --port=$MASTER_MYPORT \
+ --datadir=$MASTER_MYDDIR \
+ --pid-file=$MASTER_MYPID \
+ --socket=$MASTER_MYSOCK \
+ --default-character-set=$CHARACTER_SET \
+ --core \
+ --tmpdir=$MYSQL_TMP_DIR \
+ --language=$LANGUAGE \
+ --innodb_data_file_path=ibdata1:50M \
+ $SMALL_SERVER \
+ $EXTRA_MASTER_OPT $EXTRA_MASTER_MYSQLD_OPT"
+ fi
if [ x$DO_DDD = x1 ]
then
$ECHO "set args $master_args" > $GDB_MASTER_INIT
@@ -496,10 +579,11 @@ start_slave()
--pid-file=$SLAVE_MYPID \
--port=$SLAVE_MYPORT \
--socket=$SLAVE_MYSOCK \
- --log=$SLAVE_MYLOG --default-character-set=latin1 \
+ --log=$SLAVE_MYLOG \
+ --character-sets-dir=$CHARSETSDIR \
--core \
--tmpdir=$MYSQL_TMP_DIR \
- --language=english \
+ --language=$LANGUAGE \
--skip-innodb --skip-slave-start \
$SMALL_SERVER \
$EXTRA_SLAVE_OPT $EXTRA_SLAVE_MYSQLD_OPT"
@@ -507,7 +591,7 @@ start_slave()
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 master"
+ prompt_user "Hit enter to continue after you've started the slave"
elif [ x$DO_GDB = x1 ]
then
$ECHO "set args $slave_args" > $GDB_SLAVE_INIT
@@ -609,6 +693,22 @@ run_testcase ()
slave_init_script=$TESTDIR/$tname-slave.sh
slave_master_info_file=$TESTDIR/$tname-slave-master-info.opt
SKIP_SLAVE=`$EXPR \( $tname : rpl \) = 0`
+ if [ -n "$SKIP_TEST" ] ; then
+ SKIP_THIS_TEST=`$EXPR \( $tname : "$SKIP_TEST" \) != 0`
+ if [ x$SKIP_THIS_TEST = x1 ] ;
+ then
+ return;
+ fi
+ fi
+
+ if [ -n "$DO_TEST" ] ; then
+ DO_THIS_TEST=`$EXPR \( $tname : "$DO_TEST" \) != 0`
+ if [ x$DO_THIS_TEST = x0 ] ;
+ then
+ return;
+ fi
+ fi
+
if [ x${NO_SLAVE}x$SKIP_SLAVE = x1x0 ] ;
then
@@ -616,9 +716,9 @@ run_testcase ()
SYST=" ...."
REALT=" ...."
timestr="$USERT $SYST $REALT"
- pname=`$ECHO "$tname "|$CUT -c 1-16`
- RES="$pname $timestr"
- pass_inc
+ pname=`$ECHO "$tname "|$CUT -c 1-24`
+ RES="$pname $timestr"
+ skip_inc
$ECHO "$RES$RES_SPACE [ skipped ]"
return
fi
@@ -672,8 +772,13 @@ run_testcase ()
if [ -f $tf ] ; then
$RM -f r/$tname.*reject
- mytime=`$TIME -p $MYSQL_TEST -R r/$tname.result $EXTRA_MYSQL_TEST_OPT \
- < $tf 2> $TIMEFILE`
+ mysql_test_args="-R r/$tname.result $EXTRA_MYSQL_TEST_OPT"
+ if [ -z "$DO_CLIENT_GDB" ] ; then
+ mytime=`$TIME -p $MYSQL_TEST $mysql_test_args < $tf 2> $TIMEFILE`
+ else
+ do_gdb_test "$mysql_test_args" "$tf"
+ fi
+
res=$?
if [ $res = 0 ]; then
@@ -692,15 +797,19 @@ run_testcase ()
fi
timestr="$USERT $SYST $REALT"
- pname=`$ECHO "$tname "|$CUT -c 1-16`
- RES="$pname $timestr"
+ pname=`$ECHO "$tname "|$CUT -c 1-24`
+ RES="$pname $timestr"
if [ $res = 0 ]; then
total_inc
pass_inc
$ECHO "$RES$RES_SPACE [ pass ]"
else
- if [ $res = 1 ]; then
+ # why the following ``if'' ? That is why res==1 is special ?
+ if [ $res = 2 ]; then
+ skip_inc
+ $ECHO "$RES$RES_SPACE [ skipped ]"
+ else
total_inc
fail_inc
$ECHO "$RES$RES_SPACE [ fail ]"
@@ -724,9 +833,6 @@ run_testcase ()
fi
$ECHO "Resuming Tests"
$ECHO ""
- else
- pass_inc
- $ECHO "$RES$RES_SPACE [ skipped ]"
fi
fi
fi
@@ -763,6 +869,28 @@ fi
$ECHO "Starting Tests"
+if [ "$DO_BENCH" = 1 ]
+then
+ BENCHDIR=$BASEDIR/sql-bench/
+ savedir=`pwd`
+ cd $BENCHDIR
+ if [ -z "$1" ]
+ then
+ ./run-all-tests --socket=$MASTER_MYSOCK --user=root
+ else
+ if [ -x "./$1" ]
+ then
+ ./$1 --socket=$MASTER_MYSOCK --user=root
+ else
+ echo "benchmark $1 not found"
+ fi
+ fi
+ cd $savedir
+ mysql_stop
+ exit
+fi
+
+
$ECHO
$ECHO " TEST USER SYSTEM ELAPSED RESULT"
$ECHO $DASH72
diff --git a/mysql-test/t/rpl000006.test b/mysql-test/t/rpl000006.test
index 8668aac0b72..b8ee690837e 100644
--- a/mysql-test/t/rpl000006.test
+++ b/mysql-test/t/rpl000006.test
@@ -15,3 +15,21 @@ drop table foo;
save_master_pos;
connection slave;
sync_with_master;
+connection master;
+set SQL_LOG_BIN=1;
+CREATE TABLE t1 (
+ a int not null
+) TYPE=MyISAM MAX_ROWS=4000 CHECKSUM=1;
+
+INSERT INTO t1 VALUES (1);
+save_master_pos;
+connection slave;
+sync_with_master;
+drop table t1;
+load table t1 from master;
+check table t1;
+connection master;
+drop table t1;
+save_master_pos;
+connection slave;
+sync_with_master;