Commit a196adac authored by unknown's avatar unknown

Revert bad merge, should have used local code

parent 9e96081e
...@@ -345,72 +345,73 @@ sub collect_one_suite($) ...@@ -345,72 +345,73 @@ sub collect_one_suite($)
# Read combinations for this suite and build testcases x combinations # Read combinations for this suite and build testcases x combinations
# if any combinations exists # if any combinations exists
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
if (0 and $combinations && $begin_index <= $#{@$cases}) if ( ! $::opt_skip_combination )
{ {
my $end_index = $#{@$cases}; my @combinations;
my $is_copy; my $combination_file= "$suitedir/combinations";
# Keep original master/slave options #print "combination_file: $combination_file\n";
my @orig_opts; if (@::opt_combinations)
for (my $idx = $begin_index; $idx <= $end_index; $idx++)
{ {
foreach my $param (('master_opt','slave_opt','slave_mi')) # take the combination from command-line
{ mtr_verbose("Take the combination from command line");
@{$orig_opts[$idx]{$param}} = @{$cases->[$idx]->{$param}}; foreach my $combination (@::opt_combinations) {
} my $comb= {};
$comb->{name}= $combination;
push(@{$comb->{comb_opt}}, $combination);
push(@combinations, $comb);
} }
my $comb_index = 1;
# Copy original test cases
foreach my $comb_set (@$combinations)
{
for (my $idx = $begin_index; $idx <= $end_index; $idx++)
{
my $test = $cases->[$idx];
my $copied_test = {};
foreach my $param (keys %{$test})
{
# Scalar. Copy as is.
$copied_test->{$param} = $test->{$param};
# Array. Copy reference instead itself
if ($param =~ /(master_opt|slave_opt|slave_mi)/)
{
my $new_arr = [];
@$new_arr = @{$orig_opts[$idx]{$param}};
$copied_test->{$param} = $new_arr;
} }
elsif ($param =~ /(comment|combinations)/) elsif (-f $combination_file )
{ {
$copied_test->{$param} = ''; # Read combinations file in my.cnf format
mtr_verbose("Read combinations file");
my $config= My::Config->new($combination_file);
foreach my $group ($config->groups()) {
my $comb= {};
$comb->{name}= $group->name();
foreach my $option ( $group->options() ) {
push(@{$comb->{comb_opt}}, $option->name()."=".$option->value());
} }
push(@combinations, $comb);
} }
if ($is_copy)
{
push(@$cases, $copied_test);
$test = $cases->[$#{@$cases}];
} }
foreach my $comb_opt (split(/ /,$comb_set))
{ if (@combinations)
push(@{$test->{'master_opt'}},$comb_opt);
push(@{$test->{'slave_opt'}},$comb_opt);
# Enable rpl if added option is --binlog-format and test case supports that
if ($comb_opt =~ /^--binlog-format=.+$/)
{ {
my @opt_pairs = split(/=/, $comb_opt); print " - adding combinations\n";
if ($test->{'binlog_format'} =~ /^$opt_pairs[1]$/ || $test->{'binlog_format'} eq '') #print_testcases(@cases);
my @new_cases;
foreach my $comb (@combinations)
{ {
$test->{'skip'} = 0; foreach my $test (@cases)
$test->{'comment'} = '';
}
else
{ {
$test->{'skip'} = 1; #print $test->{name}, " ", $comb, "\n";
$test->{'comment'} = "Requiring binlog format '$test->{'binlog_format'}'";; my $new_test= {};
while (my ($key, $value) = each(%$test)) {
if (ref $value eq "ARRAY") {
push(@{$new_test->{$key}}, @$value);
} else {
$new_test->{$key}= $value;
} }
} }
# Append the combination options to master_opt and slave_opt
push(@{$new_test->{master_opt}}, @{$comb->{comb_opt}});
push(@{$new_test->{slave_opt}}, @{$comb->{comb_opt}});
# Add combination name shrt name
$new_test->{combination}= $comb->{name};
# Add the new test to new test cases list
push(@new_cases, $new_test);
} }
$test->{'combination'} = $comb_set;
} }
$is_copy = 1; #print_testcases(@new_cases);
$comb_index++; @cases= @new_cases;
#print_testcases(@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