summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorunknown <serg@serg.mysql.com>2001-10-12 17:47:13 +0200
committerunknown <serg@serg.mysql.com>2001-10-12 17:47:13 +0200
commit6db2120514c3e7442f69c99be017b2baa03bb09a (patch)
tree224ae04fa4b6a74f056f956de4f2ebb6423c1838 /mysql-test
parent239e8da92637685a4112c99cb198e02f4d10fdc8 (diff)
parentbe31ffa2e46cac314694452b51935ec841b8f06e (diff)
downloadmariadb-git-6db2120514c3e7442f69c99be017b2baa03bb09a.tar.gz
Merge work:/home/bk/mysql-4.0
into serg.mysql.com:/usr/home/serg/Abk/mysql-4.0 BitKeeper/etc/ignore: auto-union mysql-test/r/fulltext.result: Auto merged mysql-test/r/join.result: Auto merged mysql-test/r/fulltext_order_by.result: Auto merged mysql-test/r/fulltext_multi.result: Auto merged mysql-test/r/fulltext_cache.result: Auto merged mysql-test/t/fulltext.test: Auto merged mysql-test/t/join.test: Auto merged mysql-test/r/fulltext_left_join.result: Auto merged sql/handler.h: Auto merged
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/mysql-test-run.sh140
-rw-r--r--mysql-test/r/innodb.result6
-rw-r--r--mysql-test/r/rpl_failsafe.result22
-rw-r--r--mysql-test/t/rpl000018.test1
-rw-r--r--mysql-test/t/rpl_failsafe.test19
5 files changed, 153 insertions, 35 deletions
diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh
index 7ee629e826e..a7cbacc0aa8 100644
--- a/mysql-test/mysql-test-run.sh
+++ b/mysql-test/mysql-test-run.sh
@@ -12,6 +12,7 @@
DB=test
DBPASSWD=
VERBOSE=""
+USE_MANAGER=0
TZ=GMT-3; export TZ # for UNIX_TIMESTAMP tests to work
#++
@@ -124,7 +125,7 @@ MASTER_RUNNING=0
MASTER_MYPORT=9306
SLAVE_RUNNING=0
SLAVE_MYPORT=9307
-MYSQL_MANAGER_PORT=9308
+MYSQL_MANAGER_PORT=9305 # needs to be out of the way of slaves
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
@@ -162,6 +163,8 @@ while test $# -gt 0; do
--ssl-ca=$BASEDIR/SSL/cacert.pem \
--ssl-cert=$BASEDIR/SSL/server-cert.pem \
--ssl-key=$BASEDIR/SSL/server-key.pem" ;;
+ --no-manager | --skip-manager) USE_MANAGER=0 ;;
+ --manager) USE_MANAGER=1 ;;
--skip-innobase)
EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT --skip-innobase"
EXTRA_SLAVE_MYSQLD_OPT="$EXTRA_SLAVE_MYSQLD_OPT --skip-innobase" ;;
@@ -473,6 +476,14 @@ mysql_install_db () {
error "Could not install slave test DBs"
exit 1
fi
+
+ for slave_num in 1 2 ;
+ do
+ rm -rf var/slave$slave_num-data/
+ mkdir -p var/slave$slave_num-data/mysql
+ mkdir -p var/slave$slave_num-data/test
+ cp var/slave-data/mysql/* var/slave$slave_num-data/mysql
+ done
# Give mysqld some time to die.
sleep $SLEEP_TIME
return 0
@@ -526,12 +537,19 @@ abort_if_failed()
start_manager()
{
+ if [ $USE_MANAGER = 0 ] ; then
+ echo "Manager disabled, skipping manager start. Tests requiring manager will\
+ be skipped"
+ return
+ fi
+ $ECHO "Starting MySQL Manager"
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"
- mysqltest_manager_args="--manager-user=$MYSQL_MANAGER_USER \
+ mysqltest_manager_args="--manager-host=localhost \
+ --manager-user=$MYSQL_MANAGER_USER \
--manager-password=$MYSQL_MANAGER_PW \
--manager-port=$MYSQL_MANAGER_PORT \
--manager-wait-timeout=$START_WAIT_TIMEOUT"
@@ -542,6 +560,9 @@ start_manager()
stop_manager()
{
+ if [ $USE_MANAGER = 0 ] ; then
+ return
+ fi
$MYSQL_MANAGER_CLIENT $MANAGER_QUIET_OPT -u$MYSQL_MANAGER_USER \
-p$MYSQL_MANAGER_PW -P $MYSQL_MANAGER_PORT <<EOF
shutdown
@@ -552,6 +573,11 @@ manager_launch()
{
ident=$1
shift
+ if [ $USE_MANAGER = 0 ] ; then
+ $@ >$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 $@
@@ -567,6 +593,11 @@ manager_term()
{
ident=$1
shift
+ if [ $USE_MANAGER = 0 ] ; then
+ $MYSQLADMIN --no-defaults -uroot --socket=$MYSQL_TMP_DIR/$ident.sock -O \
+ connect_timeout=5 shutdown >/dev/null 2>&1
+ return
+ fi
$MYSQL_MANAGER_CLIENT $MANAGER_QUIET_OPT --user=$MYSQL_MANAGER_USER \
--password=$MYSQL_MANAGER_PW --port=$MYSQL_MANAGER_PORT <<EOF
stop_exec $ident $STOP_WAIT_TIMEOUT
@@ -593,7 +624,7 @@ start_master()
then
master_args="--no-defaults --log-bin=$MYSQL_TEST_DIR/var/log/master-bin \
--server-id=1 --rpl-recovery-rank=1 \
- --basedir=$MY_BASEDIR \
+ --basedir=$MY_BASEDIR --init-rpl-role=master \
--port=$MASTER_MYPORT \
--exit-info=256 \
--datadir=$MASTER_MYDDIR \
@@ -610,7 +641,7 @@ start_master()
else
master_args="--no-defaults --log-bin=$MYSQL_TEST_DIR/var/log/master-bin \
--server-id=1 --rpl-recovery-rank=1 \
- --basedir=$MY_BASEDIR \
+ --basedir=$MY_BASEDIR --init-rpl-role=master \
--port=$MASTER_MYPORT \
--datadir=$MASTER_MYDDIR \
--pid-file=$MASTER_MYPID \
@@ -647,10 +678,33 @@ start_master()
start_slave()
{
[ x$SKIP_SLAVE = x1 ] && return
- [ x$SLAVE_RUNNING = 1 ] && return
-
+ eval "this_slave_running=\$SLAVE$1_RUNNING"
+ [ x$this_slave_running = 1 ] && return
+ #when testing fail-safe replication, we will have more than one slave
+ #in this case, we start secondary slaves with an argument
+ slave_ident="slave$1"
+ if [ -n "$1" ] ;
+ then
+ slave_server_id=`$EXPR 2 + $1`
+ slave_rpl_rank=$slave_server_id
+ slave_port=`expr $SLAVE_MYPORT + $1`
+ slave_log="$SLAVE_MYLOG.$1"
+ slave_err="$SLAVE_MYERR.$1"
+ slave_datadir="var/$slave_ident-data/"
+ slave_pid="$MYRUN_DIR/mysqld-$slave_ident.pid"
+ slave_sock="$SLAVE_MYSOCK-$1"
+ else
+ slave_server_id=2
+ slave_rpl_rank=2
+ slave_port=$SLAVE_MYPORT
+ slave_log=$SLAVE_MYLOG
+ slave_err=$SLAVE_MYERR
+ slave_datadir=$SLAVE_MYDDIR
+ slave_pid=$SLAVE_MYPID
+ slave_sock="$SLAVE_MYSOCK"
+ fi
# Remove stale binary logs
- $RM -f $MYSQL_TEST_DIR/var/log/slave-bin.*
+ $RM -f $MYSQL_TEST_DIR/var/log/$slave_ident-bin.*
#run slave initialization shell script if one exists
if [ -f "$slave_init_script" ] ;
@@ -664,51 +718,51 @@ start_slave()
--master-host=127.0.0.1 \
--master-password= \
--master-port=$MASTER_MYPORT \
- --server-id=2 --rpl-recovery-rank=2"
+ --server-id=$slave_server_id --rpl-recovery-rank=$slave_rpl_rank"
else
master_info=$SLAVE_MASTER_INFO
fi
- $RM -f $SLAVE_MYDDIR/log.*
+ $RM -f $slave_datadir/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_ident-bin \
--log-slave-updates \
- --log=$SLAVE_MYLOG \
+ --log=$slave_log \
--basedir=$MY_BASEDIR \
- --datadir=$SLAVE_MYDDIR \
- --pid-file=$SLAVE_MYPID \
- --port=$SLAVE_MYPORT \
- --socket=$SLAVE_MYSOCK \
+ --datadir=$slave_datadir \
+ --pid-file=$slave_pid \
+ --port=$slave_port \
+ --socket=$slave_sock \
--character-sets-dir=$CHARSETSDIR \
--default-character-set=$CHARACTER_SET \
- --core \
+ --core --init-rpl-role=slave \
--tmpdir=$MYSQL_TMP_DIR \
--language=$LANGUAGE \
--skip-innodb --skip-slave-start \
--slave-load-tmpdir=$SLAVE_LOAD_TMPDIR \
--report-host=127.0.0.1 --report-user=root \
- --report-port=$SLAVE_MYPORT \
+ --report-port=$slave_port \
--master-retry-count=5 \
$SMALL_SERVER \
$EXTRA_SLAVE_OPT $EXTRA_SLAVE_MYSQLD_OPT"
- CUR_MYERR=$SLAVE_MYERR
- CUR_MYSOCK=$SLAVE_MYSOCK
+ CUR_MYERR=$slave_err
+ CUR_MYSOCK=$slave_sock
if [ x$DO_DDD = x1 ]
then
$ECHO "set args $master_args" > $GDB_SLAVE_INIT
- manager_launch slave ddd -display $DISPLAY --debugger \
+ manager_launch $slave_ident 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
- manager_launch slave $XTERM -display $DISPLAY -title "Slave" -e gdb -x \
+ manager_launch $slave_ident $XTERM -display $DISPLAY -title "Slave" -e gdb -x \
$GDB_SLAVE_INIT $SLAVE_MYSQLD
else
- manager_launch slave $SLAVE_MYSQLD $slave_args
+ manager_launch $slave_ident $SLAVE_MYSQLD $slave_args
fi
- SLAVE_RUNNING=1
+ eval "SLAVE$1_RUNNING=1"
}
mysql_start () {
@@ -721,23 +775,31 @@ mysql_start () {
stop_slave ()
{
- if [ x$SLAVE_RUNNING = x1 ]
+ eval "this_slave_running=\$SLAVE$1_RUNNING"
+ slave_ident="slave$1"
+ if [ -n "$1" ] ;
then
- manager_term slave
- if [ $? != 0 ] && [ -f $SLAVE_MYPID ]
+ slave_pid="$MYRUN_DIR/mysqld-$slave_ident.pid"
+ else
+ slave_pid=$SLAVE_MYPID
+ fi
+ if [ x$this_slave_running = x1 ]
+ then
+ manager_term $slave_ident
+ if [ $? != 0 ] && [ -f $slave_pid ]
then # try harder!
$ECHO "slave not cooperating with mysqladmin, will try manual kill"
- kill `$CAT $SLAVE_MYPID`
+ kill `$CAT $slave_pid`
sleep $SLEEP_TIME
if [ -f $SLAVE_MYPID ] ; then
$ECHO "slave refused to die. Sending SIGKILL"
- kill -9 `$CAT $SLAVE_MYPID`
- $RM -f $SLAVE_MYPID
+ kill -9 `$CAT $slave_pid`
+ $RM -f $slave_pid
else
$ECHO "slave responded to SIGTERM "
fi
fi
- SLAVE_RUNNING=0
+ eval "SLAVE$1_RUNNING=0"
fi
}
@@ -771,6 +833,8 @@ mysql_stop ()
stop_master
$ECHO "Master shutdown finished"
stop_slave
+ stop_slave 1
+ stop_slave 2
$ECHO "Slave shutdown finished"
return 1
@@ -800,6 +864,10 @@ 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 [ $USE_MANAGER = 1 ] ; then
+ many_slaves=`$EXPR \( $tname : rpl_failsafe \) != 0`
+ fi
+
if [ -n "$SKIP_TEST" ] ; then
SKIP_THIS_TEST=`$EXPR \( $tname : "$SKIP_TEST" \) != 0`
if [ x$SKIP_THIS_TEST = x1 ] ;
@@ -874,6 +942,10 @@ run_testcase ()
stop_slave
start_slave
fi
+ if [ x$many_slaves = x1 ]; then
+ start_slave 1
+ start_slave 2
+ fi
fi
cd $MYSQL_TEST_DIR
@@ -906,7 +978,12 @@ run_testcase ()
timestr="$USERT $SYST $REALT"
pname=`$ECHO "$tname "|$CUT -c 1-24`
RES="$pname $timestr"
-
+
+ if [ x$many_slaves = x1 ] ; then
+ stop_slave 1
+ stop_slave 2
+ fi
+
if [ $res = 0 ]; then
total_inc
pass_inc
@@ -963,7 +1040,6 @@ 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
diff --git a/mysql-test/r/innodb.result b/mysql-test/r/innodb.result
index 596edb84705..20874981840 100644
--- a/mysql-test/r/innodb.result
+++ b/mysql-test/r/innodb.result
@@ -169,8 +169,8 @@ test.t1 optimize error The handler for the table doesn't support check/repair
show keys from t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Comment
t1 0 PRIMARY 1 id A 2 NULL NULL
-t1 1 parent_id 1 parent_id A 4 NULL NULL
-t1 1 level 1 level A 4 NULL NULL
+t1 1 parent_id 1 parent_id A 2 NULL NULL
+t1 1 level 1 level A 2 NULL NULL
drop table t1;
CREATE TABLE t1 (
gesuchnr int(11) DEFAULT '0' NOT NULL,
@@ -211,7 +211,7 @@ Table Op Msg_type Msg_text
test.t1 analyze error The handler for the table doesn't support check/repair
show keys from t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Comment
-t1 1 skr 1 a A 3 NULL NULL
+t1 1 skr 1 a A 1 NULL NULL
drop table t1;
create table t1 (a int,b varchar(20),key(a)) type=innodb;
insert into t1 values (1,""), (2,"testing");
diff --git a/mysql-test/r/rpl_failsafe.result b/mysql-test/r/rpl_failsafe.result
index 789795c0343..14b749fada9 100644
--- a/mysql-test/r/rpl_failsafe.result
+++ b/mysql-test/r/rpl_failsafe.result
@@ -6,6 +6,28 @@ slave start;
show variables like 'rpl_recovery_rank';
Variable_name Value
rpl_recovery_rank 1
+show status like 'Rpl_status';
+Variable_name Value
+Rpl_status AUTH_MASTER
+create table t1(n int);
+drop table t1;
show variables like 'rpl_recovery_rank';
Variable_name Value
rpl_recovery_rank 2
+show status like 'Rpl_status';
+Variable_name Value
+Rpl_status ACTIVE_SLAVE
+slave start;
+show variables like 'rpl_recovery_rank';
+Variable_name Value
+rpl_recovery_rank 3
+show status like 'Rpl_status';
+Variable_name Value
+Rpl_status ACTIVE_SLAVE
+slave start;
+show variables like 'rpl_recovery_rank';
+Variable_name Value
+rpl_recovery_rank 4
+show status like 'Rpl_status';
+Variable_name Value
+Rpl_status ACTIVE_SLAVE
diff --git a/mysql-test/t/rpl000018.test b/mysql-test/t/rpl000018.test
index 621147b7c3e..30d601bb375 100644
--- a/mysql-test/t/rpl000018.test
+++ b/mysql-test/t/rpl000018.test
@@ -1,3 +1,4 @@
+require_manager;
connect (master,localhost,root,,test,0,master.sock);
connect (slave,localhost,root,,test,0,slave.sock);
server_stop master;
diff --git a/mysql-test/t/rpl_failsafe.test b/mysql-test/t/rpl_failsafe.test
index b8ef5b3f365..866efbce5bf 100644
--- a/mysql-test/t/rpl_failsafe.test
+++ b/mysql-test/t/rpl_failsafe.test
@@ -1,5 +1,24 @@
+require_manager;
source include/master-slave.inc;
+connect (slave_sec,localhost,root,,test,0,slave.sock-1);
+connect (slave_ter,localhost,root,,test,0,slave.sock-2);
connection master;
show variables like 'rpl_recovery_rank';
+show status like 'Rpl_status';
+create table t1(n int);
+drop table t1;
+save_master_pos;
connection slave;
+sync_with_master;
show variables like 'rpl_recovery_rank';
+show status like 'Rpl_status';
+connection slave_sec;
+slave start;
+sync_with_master;
+show variables like 'rpl_recovery_rank';
+show status like 'Rpl_status';
+connection slave_ter;
+slave start;
+sync_with_master;
+show variables like 'rpl_recovery_rank';
+show status like 'Rpl_status';