Commit 9e145670 authored by unknown's avatar unknown

mtr_cases.pl:

  Provide a more extensible, easier-to-change way of reordering
  test cases.


mysql-test/lib/mtr_cases.pl:
  Provide a more extensible, easier-to-change way of reordering
  test cases.
parent e0bffad3
...@@ -82,7 +82,7 @@ sub collect_test_cases ($) { ...@@ -82,7 +82,7 @@ sub collect_test_cases ($) {
if ( $mysqld_test_exists and $im_test_exists ) if ( $mysqld_test_exists and $im_test_exists )
{ {
mtr_error("Ambiguos test case name ($tname)"); mtr_error("Ambiguous test case name ($tname)");
} }
elsif ( ! $mysqld_test_exists and ! $im_test_exists ) elsif ( ! $mysqld_test_exists and ! $im_test_exists )
{ {
...@@ -154,34 +154,38 @@ sub collect_test_cases ($) { ...@@ -154,34 +154,38 @@ sub collect_test_cases ($) {
if ( $::opt_reorder ) if ( $::opt_reorder )
{ {
@$cases = sort {
if ( ! $a->{'master_restart'} and ! $b->{'master_restart'} )
{
return $a->{'name'} cmp $b->{'name'};
}
if ( $a->{'master_restart'} and $b->{'master_restart'} ) my %sort_criteria;
{ my $tinfo;
my $cmp= mtr_cmp_opts($a->{'master_opt'}, $b->{'master_opt'});
if ( $cmp == 0 )
{
return $a->{'name'} cmp $b->{'name'};
}
else
{
return $cmp;
}
}
if ( $a->{'master_restart'} ) # Make a mapping of test name to a string that represents how that test
{ # should be sorted among the other tests. Put the most important criterion
return 1; # Is greater # first, then a sub-criterion, then sub-sub-criterion, et c.
} foreach $tinfo (@$cases)
else {
{ my @this_criteria = ();
return -1; # Is less
} # Append the criteria for sorting, in order of importance.
} @$cases; push(@this_criteria, join("!", sort @{$tinfo->{'master_opt'}}) . "~"); # Ending with "~" makes empty sort later than filled
push(@this_criteria, "ndb=" . ($tinfo->{'ndb_test'} ? "1" : "0"));
push(@this_criteria, "restart=" . ($tinfo->{'master_restart'} ? "1" : "0"));
push(@this_criteria, "big_test=" . ($tinfo->{'big_test'} ? "1" : "0"));
push(@this_criteria, join("|", sort keys %{$tinfo})); # Group similar things together. The values may differ substantially. FIXME?
push(@this_criteria, $tinfo->{'name'}); # Finally, order by the name
$sort_criteria{$tinfo->{"name"}} = join(" ", @this_criteria);
}
@$cases = sort { $sort_criteria{$a->{"name"}} cmp $sort_criteria{$b->{"name"}}; } @$cases;
### For debugging the sort-order
# foreach $tinfo (@$cases)
# {
# print $sort_criteria{$tinfo->{"name"}};
# print " -> \t";
# print $tinfo->{"name"};
# print "\n";
# }
} }
return $cases; return $cases;
......
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