List:Commits« Previous MessageNext Message »
From:msvensson Date:March 13 2008 4:16pm
Subject:bk commit into 5.1 tree (msvensson:1.2573)
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of msvensson.  When msvensson does a push these changes
will be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2008-03-13 17:16:42+01:00, msvensson@stripped +6 -0
  Find ndb binaries
  Verbose SafeProcess.pm 

  mysql-test/lib/My/Find.pm@stripped, 2008-03-13 17:16:40+01:00, msvensson@stripped +20 -5
    Add possibility to use my_find_bin for a binary that is not required

  mysql-test/lib/My/SafeProcess.pm@stripped, 2008-03-13 17:16:40+01:00, msvensson@stripped +24 -29
    Add verbose printous that can be turned on
    Wait on process also if start_kill failed
    Turn verbose on for windows

  mysql-test/lib/My/SafeProcess/safe_kill_win.cc@stripped, 2008-03-13 17:16:40+01:00, msvensson@stripped +1 -1
    Extend sleep from 0 to 100

  mysql-test/lib/mtr_cases.pm@stripped, 2008-03-13 17:16:40+01:00, msvensson@stripped +0 -8
    Remove ndb_extra

  mysql-test/mysql-test-run.pl@stripped, 2008-03-13 17:16:39+01:00, msvensson@stripped +44 -81
    Cleanup how script find ndb binaries and paths
    Remove "executable_setup_failed" code, i.e either we have ndb support or we don't
    Remove ndb_extra_test, not used by any test. If there is a need for that, just 
    create a new suite

  mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test@stripped, 2008-03-13 17:16:40+01:00, msvensson@stripped +4 -4
    Extra checks should be for Last_IO_Errno

diff -Nrup a/mysql-test/lib/My/Find.pm b/mysql-test/lib/My/Find.pm
--- a/mysql-test/lib/My/Find.pm	2008-02-20 14:55:28 +01:00
+++ b/mysql-test/lib/My/Find.pm	2008-03-13 17:16:40 +01:00
@@ -26,12 +26,15 @@ use Carp;
 use My::Platform;
 
 use base qw(Exporter);
-our @EXPORT= qw(my_find_bin my_find_dir);
+our @EXPORT= qw(my_find_bin my_find_dir NOT_REQUIRED);
 
 our $vs_config_dir;
 
 my $bin_extension= ".exe" if IS_WINDOWS;
 
+# Helper function to be used for fourth parameter to find functions
+sub NOT_REQUIRED { return 0; }
+
 #
 # my_find_bin - find an executable with "name_1...name_n" in
 # paths "path_1...path_n" and return the full path
@@ -44,13 +47,21 @@ my $bin_extension= ".exe" if IS_WINDOWS;
 #                               ["client", "bin"],
 #                               "mysql");
 #
