Commit b4ac7f8c authored by Sergey Vojtovich's avatar Sergey Vojtovich

This patch implements testing InnoDB plugin milestone.

mysql-test/lib/mtr_cases.pm:
  Expand test cases list with test cases to test
  InnoDB plugin.
mysql-test/mysql-test-run.pl:
  Added "innodb" suite to default list of suites.
mysql-test/suite/innodb/include/have_innodb_plugin.inc:
  This file determines if innodb plugin is available.
mysql-test/suite/innodb/my.cnf:
  Removed temporary my.cnf, which was added for testing. Not
  needed anymore - options are substituted by mtr.
mysql-test/suite/innodb/t/innodb-analyze.test:
  This test can only be run with InnoDB plugin.
mysql-test/suite/innodb/t/innodb-timeout.test:
  This test can only be run with InnoDB plugin.
mysql-test/suite/innodb/t/innodb-use-sys-malloc-master.opt:
  Use "loose" prefix with mysqld options. This makes this
  test skipped properly when no innodb is available.
mysql-test/suite/innodb/t/innodb-use-sys-malloc.test:
  This test can only be run with InnoDB plugin.
mysql-test/suite/innodb/t/innodb-zip.test:
  This test can only be run with InnoDB plugin.
mysql-test/suite/innodb/t/innodb_bug36169.test:
  This test can only be run with InnoDB plugin.
mysql-test/suite/innodb/t/innodb_bug36172.test:
  This test can only be run with InnoDB plugin.
mysql-test/suite/innodb/t/innodb_information_schema.test:
  This test can only be run with InnoDB plugin.
parent 0fa4924f
...@@ -475,6 +475,66 @@ sub collect_one_suite($) ...@@ -475,6 +475,66 @@ sub collect_one_suite($)
#print_testcases(@cases); #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");
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.innodb_mysql'); # Diff in show (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); optimize_cases(\@cases);
#print_testcases(@cases); #print_testcases(@cases);
......
...@@ -126,7 +126,7 @@ my $path_config_file; # The generated config file, var/my.cnf ...@@ -126,7 +126,7 @@ my $path_config_file; # The generated config file, var/my.cnf
# executables will be used by the test suite. # executables will be used by the test suite.
our $opt_vs_config = $ENV{'MTR_VS_CONFIG'}; our $opt_vs_config = $ENV{'MTR_VS_CONFIG'};
my $DEFAULT_SUITES= "main,binlog,federated,rpl,rpl_ndb,ndb"; my $DEFAULT_SUITES= "main,binlog,federated,rpl,rpl_ndb,ndb,innodb";
my $opt_suites; my $opt_suites;
our $opt_verbose= 0; # Verbose output, enable with --verbose our $opt_verbose= 0; # Verbose output, enable with --verbose
......
disable_query_log;
--require r/true.require
select (PLUGIN_LIBRARY LIKE 'ha_innodb_plugin%') as `TRUE` from information_schema.plugins where PLUGIN_NAME='InnoDB';
enable_query_log;
!include include/default_my.cnf
[mysqld]
ignore-builtin-innodb
plugin-dir=../storage/innodb_plugin/.libs/
plugin_load=innodb=ha_innodb_plugin.so:innodb_locks=ha_innodb_plugin.so
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
# #
-- source include/have_innodb.inc -- source include/have_innodb.inc
-- source suite/innodb/include/have_innodb_plugin.inc
# we care only that the following SQL commands do not produce errors # we care only that the following SQL commands do not produce errors
# and do not crash the server # and do not crash the server
......
-- source include/have_innodb.inc -- source include/have_innodb.inc
-- source suite/innodb/include/have_innodb_plugin.inc
let $timeout=`select @@innodb_lock_wait_timeout`; let $timeout=`select @@innodb_lock_wait_timeout`;
set global innodb_lock_wait_timeout=42; set global innodb_lock_wait_timeout=42;
......
--innodb-use-sys-malloc=true --loose-innodb-use-sys-malloc=true
--innodb-use-sys-malloc=true --loose-innodb-use-sys-malloc=true
--source include/have_innodb.inc --source include/have_innodb.inc
-- source suite/innodb/include/have_innodb_plugin.inc
#display current value of innodb_use_sys_malloc #display current value of innodb_use_sys_malloc
SELECT @@GLOBAL.innodb_use_sys_malloc; SELECT @@GLOBAL.innodb_use_sys_malloc;
......
-- source include/have_innodb.inc -- source include/have_innodb.inc
-- source suite/innodb/include/have_innodb_plugin.inc
let $per_table=`select @@innodb_file_per_table`; let $per_table=`select @@innodb_file_per_table`;
let $format=`select @@innodb_file_format`; let $format=`select @@innodb_file_format`;
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
# #
-- source include/have_innodb.inc -- source include/have_innodb.inc
-- source suite/innodb/include/have_innodb_plugin.inc
SET GLOBAL innodb_file_format='Barracuda'; SET GLOBAL innodb_file_format='Barracuda';
SET GLOBAL innodb_file_per_table=ON; SET GLOBAL innodb_file_per_table=ON;
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
-- source include/not_embedded.inc -- source include/not_embedded.inc
-- source include/have_innodb.inc -- source include/have_innodb.inc
-- source suite/innodb/include/have_innodb_plugin.inc
SET storage_engine=InnoDB; SET storage_engine=InnoDB;
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
# #
-- source include/have_innodb.inc -- source include/have_innodb.inc
-- source suite/innodb/include/have_innodb_plugin.inc
-- disable_query_log -- disable_query_log
-- disable_result_log -- disable_result_log
......
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