Commit 68c437ba authored by Aleksey Midenkov's avatar Aleksey Midenkov

MDEV-25004 restart_bindir option to restart server from different location

Adds new parameter $restart_bindir for restart_mysqld.inc.

Example:

let $restart_bindir= /home/midenok/src/mariadb/10.3b/build;
--source include/restart_mysqld.inc

It is good to return back original server before check_mysqld will be
run at the test end:

let $restart_bindir=;
--source include/restart_mysqld.inc
parent 5d506ac2
# Include this script only after using shutdown_mysqld.inc # Include this script only after using shutdown_mysqld.inc
# where $_expect_file_name was initialized. # where $_expect_file_name was initialized.
# Write file to make mysql-test-run.pl start up the server again # Write file to make mysql-test-run.pl start up the server again
# restart_noprint defines how much is printed to the .result file
# if 0 (default) then '# result' and restart_parameters are printed
# if 1 then print #result but not the content of restart_parameters
# if 2 then nothing is printed
if (!$restart_noprint)
{
--let $restart_noprint= 2
}
--let $restart_cmd= restart
if ($restart_bindir)
{
--let $restart_cmd= restart_bindir $restart_bindir
}
if ($restart_parameters) if ($restart_parameters)
{ {
--exec echo "restart: $restart_parameters" > $_expect_file_name --exec echo "$restart_cmd: $restart_parameters" > $_expect_file_name
if (!$restart_noprint)
{
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--exec echo "# $restart_cmd: $restart_parameters"
}
if ($restart_noprint == 1)
{
--exec echo "# $restart_cmd: with restart_parameters"
}
} }
if (!$restart_parameters) if (!$restart_parameters)
{ {
--exec echo "restart" > $_expect_file_name --exec echo "$restart_cmd" > $_expect_file_name
if ($restart_noprint < 2)
{
--exec echo "# $restart_cmd"
}
} }
# Turn on reconnect # Turn on reconnect
...@@ -18,4 +49,3 @@ if (!$restart_parameters) ...@@ -18,4 +49,3 @@ if (!$restart_parameters)
# Turn off reconnect again # Turn off reconnect again
--disable_reconnect --disable_reconnect
...@@ -1963,7 +1963,7 @@ sub collect_mysqld_features_from_running_server () ...@@ -1963,7 +1963,7 @@ sub collect_mysqld_features_from_running_server ()
sub find_mysqld { sub find_mysqld {
my ($mysqld_basedir)= $ENV{MTR_BINDIR}|| @_; my ($mysqld_basedir)= $ENV{MTR_BINDIR_FORCED} || $ENV{MTR_BINDIR} || @_;
my @mysqld_names= ("mysqld", "mysqld-max-nt", "mysqld-max", my @mysqld_names= ("mysqld", "mysqld-max-nt", "mysqld-max",
"mysqld-nt"); "mysqld-nt");
...@@ -1974,7 +1974,7 @@ sub find_mysqld { ...@@ -1974,7 +1974,7 @@ sub find_mysqld {
unshift(@mysqld_names, "mysqld-debug"); unshift(@mysqld_names, "mysqld-debug");
} }
return my_find_bin($bindir, return my_find_bin($mysqld_basedir,
["sql", "libexec", "sbin", "bin"], ["sql", "libexec", "sbin", "bin"],
[@mysqld_names]); [@mysqld_names]);
} }
...@@ -4789,6 +4789,7 @@ sub check_expected_crash_and_restart { ...@@ -4789,6 +4789,7 @@ sub check_expected_crash_and_restart {
mtr_verbose("Test says wait before restart") if $waits == 0; mtr_verbose("Test says wait before restart") if $waits == 0;
next; next;
} }
delete $ENV{MTR_BINDIR_FORCED};
# Ignore any partial or unknown command # Ignore any partial or unknown command
next unless $last_line =~ /^restart/; next unless $last_line =~ /^restart/;
...@@ -4796,7 +4797,13 @@ sub check_expected_crash_and_restart { ...@@ -4796,7 +4797,13 @@ sub check_expected_crash_and_restart {
# extra command line options to add to the restarted mysqld. # extra command line options to add to the restarted mysqld.
# Anything other than 'wait' or 'restart:' (with a colon) will # Anything other than 'wait' or 'restart:' (with a colon) will
# result in a restart with original mysqld options. # result in a restart with original mysqld options.
if ($last_line =~ /restart:(.+)/) { if ($last_line =~ /restart_bindir\s+(\S+)(:.+)?/) {
$ENV{MTR_BINDIR_FORCED}= $1;
if ($2) {
my @rest_opt= split(' ', $2);
$mysqld->{'restart_opts'}= \@rest_opt;
}
} elsif ($last_line =~ /restart:(.+)/) {
my @rest_opt= split(' ', $1); my @rest_opt= split(' ', $1);
$mysqld->{'restart_opts'}= \@rest_opt; $mysqld->{'restart_opts'}= \@rest_opt;
} else { } else {
......
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