Commit 22e8fc6a authored by Bjorn Munch's avatar Bjorn Munch

Bug #55597 MTR: Restart the server, from within the test case, with new CLI options.

The expect file can now include "restart:<server options>"
Also drop check-testcase if this has been done
Added comment explaining the restart: syntax
parents e3120327 1adda42b
...@@ -3006,7 +3006,8 @@ sub check_testcase($$) ...@@ -3006,7 +3006,8 @@ sub check_testcase($$)
my %started; my %started;
foreach my $mysqld ( mysqlds() ) foreach my $mysqld ( mysqlds() )
{ {
if ( defined $mysqld->{'proc'} ) # Skip if server has been restarted with additional options
if ( defined $mysqld->{'proc'} && ! exists $mysqld->{'restart_opts'} )
{ {
my $proc= start_check_testcase($tinfo, $mode, $mysqld); my $proc= start_check_testcase($tinfo, $mode, $mysqld);
$started{$proc->pid()}= $proc; $started{$proc->pid()}= $proc;
...@@ -4002,6 +4003,16 @@ sub check_expected_crash_and_restart { ...@@ -4002,6 +4003,16 @@ sub check_expected_crash_and_restart {
next; next;
} }
# If last line begins "restart:", the rest of the line is read as
# extra command line options to add to the restarted mysqld.
# Anything other than 'wait' or 'restart:' (with a colon) will
# result in a restart with original mysqld options.
if ($last_line =~ /restart:(.+)/) {
my @rest_opt= split(' ', $1);
$mysqld->{'restart_opts'}= \@rest_opt;
} else {
delete $mysqld->{'restart_opts'};
}
unlink($expect_file); unlink($expect_file);
# Start server with same settings as last time # Start server with same settings as last time
...@@ -4346,7 +4357,13 @@ sub mysqld_start ($$) { ...@@ -4346,7 +4357,13 @@ sub mysqld_start ($$) {
} }
mtr_add_arg($args, "--defaults-group-suffix=%s", $mysqld->after('mysqld')); mtr_add_arg($args, "--defaults-group-suffix=%s", $mysqld->after('mysqld'));
mysqld_arguments($args,$mysqld,$extra_opts);
# Add any additional options from an in-test restart
my @all_opts= @$extra_opts;
if (exists $mysqld->{'restart_opts'}) {
push (@all_opts, @{$mysqld->{'restart_opts'}});
}
mysqld_arguments($args,$mysqld,\@all_opts);
if ( $opt_debug ) if ( $opt_debug )
{ {
...@@ -4527,7 +4544,10 @@ sub server_need_restart { ...@@ -4527,7 +4544,10 @@ sub server_need_restart {
my $extra_opts= get_extra_opts($server, $tinfo); my $extra_opts= get_extra_opts($server, $tinfo);
my $started_opts= $server->{'started_opts'}; my $started_opts= $server->{'started_opts'};
if (!My::Options::same($started_opts, $extra_opts) ) # Also, always restart if server had been restarted with additional
# options within test.
if (!My::Options::same($started_opts, $extra_opts) ||
exists $server->{'restart_opts'})
{ {
my $use_dynamic_option_switch= 0; my $use_dynamic_option_switch= 0;
if (!$use_dynamic_option_switch) if (!$use_dynamic_option_switch)
......
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