Commit 5b7306e2 authored by Bjorn Munch's avatar Bjorn Munch

Bug #44054 MTR2: --no-reorder does not prevent reordering

Some logic would group by suite always
Disable this if using --noreorder
Also fix getting array from collect_one_suite() in this case
Amended according to previous comment
parent 80e25b18
...@@ -40,7 +40,6 @@ our $default_storage_engine; ...@@ -40,7 +40,6 @@ our $default_storage_engine;
our $opt_with_ndbcluster_only; our $opt_with_ndbcluster_only;
our $defaults_file; our $defaults_file;
our $defaults_extra_file; our $defaults_extra_file;
our $reorder= 1;
our $quick_collect; our $quick_collect;
sub collect_option { sub collect_option {
...@@ -99,7 +98,8 @@ sub init_pattern { ...@@ -99,7 +98,8 @@ sub init_pattern {
# #
############################################################################## ##############################################################################
sub collect_test_cases ($$) { sub collect_test_cases ($$$) {
my $opt_reorder= shift; # True if we're reordering tests
my $suites= shift; # Semicolon separated list of test suites my $suites= shift; # Semicolon separated list of test suites
my $opt_cases= shift; my $opt_cases= shift;
my $cases= []; # Array of hash(one hash for each testcase) my $cases= []; # Array of hash(one hash for each testcase)
...@@ -118,10 +118,16 @@ sub collect_test_cases ($$) { ...@@ -118,10 +118,16 @@ sub collect_test_cases ($$) {
!(IS_WINDOWS && $::opt_embedded_server) && !(IS_WINDOWS && $::opt_embedded_server) &&
$lib_innodb_plugin); $lib_innodb_plugin);
foreach my $suite (split(",", $suites)) # If not reordering, we also shouldn't group by suites, unless
# no test cases were named.
# This also effects some logic in the loop following this.
if ($opt_reorder or !@$opt_cases)
{ {
push(@$cases, collect_one_suite($suite, $opt_cases)); foreach my $suite (split(",", $suites))
last if $some_test_found; {
push(@$cases, collect_one_suite($suite, $opt_cases));
last if $some_test_found;
}
} }
if ( @$opt_cases ) if ( @$opt_cases )
...@@ -135,6 +141,7 @@ sub collect_test_cases ($$) { ...@@ -135,6 +141,7 @@ sub collect_test_cases ($$) {
my ($sname, $tname, $extension)= split_testname($test_name_spec); my ($sname, $tname, $extension)= split_testname($test_name_spec);
foreach my $test ( @$cases ) foreach my $test ( @$cases )
{ {
last unless $opt_reorder;
# test->{name} is always in suite.name format # test->{name} is always in suite.name format
if ( $test->{name} =~ /.*\.$tname/ ) if ( $test->{name} =~ /.*\.$tname/ )
{ {
...@@ -144,12 +151,13 @@ sub collect_test_cases ($$) { ...@@ -144,12 +151,13 @@ sub collect_test_cases ($$) {
} }
if ( not $found ) if ( not $found )
{ {
$sname= "main" if !$opt_reorder and !$sname;
mtr_error("Could not find '$tname' in '$suites' suite(s)") unless $sname; mtr_error("Could not find '$tname' in '$suites' suite(s)") unless $sname;
# If suite was part of name, find it there # If suite was part of name, find it there, may come with combinations
my ($this_case) = collect_one_suite($sname, [ $tname ]); my @this_case = collect_one_suite($sname, [ $tname ]);
if ($this_case) if (@this_case)
{ {
push (@$cases, $this_case); push (@$cases, @this_case);
} }
else else
{ {
...@@ -159,7 +167,7 @@ sub collect_test_cases ($$) { ...@@ -159,7 +167,7 @@ sub collect_test_cases ($$) {
} }
} }
if ( $reorder && !$quick_collect) if ( $opt_reorder && !$quick_collect)
{ {
# Reorder the test cases in an order that will make them faster to run # Reorder the test cases in an order that will make them faster to run
my %sort_criteria; my %sort_criteria;
......
...@@ -222,6 +222,7 @@ my $opt_wait_all; ...@@ -222,6 +222,7 @@ my $opt_wait_all;
my $opt_repeat= 1; 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_strace_client; my $opt_strace_client;
...@@ -306,7 +307,7 @@ sub main { ...@@ -306,7 +307,7 @@ sub main {
} }
mtr_report("Collecting tests..."); mtr_report("Collecting tests...");
my $tests= collect_test_cases($opt_suites, \@opt_cases); my $tests= collect_test_cases($opt_reorder, $opt_suites, \@opt_cases);
if ( $opt_report_features ) { if ( $opt_report_features ) {
# Put "report features" as the first test to run # Put "report features" as the first test to run
...@@ -629,9 +630,9 @@ sub run_test_server ($$$) { ...@@ -629,9 +630,9 @@ sub run_test_server ($$$) {
next; next;
} }
# Prefer same configuration # Prefer same configuration, or just use next if --noreorder
if (defined $result and if (!$opt_reorder or (defined $result and
$result->{template_path} eq $t->{template_path}) $result->{template_path} eq $t->{template_path}))
{ {
#mtr_report("Test uses same config => good match"); #mtr_report("Test uses same config => good match");
# Test uses same config => good match # Test uses same config => good match
...@@ -902,7 +903,7 @@ sub command_line_setup { ...@@ -902,7 +903,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,
'reorder!' => \&collect_option, 'reorder!' => \$opt_reorder,
'enable-disabled' => \&collect_option, 'enable-disabled' => \&collect_option,
'verbose+' => \$opt_verbose, 'verbose+' => \$opt_verbose,
'verbose-restart' => \&report_option, 'verbose-restart' => \&report_option,
......
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