+#
+#    To check if something exists, use the required parameter
+#    set to 0, the function will return an empty string if the
+#    binary is not found
+#    my $mysql_exe= my_find_bin($basedir,
+#                               ["client", "bin"],
+#                               "mysql", 0);
+#
 # NOTE: The function honours MTR_VS_CONFIG environment variable
 #
 #
 sub my_find_bin {
-  my ($base, $paths, $names)= @_;
-  croak "usage: my_find_bin(<base>, <paths>, <names>)"
-    unless @_ == 3;
+  my ($base, $paths, $names, $required)= @_;
+  croak "usage: my_find_bin(<base>, <paths>, <names>, [<required>])"
+    unless @_ == 4 or @_ == 3;
 
   # -------------------------------------------------------
   # Find and return the first executable
@@ -58,6 +69,10 @@ sub my_find_bin {
   foreach my $path (my_find_paths($base, $paths, $names, $bin_extension)) {
     return $path if ( -x $path or (IS_WINDOWS and -f $path) );
   }
+  if (defined $required and $required == NOT_REQUIRED){
+    # Return empty string to indicate not found
+    return "";
+  }
   find_error($base, $paths, $names);
 }
 
@@ -79,7 +94,7 @@ sub my_find_bin {
 #
 #
 sub my_find_dir {
-  my ($base, $paths, $dirs)= @_;
+  my ($base, $paths, $dirs, $required)= @_;
   croak "usage: my_find_dir(<base>, <paths>[, <dirs>])"
     unless (@_ == 3 or @_ == 2);
 
diff -Nrup a/mysql-test/lib/My/SafeProcess/safe_kill_win.cc b/mysql-test/lib/My/SafeProcess/safe_kill_win.cc
--- a/mysql-test/lib/My/SafeProcess/safe_kill_win.cc	2008-03-10 16:00:34 +01:00
+++ b/mysql-test/lib/My/SafeProcess/safe_kill_win.cc	2008-03-13 17:16:40 +01:00
@@ -50,7 +50,7 @@ int main(int argc, const char** argv )
           OpenEvent(EVENT_MODIFY_STATE, FALSE, safe_process_name)) == NULL)
   {
     if (retry_open_event--)
-      Sleep(0); /* yield */
+      Sleep(100);
     else
     {
       fprintf(stderr, "Failed to open shutdown_event '%s', error: %d\n",
diff -Nrup a/mysql-test/lib/My/SafeProcess.pm b/mysql-test/lib/My/SafeProcess.pm
--- a/mysql-test/lib/My/SafeProcess.pm	2008-03-12 11:32:11 +01:00
+++ b/mysql-test/lib/My/SafeProcess.pm	2008-03-13 17:16:40 +01:00
@@ -59,6 +59,7 @@ use My::Find;
 use My::Platform;
 
 my %running;
+my $_verbose= IS_WINDOWS;
 
 END {
   # Kill any children still running
@@ -85,33 +86,17 @@ if (IS_WIN32PERL or IS_CYGWIN){
   # Use my_safe_process.exe
   my $exe= my_find_bin(".", ["lib/My/SafeProcess", "My/SafeProcess"],
 		       "my_safe_process");
-  die "Could not find my_safe_process" unless $exe;
   push(@safe_process_cmd, $exe);
 
   # Use my_safe_kill.exe
   $safe_kill= my_find_bin(".", "lib/My/SafeProcess", "my_safe_kill");
-  die "Could not find my_safe_kill" unless $safe_kill;
 }
 else
 {
-  my $use_safe_process_binary= 1;
-  if ($use_safe_process_binary) {
-    # Use my_safe_process
-    my $exe= my_find_bin(".", ["lib/My/SafeProcess", "My/SafeProcess"],
-			 "my_safe_process");
-    die "Could not find my_safe_process" unless $exe;
-    push(@safe_process_cmd, $exe);
-  }
-  else
-  {
-    # Use safe_process.pl
-    my $script=  "lib/My/SafeProcess/safe_process.pl";
-    $script= "../$script" unless -f $script;
-    die "Could not find safe_process.pl" unless -f $script;
-
-    # Call $script with Perl interpreter
-    push(@safe_process_cmd, $^X, $script);
-  }
+  # Use my_safe_process
+  my $exe= my_find_bin(".", ["lib/My/SafeProcess", "My/SafeProcess"],
+		       "my_safe_process");
+  push(@safe_process_cmd, $exe);
 }
 
 
@@ -248,14 +233,14 @@ sub timer {
 sub shutdown {
   my $shutdown_timeout= shift;
   my @processes= @_;
+  _verbose("shutdown, timeout: $shutdown_timeout, @processes");
 
   return if (@processes == 0);
 
-  #print "shutdown: @processes\n";
-
   # Call shutdown function if process has one, else
   # use kill
   foreach my $proc (@processes){
+    _verbose("  proc: $proc");
     my $shutdown= $proc->{SAFE_SHUTDOWN};
     if ($shutdown_timeout > 0 and defined $shutdown){
       $shutdown->();
@@ -301,7 +286,7 @@ sub shutdown {
 sub start_kill {
   my ($self)= @_;
   croak "usage: \$safe_proc->start_kill()" unless (@_ == 1 and ref $self);
-  #print "start_kill $self\n";
+  _verbose("start_kill: $self");
   my $ret= 1;
 
   if (defined $safe_kill and $self->{SAFE_WINPID}){
@@ -309,6 +294,7 @@ sub start_kill {
     # it's time to kill it's child and return
     my $pid= $self->{SAFE_WINPID};
     $ret= (system($safe_kill, $pid) >> 8) == 0;
+    print `tasklist` unless $ret;
   } else {
     my $pid= $self->{SAFE_PID};
     die "Can't kill not started process" unless defined $pid;
@@ -327,10 +313,8 @@ sub kill {
   my ($self)= @_;
   croak "usage: \$safe_proc->kill()" unless (@_ == 1 and ref $self);
 
-  if ($self->start_kill())
-  {
-    $self->wait_one();
-  }
+  $self->start_kill();
+  $self->wait_one();
   return 1;
 }
 
@@ -338,8 +322,8 @@ sub kill {
 sub _collect {
   my ($self)= @_;
 
-  #print "_collect\n";
   $self->{EXIT_STATUS}= $?;
+  _verbose("_collect: $self");
 
   # Take the process out of running list
   my $pid= $self->{SAFE_PID};
@@ -363,15 +347,17 @@ sub wait_one {
   my ($self, $timeout)= @_;
   croak "usage: \$safe_proc->wait_one([timeout])" unless ref $self;
 
-  #print "wait_one $self, $timeout\n";
+  _verbose("wait_one $self, $timeout");
 
   if ( ! defined($self->{SAFE_PID}) ) {
     # No pid => not running
+    _verbose("No pid => not running");
     return 0;
   }
 
   if ( defined $self->{EXIT_STATUS} ) {
     # Exit status already set => not running
+    _verbose("Exit status already set => not running");
     return 0;
   }
 
@@ -400,6 +386,7 @@ sub wait_one {
     $blocking= 1;
     $use_alarm= 0;
   }
+  #_verbose("blocking: $blocking, use_alarm: $use_alarm");
 
   my $retpid;
   eval
@@ -419,18 +406,22 @@ sub wait_one {
     die "Got unexpected: $@" if ($@ !~ /waitpid timeout/);
     if (!defined $retpid) {
       # Got timeout
+      _verbose("Got timeout");
       return 1;
     }
     # Got pid _and_ alarm, continue
+    _verbose("Got pid and alarm, continue");
   }
 
   if ( $retpid == 0 ) {
     # 0 => still running
+    _verbose("0 => still running");
     return 1;
   }
 
   if ( not $blocking and $retpid == -1 ) {
     # still running
+    _verbose("still running");
     return 1;
   }
 
@@ -514,5 +505,9 @@ sub self2str {
   $str.= "]";
 }
 
+sub _verbose {
+  return unless $_verbose;
+  print STDERR " ## ", @_, "\n";
+}
 
 1;
diff -Nrup a/mysql-test/lib/mtr_cases.pm b/mysql-test/lib/mtr_cases.pm
--- a/mysql-test/lib/mtr_cases.pm	2008-03-10 16:42:00 +01:00
+++ b/mysql-test/lib/mtr_cases.pm	2008-03-13 17:16:40 +01:00
@@ -803,13 +803,6 @@ sub collect_one_test_case {
     return $tinfo
   }
 
-  if ( $tinfo->{'ndb_extra'} and ! $::opt_ndb_extra_test )
-  {
-    $tinfo->{'skip'}= 1;
-    $tinfo->{'comment'}= "Test need 'ndb_extra' option";
-    return $tinfo
-  }
-
   if ( $tinfo->{'need_debug'} && ! $::debug_compiled_binaries )
   {
     $tinfo->{'skip'}= 1;
@@ -966,7 +959,6 @@ my @tags=
  ["include/have_debug.inc", "need_debug", 1],
  ["include/have_ndb.inc", "ndb_test", 1],
  ["include/have_multi_ndb.inc", "ndb_test", 1],
- ["include/have_ndb_extra.inc", "ndb_extra", 1],
  ["include/master-slave.inc", "rpl_test", 1],
  ["include/ndb_master-slave.inc", "rpl_test", 1],
  ["include/ndb_master-slave.inc", "ndb_test", 1],
diff -Nrup a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl
--- a/mysql-test/mysql-test-run.pl	2008-03-12 10:34:21 +01:00
+++ b/mysql-test/mysql-test-run.pl	2008-03-13 17:16:39 +01:00
@@ -47,6 +47,7 @@ use My::Platform;
 use My::SafeProcess;
 use My::ConfigFactory;
 use My::Options;
+use My::Find;
 use mtr_cases;
 use mtr_report;
 
@@ -94,8 +95,6 @@ my $exe_mysqld;
 our $exe_mysql;
 our $exe_mysqladmin;
 our $exe_mysqltest;
-our $exe_ndbd;
-our $exe_ndb_mgmd= "";
 our $exe_libtool;
 
 my $opt_big_test= 0;
@@ -183,14 +182,10 @@ our $opt_warnings= 1;
 our $opt_skip_ndbcluster= 0;
 our $opt_skip_ndbcluster_slave= 0;
 our $opt_with_ndbcluster;
-our $opt_ndb_extra_test= 0;
 
-our $exe_ndb_mgm="";
-our $exe_ndb_waiter;
-our $path_ndb_tools_dir= "";
-our $path_ndb_examples_dir= "";
-our $exe_ndb_example= "";
-our $path_ndb_testrun_log;
+my $exe_ndbd;
+my $exe_ndb_mgmd;
+my $exe_ndb_waiter;
 
 our $path_sql_dir;
 
@@ -295,7 +290,6 @@ sub command_line_setup {
              'skip-ndbcluster|skip-ndb' => \$opt_skip_ndbcluster,
              'skip-ndbcluster-slave|skip-ndb-slave'
                                         => \$opt_skip_ndbcluster_slave,
-             'ndb-extra-test'           => \$opt_ndb_extra_test,
              'suite|suites=s'           => \$opt_suites,
              'skip-rpl'                 => \&collect_option,
              'skip-test=s'              => \&collect_option,
@@ -749,7 +743,6 @@ sub command_line_setup {
 
   $path_testlog=         "$opt_vardir/log/mysqltest.log";
   $path_current_testlog= "$opt_vardir/log/current_test";
-  $path_ndb_testrun_log= "$opt_vardir/log/ndb_testrun.log";
 
 }
 
@@ -880,44 +873,6 @@ sub collect_mysqld_features {
 }
 
 
-sub executable_setup_ndb () {
-
-  # Look for ndb tols and binaries
-  my $ndb_path= mtr_file_exists("$basedir/ndb",
-				"$basedir/storage/ndb",
-				"$basedir/bin");
-
-  $exe_ndbd=
-    mtr_exe_maybe_exists("$ndb_path/src/kernel/ndbd",
-			 "$ndb_path/ndbd");
-  $exe_ndb_mgm=
-    mtr_exe_maybe_exists("$ndb_path/src/mgmclient/ndb_mgm",
-			 "$ndb_path/ndb_mgm");
-  $exe_ndb_mgmd=
-    mtr_exe_maybe_exists("$ndb_path/src/mgmsrv/ndb_mgmd",
-			 "$ndb_path/ndb_mgmd");
-  $exe_ndb_waiter=
-    mtr_exe_maybe_exists("$ndb_path/tools/ndb_waiter",
-			 "$ndb_path/ndb_waiter");
-
-  # May not exist
-  $path_ndb_tools_dir= mtr_file_exists("$ndb_path/tools",
-				       "$ndb_path");
-  # May not exist
-  $path_ndb_examples_dir=
-    mtr_file_exists("$ndb_path/ndbapi-examples",
-		    "$ndb_path/examples");
-  # May not exist
-  $exe_ndb_example=
-    mtr_file_exists("$path_ndb_examples_dir/ndbapi_simple/ndbapi_simple");
-
-  return ( $exe_ndbd eq "" or
-	   $exe_ndb_mgm eq "" or
-	   $exe_ndb_mgmd eq "" or
-	   $exe_ndb_waiter eq "");
-}
-
-
 sub executable_setup () {
 
   #
@@ -940,14 +895,23 @@ sub executable_setup () {
   $exe_mysqladmin=     mtr_exe_exists("$path_client_bindir/mysqladmin");
   $exe_mysql=          mtr_exe_exists("$path_client_bindir/mysql");
 
-  if ( ! $opt_skip_ndbcluster and executable_setup_ndb()) {
-    mtr_warning("Could not find all required ndb binaries, " .
-		"all ndb tests will fail, use --skip-ndbcluster to " .
-		"skip testing it.");
+  if ( ! $opt_skip_ndbcluster )
+  {
+    $exe_ndbd=
+      my_find_bin($basedir,
+		  ["storage/ndb/src/kernel", "libexec"],
+		  "ndbd");
+
+    $exe_ndb_mgmd=
+      my_find_bin($basedir,
+		  ["storage/ndb/src/mgmsrv", "libexec"],
+		  "ndb_mgmd");
+
+    $exe_ndb_waiter=
+      my_find_bin($basedir,
+		  ["storage/ndb/tools/", "bin"],
+		  "ndb_waiter");
 
-    foreach my $cluster ( clusters()) {
-      $cluster->{"executable_setup_failed"}= 1;
-    }
   }
 
   # Look for mysqltest executable
@@ -1204,13 +1168,30 @@ sub environment_setup {
   # ----------------------------------------------------
   # Setup env for NDB
   # ----------------------------------------------------
-  $ENV{'NDB_MGM'}=                  $exe_ndb_mgm;
-  $ENV{'NDB_EXTRA_TEST'}=           $opt_ndb_extra_test;
-  $ENV{'NDB_TOOLS_DIR'}=            $path_ndb_tools_dir;
-  $ENV{'NDB_TOOLS_OUTPUT'}=         $path_ndb_testrun_log;
-  $ENV{'NDB_EXAMPLES_DIR'}=         $path_ndb_examples_dir;
-  $ENV{'NDB_EXAMPLES_BINARY'}=      $exe_ndb_example;
-  $ENV{'NDB_EXAMPLES_OUTPUT'}=      $path_ndb_testrun_log;
+  if ( ! $opt_skip_ndbcluster )
+  {
+    $ENV{'NDB_MGM'}=
+      my_find_bin($basedir,
+		  ["storage/ndb/src/mgmclient", "bin"],
+		  "ndb_mgm");
+
+    $ENV{'NDB_TOOLS_DIR'}=
+      my_find_dir($basedir,
+		  ["storage/ndb/tools", "bin"]);
+
+    $ENV{'NDB_EXAMPLES_DIR'}=
+      my_find_dir($basedir,
+		  ["storage/ndb/ndbapi-examples", "bin"]);
+
+    $ENV{'NDB_EXAMPLES_BINARY'}=
+      my_find_bin($basedir,
+		  ["storage/ndb/ndbapi-examples/ndbapi_simple", "bin"],
+		  "ndbapi_simple", NOT_REQUIRED);
+
+    my $path_ndb_testrun_log= "$opt_vardir/log/ndb_testrun.log";
+    $ENV{'NDB_TOOLS_OUTPUT'}=         $path_ndb_testrun_log;
+    $ENV{'NDB_EXAMPLES_OUTPUT'}=      $path_ndb_testrun_log;
+  }
 
   # ----------------------------------------------------
   # mysql clients
@@ -2110,23 +2091,6 @@ sub run_testcase_check_skip_test($)
     return 1;
   }
 
-  if ($tinfo->{'ndb_test'})
-  {
-    foreach my $cluster ( clusters() )
-    {
-      # If test needs this cluster, check binaries was found ok
-      if ( $cluster->{'executable_setup_failed'} )
-      {
-	$tinfo->{comment}=
-	  "Failed to find cluster binaries";
-	mtr_report_test_failed($tinfo, undef);
-	return 1;
-      }
-    }
-  }
-
-
-
   return 0;
 }
 
@@ -3628,7 +3592,6 @@ Options to control what test suites or c
   with-ndbcluster-only  Run only tests that include "ndb" in the filename
   skip-ndb[cluster]     Skip all tests that need cluster
   skip-ndb[cluster]-slave Skip all tests that need a slave cluster
-  ndb-extra             Run extra tests from ndb directory
   do-test=PREFIX or REGEX
                         Run test cases which name are prefixed with PREFIX
                         or fulfills REGEX
diff -Nrup a/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test	2008-03-12 12:20:38 +01:00
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test	2008-03-13 17:16:40 +01:00
@@ -6,8 +6,8 @@
 --connection slave
 RESET MASTER;
 
-# Check Last_errno
-let $the_last_errno= query_get_value(SHOW SLAVE STATUS, Last_Errno, 1);
+# Check Last_IO_Errno
+let $the_last_errno= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1);
 echo Last errno after reset master on slave: $the_last_errno;
 
 --connection master
@@ -18,7 +18,7 @@ START SLAVE;
 
 
 # Check Last_errno
-let $the_last_errno= query_get_value(SHOW SLAVE STATUS, Last_Errno, 1);
+let $the_last_errno= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1);
 echo Last errno after start slave: $the_last_errno;
 
 # create the table on the "slave"
@@ -32,7 +32,7 @@ CREATE TABLE t1 (a int key, b int) ENGIN
 SHOW TABLES;
 
 # Check Last_errno
-let $the_last_errno= query_get_value(SHOW SLAVE STATUS, Last_Errno, 1);
+let $the_last_errno= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1);
 echo Last errno after table on both: $the_last_errno;
 
 # insert some values on the slave and master
Thread
bk commit into 5.1 tree (msvensson:1.2573)msvensson13 Mar