← Back to team overview

maria-developers team mailing list archive

Rev 2734: merge in file:///Users/bell/maria/bzr/work-maria-5.1-mysql-test-run-merge/

 

At file:///Users/bell/maria/bzr/work-maria-5.1-mysql-test-run-merge/

------------------------------------------------------------
revno: 2734 [merge]
revision-id: sanja@xxxxxxxxxxxx-20090924124939-nwi2kr48x0as70n8
parent: hakan@xxxxxxxxxxxx-20090918193250-imuhuvjq1n21b01n
parent: sanja@xxxxxxxxxxxx-20090924121915-k4ooompd72l2hkn5
committer: sanja@xxxxxxxxxxxx
branch nick: work-maria-5.1-mysql-test-run-merge
timestamp: Thu 2009-09-24 15:49:39 +0300
message:
  merge
modified:
  mysql-test/lib/mtr_misc.pl     sp1f-mtr_misc.pl-20041230152647-z3fkxvkkqfydzuwdmzjgkfo3tyetnp3a
  mysql-test/mysql-test-run.pl   sp1f-mysqltestrun.pl-20041230152716-xjnn5ndv4rr4by6ijmj5a4ysubxc7qh3
=== modified file 'mysql-test/lib/mtr_misc.pl'
--- a/mysql-test/lib/mtr_misc.pl	2009-02-19 09:01:25 +0000
+++ b/mysql-test/lib/mtr_misc.pl	2009-09-24 12:19:15 +0000
@@ -174,4 +174,24 @@
   select(undef, undef, undef, ($millis/1000));
 }
 
+sub mtr_wait_lock_file {
+  die "usage: mtr_wait_lock_file(path_to_file, keep_alive)" unless @_ == 2;
+  my ($file, $keep_alive)= @_;
+  my $waited= 0;
+  my $msg_counter= $keep_alive;
+
+  while ( -e $file)
+  {
+    if ($keep_alive && !$msg_counter)
+    {
+       print "\n-STOPPED- [pass] ".$keep_alive."\n";
+       $msg_counter= $keep_alive;
+    }
+    mtr_milli_sleep(1000);
+    $waited= 1;
+    $msg_counter--;
+  }
+  return ($waited);
+}
+
 1;

=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl	2009-09-04 07:45:34 +0000
+++ b/mysql-test/mysql-test-run.pl	2009-09-24 12:49:39 +0000
@@ -253,6 +253,11 @@
 
 my $opt_parallel= $ENV{MTR_PARALLEL} || 1;
 
+# lock file to stop tests
+my $opt_stop_file= $ENV{MTR_STOP_FILE};
+# print messages when test suite is stopped (for buildbot)
+my $opt_stop_keep_alive= $ENV{MTR_STOP_KEEP_ALIVE};
+
 select(STDOUT);
 $| = 1; # Automatically flush STDOUT
 
@@ -451,6 +456,15 @@
   my $s= IO::Select->new();
   $s->add($server);
   while (1) {
+    if ($opt_stop_file)
+    {
+      if (mtr_wait_lock_file($opt_stop_file, $opt_stop_keep_alive))
+      {
+        # We were waiting so restart timer process
+        $suite_timeout_proc->kill();
+        $suite_timeout_proc= My::SafeProcess->timer(suite_timeout());
+      }
+    }
     my @ready = $s->can_read(1); # Wake up once every second
     foreach my $sock (@ready) {
       if ($sock == $server) {
@@ -933,6 +947,8 @@
              'warnings!'                => \$opt_warnings,
 	     'timestamp'                => \&report_option,
 	     'timediff'                 => \&report_option,
+             'stop-file=s'              => \$opt_stop_file,
+             'stop-keep-alive=i'        => \$opt_stop_keep_alive,
 
              'help|h'                   => \$opt_usage,
              'list-options'             => \$opt_list_options,
@@ -5409,6 +5425,14 @@
   warnings              Scan the log files for warnings. Use --nowarnings
                         to turn off.
 
+  stop-file=file        (also MTR_STOP_FILE environment variable) if this
+                        file detected mysql test will not start new tests
+                        until the file will be removed.
+  stop-keep-alive=sec   (also MTR_STOP_KEEP_ALIVE environment variable)
+                        works with stop-file, print messages every sec
+                        seconds when mysql test is waiting to removing
+                        the file (for buildbot)
+
   sleep=SECONDS         Passed to mysqltest, will be used as fixed sleep time
   debug-sync-timeout=NUM Set default timeout for WAIT_FOR debug sync
                         actions. Disable facility with NUM=0.