summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/include/have_example_plugin.inc16
-rw-r--r--mysql-test/include/have_udf.inc2
-rwxr-xr-xmysql-test/mysql-test-run.pl30
-rw-r--r--mysql-test/r/have_dynamic_loading.require (renamed from mysql-test/r/have_udf.require)0
-rw-r--r--mysql-test/r/have_example_plugin.require2
-rw-r--r--mysql-test/r/plugin.result15
-rw-r--r--mysql-test/t/plugin.test26
7 files changed, 85 insertions, 6 deletions
diff --git a/mysql-test/include/have_example_plugin.inc b/mysql-test/include/have_example_plugin.inc
new file mode 100644
index 00000000000..b84f6d2f161
--- /dev/null
+++ b/mysql-test/include/have_example_plugin.inc
@@ -0,0 +1,16 @@
+#
+# Check if server has support for loading udf's
+# i.e it will support dlopen
+#
+--require r/have_dynamic_loading.require
+disable_query_log;
+show variables like "have_dynamic_loading";
+enable_query_log;
+
+#
+# Check if the variable EXAMPLE_PLUGIN is set
+#
+--require r/have_example_plugin.require
+disable_query_log;
+eval select LENGTH("$EXAMPLE_PLUGIN") > 0 as "have_example_plugin";
+enable_query_log;
diff --git a/mysql-test/include/have_udf.inc b/mysql-test/include/have_udf.inc
index 42b9942f74d..068ce9026e0 100644
--- a/mysql-test/include/have_udf.inc
+++ b/mysql-test/include/have_udf.inc
@@ -2,7 +2,7 @@
# Check if server has support for loading udf's
# i.e it will support dlopen
#
---require r/have_udf.require
+--require r/have_dynamic_loading.require
disable_query_log;
show variables like "have_dynamic_loading";
enable_query_log;
diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl
index c8ed0ecb6fb..0c5c0f2b3fa 100755
--- a/mysql-test/mysql-test-run.pl
+++ b/mysql-test/mysql-test-run.pl
@@ -159,6 +159,7 @@ our $exe_im;
our $exe_my_print_defaults;
our $exe_perror;
our $lib_udf_example;
+our $lib_example_plugin;
our $exe_libtool;
our $opt_bench= 0;
@@ -1493,6 +1494,11 @@ sub executable_setup () {
mtr_file_exists(vs_config_dirs('sql', 'udf_example.dll'),
"$glob_basedir/sql/.libs/udf_example.so",);
+ # Look for the ha_example library
+ $lib_example_plugin=
+ mtr_file_exists(vs_config_dirs('storage/example', 'ha_example.dll'),
+ "$glob_basedir/storage/example/.libs/ha_example.so",);
+
# Look for mysqltest executable
if ( $glob_use_embedded_server )
{
@@ -1649,6 +1655,14 @@ sub environment_setup () {
}
# --------------------------------------------------------------------------
+ # Add the path where mysqld will find ha_example.so
+ # --------------------------------------------------------------------------
+ if ( $lib_example_plugin )
+ {
+ push(@ld_library_paths, dirname($lib_example_plugin));
+ }
+
+ # --------------------------------------------------------------------------
# Valgrind need to be run with debug libraries otherwise it's almost
# impossible to add correct supressions, that means if "/usr/lib/debug"
# is available, it should be added to
@@ -1922,10 +1936,11 @@ sub environment_setup () {
$ENV{'UDF_EXAMPLE_LIB'}=
($lib_udf_example ? basename($lib_udf_example) : "");
- $ENV{'LD_LIBRARY_PATH'}=
- ($lib_udf_example ? dirname($lib_udf_example) : "") .
- ($ENV{'LD_LIBRARY_PATH'} ? ":$ENV{'LD_LIBRARY_PATH'}" : "");
-
+ # ----------------------------------------------------
+ # Add the path where mysqld will find ha_example.so
+ # ----------------------------------------------------
+ $ENV{'EXAMPLE_PLUGIN'}=
+ ($lib_example_plugin ? basename($lib_example_plugin) : "");
# ----------------------------------------------------
# We are nice and report a bit about our settings
@@ -3609,6 +3624,9 @@ sub mysqld_arguments ($$$$$) {
# Turn on logging, will be sent to tables
mtr_add_arg($args, "%s--log=", $prefix);
}
+
+ mtr_add_arg($args, "%s--plugin_dir=%s", $prefix,
+ dirname($lib_example_plugin));
}
if ( $type eq 'slave' )
@@ -4480,7 +4498,9 @@ sub run_mysqltest ($) {
}
else # component_id == mysqld
{
- mtr_add_arg($args, "--socket=%s", $master->[0]->{'path_sock'});
+# mtr_add_arg($args, "--socket=%s", $master->[0]->{'path_sock'});
+mtr_add_arg($args, "--host=127.0.0.1");
+
mtr_add_arg($args, "--port=%d", $master->[0]->{'port'});
mtr_add_arg($args, "--database=test");
mtr_add_arg($args, "--user=%s", $opt_user);
diff --git a/mysql-test/r/have_udf.require b/mysql-test/r/have_dynamic_loading.require
index 2d21f65e4ac..2d21f65e4ac 100644
--- a/mysql-test/r/have_udf.require
+++ b/mysql-test/r/have_dynamic_loading.require
diff --git a/mysql-test/r/have_example_plugin.require b/mysql-test/r/have_example_plugin.require
new file mode 100644
index 00000000000..291b8231cbb
--- /dev/null
+++ b/mysql-test/r/have_example_plugin.require
@@ -0,0 +1,2 @@
+have_example_plugin
+1
diff --git a/mysql-test/r/plugin.result b/mysql-test/r/plugin.result
new file mode 100644
index 00000000000..44641858fca
--- /dev/null
+++ b/mysql-test/r/plugin.result
@@ -0,0 +1,15 @@
+CREATE TABLE t1(a int) ENGINE=EXAMPLE;
+Warnings:
+Error 1286 Unknown table engine 'EXAMPLE'
+DROP TABLE t1;
+INSTALL PLUGIN example SONAME 'ha_example.so';
+INSTALL PLUGIN EXAMPLE SONAME 'ha_example.so';
+ERROR HY000: Function 'EXAMPLE' already exists
+UNINSTALL PLUGIN example;
+INSTALL PLUGIN example SONAME 'ha_example.so';
+CREATE TABLE t1(a int) ENGINE=EXAMPLE;
+SELECT * FROM t1;
+a
+DROP TABLE t1;
+UNINSTALL PLUGIN non_exist;
+ERROR 42000: PLUGIN non_exist does not exist
diff --git a/mysql-test/t/plugin.test b/mysql-test/t/plugin.test
new file mode 100644
index 00000000000..80c1de00b8e
--- /dev/null
+++ b/mysql-test/t/plugin.test
@@ -0,0 +1,26 @@
+--source include/have_example_plugin.inc
+
+CREATE TABLE t1(a int) ENGINE=EXAMPLE;
+DROP TABLE t1;
+
+INSTALL PLUGIN example SONAME 'ha_example.so';
+--error 1125
+INSTALL PLUGIN EXAMPLE SONAME 'ha_example.so';
+
+UNINSTALL PLUGIN example;
+
+INSTALL PLUGIN example SONAME 'ha_example.so';
+
+CREATE TABLE t1(a int) ENGINE=EXAMPLE;
+
+# Let's do some advanced ops with the example engine :)
+SELECT * FROM t1;
+
+DROP TABLE t1;
+
+# Waiting for fix to BUG#22694
+#UNINSTALL PLUGIN example;
+#UNINSTALL PLUGIN EXAMPLE;
+
+--error 1305
+UNINSTALL PLUGIN non_exist;