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

fixed warning in sql_class.cc

added gdb support, mysqld options per test, and other cool stuff to mysql-test-run
added --replicate-wild-do/ignore-table
more test cases
parent f8d9c2ad
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -246,3 +246,31 @@ mysql-test/var/slave-data/test/x.frm
mysql-test/var/slave-data/test/x.MYD
mysql-test/var/slave-data/test/x.MYI
PENDING/2000-11-17.01
BitKeeper/tmp/gone
mysql-test/r/3.23/rpl
mysql-test/r/3.23/rpl.reject
mysql-test/var/lib/bar/bar.frm
mysql-test/var/lib/bar/bar.MYD
mysql-test/var/lib/bar/bar.MYI
mysql-test/var/lib/foo/foo.frm
mysql-test/var/lib/foo/foo.MYD
mysql-test/var/lib/foo/foo.MYI
mysql-test/var/lib/test/bar.frm
mysql-test/var/lib/test/bar.MYD
mysql-test/var/lib/test/bar.MYI
mysql-test/var/lib/test/choo.frm
mysql-test/var/lib/test/choo.MYD
mysql-test/var/lib/test/choo.MYI
mysql-test/var/slave-data/bar/bar.frm
mysql-test/var/slave-data/bar/bar.MYD
mysql-test/var/slave-data/bar/bar.MYI
mysql-test/var/slave-data/foo/foo.frm
mysql-test/var/slave-data/foo/foo.MYD
mysql-test/var/slave-data/foo/foo.MYI
mysql-test/var/slave-data/test/bar.frm
mysql-test/var/slave-data/test/bar.MYD
mysql-test/var/slave-data/test/bar.MYI
mysql-test/var/slave-data/test/choo.frm
mysql-test/var/slave-data/test/choo.MYD
mysql-test/var/slave-data/test/choo.MYI
mysql-test/var/tmp/README
+4 −3
Original line number Diff line number Diff line
@@ -95,7 +95,7 @@ int open_file(const char* name)
  if(*cur_file && ++cur_file == file_stack_end)
    die("Source directives are nesting too deep");
  if(!(*cur_file = fopen(name, "r")))
    die("Could not read '%s'\n", name);
    die("Could not read '%s': errno %d\n", name, errno);
  
  return 0;
}
@@ -593,8 +593,9 @@ void reject_dump(char* record_file, char* buf, int size)
  FILE* freject;
  
  p = reject_file;
  p = safe_str_append(p, record_file, size);
  p = safe_str_append(p, (char*)".reject", reject_file + size - p);
  p = safe_str_append(p, record_file, sizeof(reject_file));
  p = safe_str_append(p, (char*)".reject", reject_file - p +
		      sizeof(reject_file));

  if(!(freject = fopen(reject_file, "w")))
    die("Could not open reject file %s, error %d", reject_file, errno);
+175 −58
Original line number Diff line number Diff line
@@ -86,8 +86,21 @@ MYSQL_TEST="$BASEDIR/client/mysqltest"
MYSQLADMIN="$BASEDIR/client/mysqladmin"
MYSQL_TEST="$MYSQL_TEST --socket=$MASTER_MYSOCK --database=$DB --user=$DBUSER --password=$DBPASSWD --silent"
INSTALL_DB="$MYBIN/mysql-test_install_db"
GDB_MASTER_INIT=/tmp/gdbinit.master
GDB_SLAVE_INIT=/tmp/gdbinit.slave

if [ "$1" = "-gcov" ];
then
  DO_GCOV=1
  shift 1
fi  

if [ "$1" = "-gdb" ];
then
  DO_GDB=1
  shift 1
fi  

[ "$1" = "-gcov" ] && DO_GCOV=1

#++
# Terminal Modifications
@@ -131,6 +144,12 @@ echo_pass () {
  return 0
}

prompt_user ()
{
 echo $1
 read
}

