Commit a4a6f1d5 authored by unknown's avatar unknown

Ability to stop mysql-test-run.pl temporary (useful for them who run buildbot...

Ability to stop mysql-test-run.pl temporary (useful for them who run buildbot slave on thier work computers)
parent d841ea23
...@@ -174,4 +174,24 @@ sub mtr_milli_sleep { ...@@ -174,4 +174,24 @@ sub mtr_milli_sleep {
select(undef, undef, undef, ($millis/1000)); 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; 1;
...@@ -252,6 +252,11 @@ my $opt_max_test_fail= $ENV{MTR_MAX_TEST_FAIL} || 10; ...@@ -252,6 +252,11 @@ my $opt_max_test_fail= $ENV{MTR_MAX_TEST_FAIL} || 10;
my $opt_parallel= $ENV{MTR_PARALLEL} || 1; 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); select(STDOUT);
$| = 1; # Automatically flush STDOUT $| = 1; # Automatically flush STDOUT
...@@ -450,6 +455,15 @@ sub run_test_server ($$$) { ...@@ -450,6 +455,15 @@ sub run_test_server ($$$) {
my $s= IO::Select->new(); my $s= IO::Select->new();
$s->add($server); $s->add($server);
while (1) { 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 my @ready = $s->can_read(1); # Wake up once every second
foreach my $sock (@ready) { foreach my $sock (@ready) {
if ($sock == $server) { if ($sock == $server) {
...@@ -931,6 +945,8 @@ sub command_line_setup { ...@@ -931,6 +945,8 @@ sub command_line_setup {
'warnings!' => \$opt_warnings, 'warnings!' => \$opt_warnings,
'timestamp' => \&report_option, 'timestamp' => \&report_option,
'timediff' => \&report_option, 'timediff' => \&report_option,
'stop-file=s' => \$opt_stop_file,
'stop-keep-alive=i' => \$opt_stop_keep_alive,
'help|h' => \$opt_usage, 'help|h' => \$opt_usage,
'list-options' => \$opt_list_options, 'list-options' => \$opt_list_options,
...@@ -5392,6 +5408,14 @@ Misc options ...@@ -5392,6 +5408,14 @@ Misc options
warnings Scan the log files for warnings. Use --nowarnings warnings Scan the log files for warnings. Use --nowarnings
to turn off. 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 sleep=SECONDS Passed to mysqltest, will be used as fixed sleep time
debug-sync-timeout=NUM Set default timeout for WAIT_FOR debug sync debug-sync-timeout=NUM Set default timeout for WAIT_FOR debug sync
actions. Disable facility with NUM=0. actions. Disable facility with NUM=0.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment