From 8b209415ffbbcb1dfad4bbeb9893ac8a2d6f6d5c Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 9 Oct 2001 16:43:05 -0600 Subject: support for three slaves in mysql-test mysql-test/mysql-test-run.sh: start three slaves in failover test mysql-test/r/rpl_failsafe.result: check two more slaves mysql-test/t/rpl_failsafe.test: check two more slaves --- mysql-test/mysql-test-run.sh | 97 +++++++++++++++++++++++++++++----------- mysql-test/r/rpl_failsafe.result | 6 +++ mysql-test/t/rpl_failsafe.test | 6 +++ 3 files changed, 83 insertions(+), 26 deletions(-) (limited to 'mysql-test') diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index 7ee629e826e..733dfebd450 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -124,7 +124,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 @@ -473,6 +473,13 @@ mysql_install_db () { error "Could not install slave test DBs" exit 1 fi + + for slave_num in 1 2 ; + do + 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 @@ -647,10 +654,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,22 +694,22 @@ 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 \ @@ -688,27 +718,27 @@ start_slave() --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 +751,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 + slave_pid="$MYRUN_DIR/mysqld-$slave_ident.pid" + else + slave_pid=$SLAVE_MYPID + fi + if [ x$this_slave_running = x1 ] then - manager_term slave - if [ $? != 0 ] && [ -f $SLAVE_MYPID ] + 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 +809,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 +840,7 @@ 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` + many_slaves=`$EXPR \( $tname : rpl_failsafe \) != 0` if [ -n "$SKIP_TEST" ] ; then SKIP_THIS_TEST=`$EXPR \( $tname : "$SKIP_TEST" \) != 0` if [ x$SKIP_THIS_TEST = x1 ] ; @@ -874,6 +915,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 diff --git a/mysql-test/r/rpl_failsafe.result b/mysql-test/r/rpl_failsafe.result index 789795c0343..3f36bf8b83a 100644 --- a/mysql-test/r/rpl_failsafe.result +++ b/mysql-test/r/rpl_failsafe.result @@ -9,3 +9,9 @@ rpl_recovery_rank 1 show variables like 'rpl_recovery_rank'; Variable_name Value rpl_recovery_rank 2 +show variables like 'rpl_recovery_rank'; +Variable_name Value +rpl_recovery_rank 3 +show variables like 'rpl_recovery_rank'; +Variable_name Value +rpl_recovery_rank 4 diff --git a/mysql-test/t/rpl_failsafe.test b/mysql-test/t/rpl_failsafe.test index b8ef5b3f365..75f1c9ee3b2 100644 --- a/mysql-test/t/rpl_failsafe.test +++ b/mysql-test/t/rpl_failsafe.test @@ -1,5 +1,11 @@ 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'; connection slave; show variables like 'rpl_recovery_rank'; +connection slave_sec; +show variables like 'rpl_recovery_rank'; +connection slave_ter; +show variables like 'rpl_recovery_rank'; -- cgit v1.2.1 From 6b648e4b1344391659b7be10c45c7fb71cb8e17d Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 10 Oct 2001 15:36:35 -0600 Subject: got the last changeset to compile/run mysqltest can run without connecting to the manager for tests that do not require manager operations client/mysqltest.c: make mysqltest work without having to connect to the manager mysql-test/mysql-test-run.sh: init-rpl-role option to servers pass manager-host to mysqltest mysql-test/r/rpl_failsafe.result: updated result mysql-test/t/rpl_failsafe.test: check for Rpl_status sql/mysqld.cc: fixed bad merge sql/repl_failsafe.cc: fixed bug sql/repl_failsafe.h: fixed compile error sql/sql_show.cc: fixed compile error --- mysql-test/mysql-test-run.sh | 9 +++++---- mysql-test/r/rpl_failsafe.result | 12 ++++++++++++ mysql-test/t/rpl_failsafe.test | 4 ++++ 3 files changed, 21 insertions(+), 4 deletions(-) (limited to 'mysql-test') diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index 733dfebd450..8f824d82a08 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -538,7 +538,8 @@ start_manager() $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" @@ -600,7 +601,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 \ @@ -617,7 +618,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 \ @@ -712,7 +713,7 @@ start_slave() --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 \ diff --git a/mysql-test/r/rpl_failsafe.result b/mysql-test/r/rpl_failsafe.result index 3f36bf8b83a..596d6ef7191 100644 --- a/mysql-test/r/rpl_failsafe.result +++ b/mysql-test/r/rpl_failsafe.result @@ -6,12 +6,24 @@ 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 show variables like 'rpl_recovery_rank'; Variable_name Value rpl_recovery_rank 2 +show status like 'Rpl_status'; +Variable_name Value +Rpl_status IDLE_SLAVE show variables like 'rpl_recovery_rank'; Variable_name Value rpl_recovery_rank 3 +show status like 'Rpl_status'; +Variable_name Value +Rpl_status IDLE_SLAVE show variables like 'rpl_recovery_rank'; Variable_name Value rpl_recovery_rank 4 +show status like 'Rpl_status'; +Variable_name Value +Rpl_status IDLE_SLAVE diff --git a/mysql-test/t/rpl_failsafe.test b/mysql-test/t/rpl_failsafe.test index 75f1c9ee3b2..f93dbf4b118 100644 --- a/mysql-test/t/rpl_failsafe.test +++ b/mysql-test/t/rpl_failsafe.test @@ -3,9 +3,13 @@ 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'; connection slave; show variables like 'rpl_recovery_rank'; +show status like 'Rpl_status'; connection slave_sec; show variables like 'rpl_recovery_rank'; +show status like 'Rpl_status'; connection slave_ter; show variables like 'rpl_recovery_rank'; +show status like 'Rpl_status'; -- cgit v1.2.1 From 7b4549e6a094d6a77fdcb73820057a7a5e1310f6 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 11 Oct 2001 05:37:05 +0300 Subject: Added missing files in libmysqld and the RPM spec file Docs/manual.texi: Added info to foreign key section. BitKeeper/etc/ignore: Added libmysqld/repl_failsafe.cc to the ignore list libmysqld/Makefile.am: Added missing files mysql-test/r/innodb.result: Fixed explain results after new innodb optimizations support-files/mysql.spec.sh: Added missing files --- mysql-test/r/innodb.result | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'mysql-test') 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"); -- cgit v1.2.1 From 56303b0383da01a94293927c209a962effd930d0 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 11 Oct 2001 13:54:06 -0600 Subject: fixes for mysql-test to run without manager a bit more work on failsafe replication client/mysqltest.c: added require_manager support mysql-test/mysql-test-run.sh: added --no-manager mysql-test/r/rpl_failsafe.result: updated result mysql-test/t/rpl000018.test: must have manager mysql-test/t/rpl_failsafe.test: must have manager sql/repl_failsafe.cc: more work sql/repl_failsafe.h: more work sql/slave.cc: update replication status for fail-safe replication on different events --- mysql-test/mysql-test-run.sh | 35 +++++++++++++++++++++++++++++++++-- mysql-test/r/rpl_failsafe.result | 10 +++++++--- mysql-test/t/rpl000018.test | 1 + mysql-test/t/rpl_failsafe.test | 9 +++++++++ 4 files changed, 50 insertions(+), 5 deletions(-) (limited to 'mysql-test') diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index 8f824d82a08..b601abce1fc 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -12,6 +12,7 @@ DB=test DBPASSWD= VERBOSE="" +NO_MANAGER="" TZ=GMT-3; export TZ # for UNIX_TIMESTAMP tests to work #++ @@ -162,6 +163,9 @@ 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) + NO_MANAGER=1 + ;; --skip-innobase) EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT --skip-innobase" EXTRA_SLAVE_MYSQLD_OPT="$EXTRA_SLAVE_MYSQLD_OPT --skip-innobase" ;; @@ -476,6 +480,7 @@ mysql_install_db () { 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 @@ -533,6 +538,11 @@ abort_if_failed() start_manager() { + if [ -n "$NO_MANAGER" ] ; then + echo "Manager disabled, skipping manager start. Tests requiring manager will\ + be skipped" + return + fi 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 \ @@ -550,6 +560,9 @@ start_manager() stop_manager() { + if [ -n "$NO_MANAGER" ] ; then + return + fi $MYSQL_MANAGER_CLIENT $MANAGER_QUIET_OPT -u$MYSQL_MANAGER_USER \ -p$MYSQL_MANAGER_PW -P $MYSQL_MANAGER_PORT <$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 </dev/null 2>&1 + return + fi $MYSQL_MANAGER_CLIENT $MANAGER_QUIET_OPT --user=$MYSQL_MANAGER_USER \ --password=$MYSQL_MANAGER_PW --port=$MYSQL_MANAGER_PORT < Date: Fri, 12 Oct 2001 00:41:31 +0300 Subject: Manual cleanups mysql-test/mysql-test-run.sh: Make it default to not use the MySQL manager (until next MySQL release) --- mysql-test/mysql-test-run.sh | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'mysql-test') diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index b601abce1fc..a7cbacc0aa8 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -12,7 +12,7 @@ DB=test DBPASSWD= VERBOSE="" -NO_MANAGER="" +USE_MANAGER=0 TZ=GMT-3; export TZ # for UNIX_TIMESTAMP tests to work #++ @@ -163,9 +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) - NO_MANAGER=1 - ;; + --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" ;; @@ -538,11 +537,12 @@ abort_if_failed() start_manager() { - if [ -n "$NO_MANAGER" ] ; then + 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 \ @@ -560,7 +560,7 @@ start_manager() stop_manager() { - if [ -n "$NO_MANAGER" ] ; then + if [ $USE_MANAGER = 0 ] ; then return fi $MYSQL_MANAGER_CLIENT $MANAGER_QUIET_OPT -u$MYSQL_MANAGER_USER \ @@ -573,7 +573,7 @@ manager_launch() { ident=$1 shift - if [ -n "$NO_MANAGER" ] ; then + if [ $USE_MANAGER = 0 ] ; then $@ >$CUR_MYERR 2>&1 & sleep 2 #hack return @@ -593,7 +593,7 @@ manager_term() { ident=$1 shift - if [ -n "$NO_MANAGER" ] ; then + 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 @@ -864,7 +864,7 @@ 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 [ -z "$NO_MANAGER" ] ; then + if [ $USE_MANAGER = 1 ] ; then many_slaves=`$EXPR \( $tname : rpl_failsafe \) != 0` fi @@ -1040,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 -- cgit v1.2.1