Commit 56712c8a authored by Bjorn Munch's avatar Bjorn Munch

merge 55178,55413,56383

parents 56d29401 4e453648
...@@ -5542,6 +5542,8 @@ int read_line(char *buf, int size) ...@@ -5542,6 +5542,8 @@ int read_line(char *buf, int size)
char c, UNINIT_VAR(last_quote), last_char= 0; char c, UNINIT_VAR(last_quote), last_char= 0;
char *p= buf, *buf_end= buf + size - 1; char *p= buf, *buf_end= buf + size - 1;
int skip_char= 0; int skip_char= 0;
my_bool have_slash= FALSE;
enum {R_NORMAL, R_Q, R_SLASH_IN_Q, enum {R_NORMAL, R_Q, R_SLASH_IN_Q,
R_COMMENT, R_LINE_START} state= R_LINE_START; R_COMMENT, R_LINE_START} state= R_LINE_START;
DBUG_ENTER("read_line"); DBUG_ENTER("read_line");
...@@ -5613,9 +5615,13 @@ int read_line(char *buf, int size) ...@@ -5613,9 +5615,13 @@ int read_line(char *buf, int size)
} }
else if (c == '\'' || c == '"' || c == '`') else if (c == '\'' || c == '"' || c == '`')
{ {
last_quote= c; if (! have_slash)
state= R_Q; {
last_quote= c;
state= R_Q;
}
} }
have_slash= (c == '\\');
break; break;
case R_COMMENT: case R_COMMENT:
......
...@@ -701,6 +701,13 @@ sub process_opts_file { ...@@ -701,6 +701,13 @@ sub process_opts_file {
next; next;
} }
$value= mtr_match_prefix($opt, "--testcase-timeout=");
if ( defined $value ) {
# Overrides test case timeout for this test
$tinfo->{'case-timeout'}= $value;
next;
}
# Ok, this was a real option, add it # Ok, this was a real option, add it
push(@{$tinfo->{$opt_name}}, $opt); push(@{$tinfo->{$opt_name}}, $opt);
} }
......
...@@ -231,7 +231,6 @@ my $opt_suite_timeout = $ENV{MTR_SUITE_TIMEOUT} || 300; # minutes ...@@ -231,7 +231,6 @@ my $opt_suite_timeout = $ENV{MTR_SUITE_TIMEOUT} || 300; # minutes
my $opt_shutdown_timeout= $ENV{MTR_SHUTDOWN_TIMEOUT} || 10; # seconds my $opt_shutdown_timeout= $ENV{MTR_SHUTDOWN_TIMEOUT} || 10; # seconds
my $opt_start_timeout = $ENV{MTR_START_TIMEOUT} || 180; # seconds my $opt_start_timeout = $ENV{MTR_START_TIMEOUT} || 180; # seconds
sub testcase_timeout { return $opt_testcase_timeout * 60; };
sub suite_timeout { return $opt_suite_timeout * 60; }; sub suite_timeout { return $opt_suite_timeout * 60; };
sub check_timeout { return $opt_testcase_timeout * 6; }; sub check_timeout { return $opt_testcase_timeout * 6; };
...@@ -245,6 +244,7 @@ my $opt_repeat= 1; ...@@ -245,6 +244,7 @@ my $opt_repeat= 1;
my $opt_retry= 3; my $opt_retry= 3;
my $opt_retry_failure= env_or_val(MTR_RETRY_FAILURE => 2); my $opt_retry_failure= env_or_val(MTR_RETRY_FAILURE => 2);
my $opt_reorder= 1; my $opt_reorder= 1;
my $opt_force_restart= 0;
my $opt_strace_client; my $opt_strace_client;
...@@ -260,6 +260,17 @@ my $opt_callgrind; ...@@ -260,6 +260,17 @@ my $opt_callgrind;
my %mysqld_logs; my %mysqld_logs;
my $opt_debug_sync_timeout= 300; # Default timeout for WAIT_FOR actions. my $opt_debug_sync_timeout= 300; # Default timeout for WAIT_FOR actions.
sub testcase_timeout ($) {
my ($tinfo)= @_;
if (exists $tinfo->{'case-timeout'}) {
# Return test specific timeout if *longer* that the general timeout
my $test_to= $tinfo->{'case-timeout'};
$test_to*= 10 if $opt_valgrind;
return $test_to * 60 if $test_to > $opt_testcase_timeout;
}
return $opt_testcase_timeout * 60;
}
our $opt_warnings= 1; our $opt_warnings= 1;
our $opt_skip_ndbcluster= 0; our $opt_skip_ndbcluster= 0;
...@@ -934,6 +945,7 @@ sub command_line_setup { ...@@ -934,6 +945,7 @@ sub command_line_setup {
'report-features' => \$opt_report_features, 'report-features' => \$opt_report_features,
'comment=s' => \$opt_comment, 'comment=s' => \$opt_comment,
'fast' => \$opt_fast, 'fast' => \$opt_fast,
'force-restart' => \$opt_force_restart,
'reorder!' => \$opt_reorder, 'reorder!' => \$opt_reorder,
'enable-disabled' => \&collect_option, 'enable-disabled' => \&collect_option,
'verbose+' => \$opt_verbose, 'verbose+' => \$opt_verbose,
...@@ -3552,7 +3564,7 @@ sub run_testcase ($) { ...@@ -3552,7 +3564,7 @@ sub run_testcase ($) {
} }
} }
my $test_timeout= start_timer(testcase_timeout()); my $test_timeout= start_timer(testcase_timeout($tinfo));
do_before_run_mysqltest($tinfo); do_before_run_mysqltest($tinfo);
...@@ -3752,7 +3764,7 @@ sub run_testcase ($) { ...@@ -3752,7 +3764,7 @@ sub run_testcase ($) {
{ {
my $log_file_name= $opt_vardir."/log/".$tinfo->{shortname}.".log"; my $log_file_name= $opt_vardir."/log/".$tinfo->{shortname}.".log";
$tinfo->{comment}= $tinfo->{comment}=
"Test case timeout after ".testcase_timeout(). "Test case timeout after ".testcase_timeout($tinfo).
" seconds\n\n"; " seconds\n\n";
# Add 20 last executed commands from test case log file # Add 20 last executed commands from test case log file
if (-e $log_file_name) if (-e $log_file_name)
...@@ -3761,7 +3773,7 @@ sub run_testcase ($) { ...@@ -3761,7 +3773,7 @@ sub run_testcase ($) {
"== $log_file_name == \n". "== $log_file_name == \n".
mtr_lastlinesfromfile($log_file_name, 20)."\n"; mtr_lastlinesfromfile($log_file_name, 20)."\n";
} }
$tinfo->{'timeout'}= testcase_timeout(); # Mark as timeout $tinfo->{'timeout'}= testcase_timeout($tinfo); # Mark as timeout
run_on_all($tinfo, 'analyze-timeout'); run_on_all($tinfo, 'analyze-timeout');
report_failure_and_restart($tinfo); report_failure_and_restart($tinfo);
...@@ -4567,6 +4579,11 @@ sub server_need_restart { ...@@ -4567,6 +4579,11 @@ sub server_need_restart {
return 1; return 1;
} }
if ( $opt_force_restart ) {
mtr_verbose_restart($server, "forced restart turned on");
return 1;
}
if ( $tinfo->{template_path} ne $current_config_name) if ( $tinfo->{template_path} ne $current_config_name)
{ {
mtr_verbose_restart($server, "using different config file"); mtr_verbose_restart($server, "using different config file");
...@@ -5595,6 +5612,7 @@ Misc options ...@@ -5595,6 +5612,7 @@ Misc options
servers to exit before finishing the process servers to exit before finishing the process
fast Run as fast as possible, dont't wait for servers fast Run as fast as possible, dont't wait for servers
to shutdown etc. to shutdown etc.
force-restart Always restart servers between tests
parallel=N Run tests in N parallel threads (default=1) parallel=N Run tests in N parallel threads (default=1)
Use parallel=auto for auto-setting of N Use parallel=auto for auto-setting of N
repeat=N Run each test N number of times repeat=N Run each test N number of times
......
...@@ -262,6 +262,9 @@ a long \$where variable content ...@@ -262,6 +262,9 @@ a long \$where variable content
banana = banana banana = banana
Not a banana: ba\$cat\$cat Not a banana: ba\$cat\$cat
with\`some"escaped\'quotes
with\`some"escaped\'quotes
single'tick`backtick
mysqltest: At line 1: Missing arguments to let mysqltest: At line 1: Missing arguments to let
mysqltest: At line 1: Missing variable name in let mysqltest: At line 1: Missing variable name in let
mysqltest: At line 1: Missing assignment operator in let mysqltest: At line 1: Missing assignment operator in let
......
...@@ -701,6 +701,16 @@ echo banana = $cat; ...@@ -701,6 +701,16 @@ echo banana = $cat;
let $cat=ba\\\$cat\\\$cat; let $cat=ba\\\$cat\\\$cat;
echo Not a banana: $cat; echo Not a banana: $cat;
# Bug #55413 would cause this to fail
let $escape= with\`some\"escaped\'quotes;
echo $escape;
--let $escape= with\`some\"escaped\'quotes
echo $escape;
# This only works with "--let" syntax
--let $tick= single'tick`backtick
echo $tick;
# Test illegal uses of let # Test illegal uses of let
......
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