summaryrefslogtreecommitdiff
path: root/mysql-test/lib/mtr_cases.pm
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/lib/mtr_cases.pm')
-rw-r--r--mysql-test/lib/mtr_cases.pm61
1 files changed, 61 insertions, 0 deletions
diff --git a/mysql-test/lib/mtr_cases.pm b/mysql-test/lib/mtr_cases.pm
index a7650d9056a..224babaaf32 100644
--- a/mysql-test/lib/mtr_cases.pm
+++ b/mysql-test/lib/mtr_cases.pm
@@ -480,6 +480,67 @@ sub collect_one_suite($)
#print_testcases(@cases);
}
}
+
+ # ----------------------------------------------------------------------
+ # Testing InnoDB plugin.
+ # ----------------------------------------------------------------------
+ my $lib_innodb_plugin=
+ mtr_file_exists(::vs_config_dirs('storage/innodb_plugin', 'ha_innodb_plugin.dll'),
+ "$::basedir/storage/innodb_plugin/.libs/ha_innodb_plugin.so",
+ "$::basedir/lib/mysql/plugin/ha_innodb_plugin.so",
+ "$::basedir/lib/mysql/plugin/ha_innodb_plugin.dll");
+ if ($::mysql_version_id >= 50100 && !(IS_WINDOWS && $::opt_embedded_server) &&
+ $lib_innodb_plugin)
+ {
+ my @new_cases;
+
+ foreach my $test (@cases)
+ {
+ next if ($test->{'skip'} || !$test->{'innodb_test'});
+ # Exceptions
+ next if ($test->{'name'} eq 'main.innodb'); # Failed with wrong errno (fk)
+ next if ($test->{'name'} eq 'main.index_merge_innodb'); # Explain diff
+ # innodb_file_per_table is rw with innodb_plugin
+ next if ($test->{'name'} eq 'sys_vars.innodb_file_per_table_basic');
+ # innodb_lock_wait_timeout is rw with innodb_plugin
+ next if ($test->{'name'} eq 'sys_vars.innodb_lock_wait_timeout_basic');
+ # Diff around innodb_thread_concurrency variable
+ next if ($test->{'name'} eq 'sys_vars.innodb_thread_concurrency_basic');
+ # Copy test options
+ my $new_test= My::Test->new();
+ while (my ($key, $value) = each(%$test))
+ {
+ if (ref $value eq "ARRAY")
+ {
+ push(@{$new_test->{$key}}, @$value);
+ }
+ else
+ {
+ $new_test->{$key}= $value;
+ }
+ }
+ my $plugin_filename= basename($lib_innodb_plugin);
+ push(@{$new_test->{master_opt}}, '--ignore-builtin-innodb');
+ push(@{$new_test->{master_opt}}, '--plugin-dir=' . dirname($lib_innodb_plugin));
+ push(@{$new_test->{master_opt}}, "--plugin_load=innodb=$plugin_filename;innodb_locks=$plugin_filename");
+ push(@{$new_test->{slave_opt}}, '--ignore-builtin-innodb');
+ push(@{$new_test->{slave_opt}}, '--plugin-dir=' . dirname($lib_innodb_plugin));
+ push(@{$new_test->{slave_opt}}, "--plugin_load=innodb=$plugin_filename;innodb_locks=$plugin_filename");
+ if ($new_test->{combination})
+ {
+ $new_test->{combination}.= ' + InnoDB plugin';
+ }
+ else
+ {
+ $new_test->{combination}= 'InnoDB plugin';
+ }
+ push(@new_cases, $new_test);
+ }
+ push(@cases, @new_cases);
+ }
+ # ----------------------------------------------------------------------
+ # End of testing InnoDB plugin.
+ # ----------------------------------------------------------------------
optimize_cases(\@cases);
#print_testcases(@cases);