← Back to team overview

maria-developers team mailing list archive

Rev 2724: Ability to stop mysql-test-run.pl temporary (useful for them who run buildbot slave on thier work computers) in file:///Users/bell/maria/bzr/work-maria-5.1/

 

At file:///Users/bell/maria/bzr/work-maria-5.1/

------------------------------------------------------------
revno: 2724
revision-id: sanja@xxxxxxxxxxxx-20090924121915-k4ooompd72l2hkn5
parent: psergey@xxxxxxxxxxxx-20090901115954-nge2brzh3akkmtlz
committer: sanja@xxxxxxxxxxxx
branch nick: work-maria-5.1
timestamp: Thu 2009-09-24 15:19:15 +0300
message:
  Ability to stop mysql-test-run.pl temporary (useful for them who run buildbot slave on thier work computers)
=== 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-06-22 08:06:35 +0000
+++ b/mysql-test/mysql-test-run.pl	2009-09-24 12:19:15 +0000
@@ -252,6 +252,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
 
@@ -450,6 +455,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) {
@@ -931,6 +945,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,
@@ -5392,6 +5408,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.