Commit d10b81bf authored by sasha@mysql.sashanet.com's avatar sasha@mysql.sashanet.com
Browse files

fixes for mysql-test to run without manager

a bit more work on failsafe replication
parent 24b9e879
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -181,7 +181,7 @@ Q_PING, Q_EVAL,
Q_RPL_PROBE,        Q_ENABLE_RPL_PARSE,
Q_DISABLE_RPL_PARSE, Q_EVAL_RESULT,
Q_ENABLE_QUERY_LOG, Q_DISABLE_QUERY_LOG,
Q_SERVER_START, Q_SERVER_STOP,
Q_SERVER_START, Q_SERVER_STOP,Q_REQUIRE_MANAGER,
Q_UNKNOWN,                             /* Unknown command.   */
Q_COMMENT,                             /* Comments, ignored. */
Q_COMMENT_WITH_COMMAND
@@ -215,6 +215,7 @@ const char *command_names[] = {
  "disable_rpl_parse", "eval_result",
  "enable_query_log", "disable_query_log",
  "server_start", "server_stop",
  "require_manager",
  0
};

@@ -640,6 +641,13 @@ int open_file(const char* name)
  return 0;
}

int do_require_manager(struct st_query* __attribute__((unused)) q)
{
  if (!manager)
    abort_not_supported_test();
  return 0;
}

#ifndef EMBEDDED_LIBRARY
int do_server_start(struct st_query* q)
{
@@ -1930,7 +1938,9 @@ int run_query(MYSQL* mysql, struct st_query* q, int flags)
    ds= &ds_res;
  
  if ((flags & QUERY_SEND) && mysql_send_query(mysql, query, query_len))
    die("At line %u: unable to send query '%s'", start_lineno, query);
    die("At line %u: unable to send query '%s'(mysql_errno=%d,errno=%d)",
	start_lineno, query,
	mysql_errno(mysql), errno);
  if ((flags & QUERY_SEND) && !disable_query_log)
  {
    dynstr_append_mem(ds,query,query_len);
@@ -2236,6 +2246,7 @@ int main(int argc, char** argv)
      case Q_DISABLE_QUERY_LOG: disable_query_log=1; break;
      case Q_SOURCE: do_source(q); break;
      case Q_SLEEP: do_sleep(q); break;
      case Q_REQUIRE_MANAGER: do_require_manager(q); break;
#ifndef EMBEDDED_LIBRARY	
      case Q_SERVER_START: do_server_start(q); break;
      case Q_SERVER_STOP: do_server_stop(q); break;
+33 −2
Original line number Diff line number Diff line
@@ -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 <<EOF
shutdown
@@ -560,6 +573,11 @@ manager_launch()
{
  ident=$1
  shift
  if [ -n "$NO_MANAGER" ] ; 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 $@
@@ -575,6 +593,11 @@ manager_term()
{
  ident=$1
  shift
  if [ -n "$NO_MANAGER" ] ; 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
@@ -841,7 +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 [ -z "$NO_MANAGER" ] ; 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 ] ;
@@ -953,6 +979,11 @@ run_testcase ()
    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
+7 −3
Original line number Diff line number Diff line
@@ -9,21 +9,25 @@ 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	IDLE_SLAVE
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	IDLE_SLAVE
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	IDLE_SLAVE
Rpl_status	ACTIVE_SLAVE
+1 −0
Original line number Diff line number Diff line
require_manager;
connect (master,localhost,root,,test,0,master.sock);
connect (slave,localhost,root,,test,0,slave.sock);
server_stop master;
+9 −0
Original line number Diff line number Diff line
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';
Loading