echo_fail () {
  $MOVE_TO_COL && $SETCOLOR_NORMAL
  $ECHO -n "[  "
@@ -167,12 +186,12 @@ report_stats () {
    else
	$ECHO -n "Failed ${TOT_FAIL}/${TOT_TEST} tests, "

	xten=`$EXPR $TOT_PASS \* 10000`   #
	raw=`$EXPR $xten / $TOT_TEST`     # My God
	raw=`$PRINTF %.4d $raw`           # This is such a ...
	whole=`$PRINTF %.2s $raw`         # Narttu!!
	xwhole=`$EXPR $whole \* 100`      # Hynda!!!
	deci=`$EXPR $raw - $xwhole`       #
	xten=`$EXPR $TOT_PASS \* 10000`   
	raw=`$EXPR $xten / $TOT_TEST`     
	raw=`$PRINTF %.4d $raw`           
	whole=`$PRINTF %.2s $raw`         
	xwhole=`$EXPR $whole \* 100`      
	deci=`$EXPR $raw - $xwhole`       

	$ECHO "${whole}.${deci}% successful."
    fi
@@ -232,11 +251,11 @@ gcov_collect () {
    $ECHO "gcov slave info in $GCOV_SLAVE_MSG, errors in $GCOV_SLAVE_ERR"
}

mysql_start () {

start_master()
{
    cd $BASEDIR # for gcov
    #start master
    $MYSQLD --no-defaults --log-bin \
    master_args="--no-defaults --log-bin \
    	    --server-id=1 \
            --basedir=$CWD \
	    --port=$MASTER_MYPORT \
@@ -245,13 +264,24 @@ mysql_start () {
	    --pid-file=$MASTER_MYPID \
	    --socket=$MASTER_MYSOCK \
            --log=$MASTER_MYLOG \
	    --language=english  >> $MASTER_MYERR 2>&1 &
    #allow master to get setteled so slave can connect right away without error
    sleep 1
    #start slave
    $MYSQLD --no-defaults --server-id=2 \
	    --language=english $EXTRA_MASTER_OPT"
    if [ x$DO_GDB = x1 ]
    then
      echo "set args $master_args" > $GDB_MASTER_INIT
      xterm -title "Master" -e gdb -x $GDB_MASTER_INIT $MYSQLD &
      prompt_user "Hit enter to continue after you've started the master"
    else	    
      $MYSQLD $master_args  >> $MASTER_MYERR 2>&1 &
    fi  
  MASTER_RUNNING=1
}

start_slave()
{
    [ -d $GCOV_SLAVE_SRC ] && cd $GCOV_SLAVE_SRC
    slave_args="--no-defaults --server-id=2 \
	    --master-user=root \
	    --master-connect-retry=5 \
	    --master-connect-retry=1 \
	    --master-host=127.0.0.1 \
	    --master-port=$MASTER_MYPORT \
	    --core-file \
@@ -261,21 +291,53 @@ mysql_start () {
	    --port=$SLAVE_MYPORT \
	    --socket=$SLAVE_MYSOCK \
            --log=$SLAVE_MYLOG \
            --language=english  >> $SLAVE_MYERR 2>&1 &
            --language=english $EXTRA_SLAVE_OPT"
    if [ x$DO_GDB = x1 ]
    then
      echo "set args $slave_args" > $GDB_SLAVE_INIT
      xterm -title "Slave" -e gdb -x $GDB_SLAVE_INIT $MYSQLD &
      prompt_user "Hit enter to continue after you've started the slave"
    else	    
      $MYSQLD $slave_args  >> $SLAVE_MYERR 2>&1 &
    fi
    SLAVE_RUNNING=1
}

mysql_start () {
    start_master
    start_slave
    cd $CWD
    return 1
}

mysql_stop () {
stop_slave ()
{
  if [ x$SLAVE_RUNNING = x1 ]
  then
    $MYSQLADMIN --socket=$SLAVE_MYSOCK -u root shutdown
    SLAVE_RUNNING=0
  fi  
}

stop_master ()
{
  if [ x$MASTER_RUNNING = x1 ]
  then
    $MYSQLADMIN --socket=$MASTER_MYSOCK -u root shutdown
    $MYSQLADMIN --socket=$SLAVE_MYSOCK -u root shutdown
    MASTER_RUNNING=0
  fi
}

mysql_stop ()
{
 stop_master
 stop_slave
 return 1
}

mysql_restart () {

    return 1
    mysql_stop
    res=$?
    [ $res != 1 ] && echo_notok && error "Stopping mysqld"
@@ -293,35 +355,46 @@ mysql_loadstd () {
    return 1
}

[ "$DO_GCOV" -a ! -x "$GCOV" ] && error "No gcov found"

[ "$DO_GCOV" ] && gcov_prepare 
run_testcase ()
{
 tf=$1
 tname=`$BASENAME $tf`
 tname=`$ECHO $tname | $CUT -d . -f 1`
 master_opt_file=$TESTDIR/$tname-master.opt
 slave_opt_file=$TESTDIR/$tname-slave.opt

 
mysql_install_db

$SETCOLOR_NORMAL && $ECHO -n "Starting mysqld for Testing"
mysql_start
res=$?
res=1
[ $res != 1 ] && echo_notok && error "Starting mysqld"
[ $res = 1 ] && echo_ok
 if [ -f $master_opt_file ] ;
 then
  EXTRA_MASTER_OPT=`cat $master_opt_file`
  stop_master
  start_master
 else
  if [ ! -z EXTRA_MASTER_OPT ] || [ x$MASTER_RUNNING != x1 ] ;
  then
    EXTRA_MASTER_OPT=""
    stop_master
    start_master
  fi  
 fi

$SETCOLOR_NORMAL && $ECHO -n "Loading Standard Test Database"
mysql_loadstd
res=$?
[ $res != 1 ] && echo_notok && error "Loading STD"
[ $res = 1 ] && echo_ok
 if [ -f $slave_opt_file ] ;
 then
  EXTRA_SLAVE_OPT=`cat $slave_opt_file`
  stop_slave
  start_slave
 else
  if [ ! -z EXTRA_SLAVE_OPT ] || [ x$SLAVE_RUNNING != x1 ] ;
  then
    EXTRA_SLAVE_OPT=""
    stop_slave
    start_slave
    
$SETCOLOR_NORMAL && $ECHO -n "Starting Tests for MySQL $TESTVER Series"
$SETCOLOR_SUCCESS && echo_ok
  fi  
 fi

$ECHO
$ECHO " TEST			USER	SYSTEM	ELAPSED		     RESULT"
$ECHO $DASH72
 cd $CWD
  
for tf in $TESTDIR/*.$TESTSUFFIX
do
 if [ -f $tf ] ; then
    mytime=`$TIME -p $MYSQL_TEST < $tf 2> $TIMEFILE`
    res=$?
@@ -339,9 +412,7 @@ do
    fi

	timestr="$USERT	$SYST	$REALT"
	tf=`$BASENAME $tf`
	tf=`$ECHO $tf | $CUT -d . -f 1`
	$SETCOLOR_NORMAL && $ECHO -n "$tf		$timestr"
	$SETCOLOR_NORMAL && $ECHO -n "$tname		$timestr"

	[ $res != 1 ] && pass_inc && echo_pass
	[ $res = 1 ] && fail_inc && echo_fail
@@ -361,7 +432,50 @@ do
	$ECHO
    fi
  fi  
 
}


[ "$DO_GCOV" -a ! -x "$GCOV" ] && error "No gcov found"

[ "$DO_GCOV" ] && gcov_prepare 


mysql_install_db

if [ -z $DO_GDB ]
then
 $SETCOLOR_NORMAL && $ECHO -n "Starting mysqld for Testing" 
 mysql_start
 res=$?
 res=1
 [ $res != 1 ] && echo_notok && error "Starting mysqld"
 [ $res = 1 ] && echo_ok
fi

#$SETCOLOR_NORMAL && $ECHO -n "Loading Standard Test Database"
#mysql_loadstd
#res=$?
#[ $res != 1 ] && echo_notok && error "Loading STD"
#[ $res = 1 ] && echo_ok

$SETCOLOR_NORMAL && $ECHO -n "Starting Tests for MySQL $TESTVER Series"
$SETCOLOR_SUCCESS && echo_ok

$ECHO
$ECHO " TEST			USER	SYSTEM	ELAPSED		     RESULT"
$ECHO $DASH72

if [ -z $1 ] ;
then
    for tf in $TESTDIR/*.$TESTSUFFIX
    do
     run_testcase $tf
    done
else
 tf=$TESTDIR/$1.$TESTSUFFIX
 run_testcase $tf
fi

$ECHO $DASH72
$ECHO
@@ -369,12 +483,15 @@ $SETCOLOR_NORMAL && $ECHO -n "Ending Tests for MySQL $TESTVER Series"
$SETCOLOR_SUCCESS && echo_ok
$RM $TIMEFILE

if [ -z $DO_GDB ] ;
then
    $SETCOLOR_NORMAL && $ECHO -n "Shutdown mysqld"
    mysql_stop
    res=$?
    res=1
    [ $res != 1 ] && echo_notok && error "Shutdown mysqld"
    [ $res = 1 ] && echo_ok
fi

$SETCOLOR_NORMAL

+2 −0
Original line number Diff line number Diff line
n	m	
4	15	
+2 −0
Original line number Diff line number Diff line
n	m	k	
4	15	55	
Loading