mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
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
This commit is contained in:
@ -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 {
|
|||||||
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 ($$) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
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 {
|
|||||||
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)
|
||||||
|
Reference in New Issue
Block a user