MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:Bjorn Munch Date:March 16 2010 9:46am
Subject:bzr commit into mysql-5.1-mtr branch (Bjorn.Munch:2902) Bug#51767
View as plain text  
#At file:///home/bm136801/my/standex-51/ based on revid:bjorn.munch@stripped

 2902 Bjorn Munch	2010-03-16
      Bug #51767 Implement --start-and-exit also for MTR v2
      Added option and logic, bypass safe_process
      Adapted after review comments

    modified:
      mysql-test/lib/My/SafeProcess.pm
      mysql-test/mysql-test-run.pl
=== modified file 'mysql-test/lib/My/SafeProcess.pm'
--- a/mysql-test/lib/My/SafeProcess.pm	2009-11-24 08:12:48 +0000
+++ b/mysql-test/lib/My/SafeProcess.pm	2010-03-16 09:45:32 +0000
@@ -60,11 +60,12 @@ use My::Platform;
 
 my %running;
 my $_verbose= 0;
+my $start_exit= 0;
 
 END {
   # Kill any children still running
   for my $proc (values %running){
-    if ( $proc->is_child($$) ){
+    if ( $proc->is_child($$) and ! $start_exit){
       #print "Killing: $proc\n";
       if ($proc->wait_one(0)){
 	$proc->kill();
@@ -149,6 +150,11 @@ sub new {
 
   push(@safe_args, "--");
   push(@safe_args, $path); # The program safe_process should execute
+
+  if ($start_exit) {	 # Bypass safe_process instead, start program directly
+    @safe_args= ();
+    $safe_path= $path;
+  }
   push(@safe_args, @$$args);
 
   print "### safe_path: ", $safe_path, " ", join(" ", @safe_args), "\n"
@@ -528,6 +534,13 @@ sub wait_all {
   }
 }
 
+#
+# Set global flag to tell all safe_process to exit after starting child
+#
+
+sub start_exit {
+  $start_exit= 1;
+}
 
 #
 # Check if any process has exited, but don't wait.

=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl	2010-02-17 15:28:02 +0000
+++ b/mysql-test/mysql-test-run.pl	2010-03-16 09:45:32 +0000
@@ -218,6 +218,7 @@ sub check_timeout { return $opt_testcase
 
 my $opt_start;
 my $opt_start_dirty;
+my $opt_start_exit;
 my $start_only;
 my $opt_wait_all;
 my $opt_repeat= 1;
@@ -345,6 +346,12 @@ sub main {
     mtr_report("Using parallel: $opt_parallel");
   }
 
+  if ($opt_parallel > 1 && $opt_start_exit) {
+    mtr_warning("Parallel and --start-and-exit cannot be combined\n" .
+               "Setting parallel to 1");
+    $opt_parallel= 1;
+  }
+
   # Create server socket on any free port
   my $server = new IO::Socket::INET
     (
@@ -384,6 +391,8 @@ sub main {
 
   my $completed= run_test_server($server, $tests, $opt_parallel);
 
+  exit(0) if $opt_start_exit;
+
   # Send Ctrl-C to any children still running
   kill("INT", keys(%children));
 
@@ -910,6 +919,7 @@ sub command_line_setup {
              'verbose-restart'          => \&report_option,
              'sleep=i'                  => \$opt_sleep,
              'start-dirty'              => \$opt_start_dirty,
+             'start-and-exit'           => \$opt_start_exit,
              'start'                    => \$opt_start,
              'wait-all'                 => \$opt_wait_all,
 	     'print-testcases'          => \&collect_option,
@@ -1316,7 +1326,7 @@ sub command_line_setup {
   # --------------------------------------------------------------------------
   # Modified behavior with --start options
   # --------------------------------------------------------------------------
-  if ($opt_start or $opt_start_dirty) {
+  if ($opt_start or $opt_start_dirty or $opt_start_exit) {
     collect_option ('quick-collect', 1);
     $start_only= 1;
   }
@@ -3400,6 +3410,18 @@ sub run_testcase ($) {
       mtr_print ($mysqld->name() . "  " . $mysqld->value('port') .
 	      "  " . $mysqld->value('socket'));
     }
+    if ( $opt_start_exit )
+    {
+      mtr_print("Server(s) started, not waiting for them to finish");
+      if (IS_WINDOWS)
+      {
+	POSIX::_exit(0);	# exit hangs here in ActiveState Perl
+      }
+      else
+      {
+	exit(0);
+      }
+    }
     mtr_print("Waiting for server(s) to exit...");
     if ( $opt_wait_all ) {
       My::SafeProcess->wait_all();
@@ -4644,6 +4666,12 @@ sub stop_servers($$) {
 sub start_servers($) {
   my ($tinfo)= @_;
 
+  # Make sure the safe_process also exits from now on
+  # Could not be done before, as we don't want this for the bootstrap
+  if ($opt_start_exit) {
+    My::SafeProcess->start_exit();
+  }
+
   # Start clusters
   foreach my $cluster ( clusters() )
   {


Attachment: [text/bzr-bundle] bzr/bjorn.munch@sun.com-20100316094532-p4qlfsye12omvlb1.bundle
Thread
bzr commit into mysql-5.1-mtr branch (Bjorn.Munch:2902) Bug#51767Bjorn Munch16 Mar