# # Test mysql_plugin tool # --source include/not_embedded.inc # Add the datadir, basedir, plugin_dir to the bootstrap command let $MYSQLD_DATADIR= `select @@datadir`; let $MYSQL_BASEDIR= `select @@basedir`; # The mysql_plugin tool expects all executables in "basedir", so they will be copied to it. # It also expects a directory structure like in the installed mysql version, so errmsg.sys # will be copied to "basedir/share". The directories differ between Windows and Unix. --disable_abort_on_error if(`SELECT CONVERT(@@version_compile_os USING latin1) IN ('Win32','Win64','Windows')`) { let $MYSQLD_BASEDIR= $MYSQL_BASEDIR/sql/Debug; --copy_file $MYSQL_BASEDIR/extra/Debug/my_print_defaults.exe $MYSQLD_BASEDIR/my_print_defaults.exe --mkdir $MYSQLD_BASEDIR/share --copy_file $MYSQL_BASEDIR/sql/share/english/errmsg.sys $MYSQLD_BASEDIR/share/errmsg.sys --copy_file $MYSQL_BASEDIR/plugin/daemon_example/daemon_example.ini $DAEMONEXAMPLE_DIR/daemon_example.ini } if (`SELECT CONVERT(@@version_compile_os USING latin1) NOT IN ('Win32','Win64','Windows')`) { let $MYSQLD_BASEDIR= $MYSQL_BASEDIR/sql; --copy_file $MYSQL_BASEDIR/extra/my_print_defaults $MYSQLD_BASEDIR/my_print_defaults --copy_file $MYSQL_BASEDIR/sql/share/english/errmsg.sys $MYSQLD_BASEDIR/share/errmsg.sys } let $MYSQLD_BOOTSTRAP_CMD= $MYSQL_PLUGIN --datadir=$MYSQLD_DATADIR --basedir=$MYSQLD_BASEDIR --plugin-dir=$DAEMONEXAMPLE_DIR; --echo # --echo # Ensure the plugin isn't loaded. --echo # SELECT * FROM mysql.plugin WHERE name = 'daemon_example' ORDER BY name; --echo # --echo # Enable the plugin... --echo # let $expect_file= $MYSQLTEST_VARDIR/tmp/mysqld.1.expect; # MTR will remove this file later, but this might be too late. --error 0,1 --remove_file $expect_file --write_file $expect_file wait EOF --shutdown_server 10 --source include/wait_until_disconnected.inc # # Enable the plugin # --exec $MYSQLD_BOOTSTRAP_CMD ENABLE daemon_example # # Ensure enabling an enabled plugin doesn't fail --exec $MYSQLD_BOOTSTRAP_CMD ENABLE daemon_example # # Restart the server # --append_file $expect_file restart EOF --enable_reconnect --source include/wait_until_connected_again.inc --echo # --echo # Ensure the plugin is now loaded. --echo # --replace_regex /\.dll/.so/ SELECT * FROM mysql.plugin WHERE name = 'daemon_example' ORDER BY name; --echo # --echo # Disable the plugin... --echo # # MTR will remove this file later, but this might be too late. --error 0,1 --remove_file $expect_file --write_file $expect_file wait EOF --shutdown_server 10 --source include/wait_until_disconnected.inc # # Disable the plugin # --exec $MYSQLD_BOOTSTRAP_CMD DISABLE daemon_example # # Restart the server # --append_file $expect_file restart EOF --enable_reconnect --source include/wait_until_connected_again.inc --echo # --echo # Ensure the plugin isn't loaded. --echo # SELECT * FROM mysql.plugin WHERE name = 'daemon_example' ORDER BY name; # # Stop the server for error conditions # let $expect_file= $MYSQLTEST_VARDIR/tmp/mysqld.1.expect; # MTR will remove this file later, but this might be too late. --error 0,1 --remove_file $expect_file --write_file $expect_file wait EOF --shutdown_server 10 --source include/wait_until_disconnected.inc --echo # --echo # Attempt to load non-existant plugin --echo # --error 1,2,256 --exec $MYSQLD_BOOTSTRAP_CMD DISABLE NOT_THERE_AT_ALL 2>&1 --echo # --echo # Attempt to use non-existant plugin.ini file --echo # --error 1,2,7,256 --exec $MYSQLD_BOOTSTRAP_CMD DISABLE daemon_example --plugin-ini=/NOT/THERE/pi.ini 2>&1 --echo # --echo # Attempt to omit the plugin --echo # --error 1,2,256 --exec $MYSQLD_BOOTSTRAP_CMD DISABLE 2>&1 --echo # --echo # Attempt to omit DISABLE|ENABLE --echo # --error 1,2,256 --exec $MYSQLD_BOOTSTRAP_CMD daemon_example 2>&1 --echo # --echo # Attempt to use bad paths - datadir --echo # let $MYSQLD_BOOTSTRAP_CMD= $MYSQL_PLUGIN -n --datadir=/data_not_there/ --basedir=$MYSQLD_BASEDIR --plugin-dir=$DAEMONEXAMPLE_DIR; --error 1,2,256 --exec $MYSQLD_BOOTSTRAP_CMD DISABLE daemon_example 2>&1 --echo # --echo # Attempt to use bad paths - basedir --echo # let $MYSQLD_BOOTSTRAP_CMD= $MYSQL_PLUGIN -n --datadir=$MYSQLD_DATADIR --basedir=/basedir_not_there/ --plugin-dir=$DAEMONEXAMPLE_DIR; --error 1,2,256 --exec $MYSQLD_BOOTSTRAP_CMD DISABLE daemon_example 2>&1 --echo # --echo # Attempt to use bad paths - plugin_dir --echo # let $MYSQLD_BOOTSTRAP_CMD= $MYSQL_PLUGIN -n --datadir=$MYSQLD_DATADIR --basedir=$MYSQLD_BASEDIR --plugin-dir=/plugin_not_there/; --error 1,2,256 --exec $MYSQLD_BOOTSTRAP_CMD DISABLE daemon_example 2>&1 --echo # --echo # Missing library --echo # let $MYSQLD_BOOTSTRAP_CMD= $MYSQL_PLUGIN -n --datadir=$MYSQLD_DATADIR --basedir=$MYSQLD_BASEDIR --plugin-dir=$DAEMONEXAMPLE_DIR --plugin-ini=$MYSQL_TEST_DIR/include/daemon_example_bad_soname.ini; --error 1,2,256 --exec $MYSQLD_BOOTSTRAP_CMD DISABLE daemon_example 2>&1 --echo # --echo # Bad format for config file --echo # let $MYSQLD_BOOTSTRAP_CMD= $MYSQL_PLUGIN -n --datadir=$MYSQLD_DATADIR --basedir=$MYSQLD_BASEDIR --plugin-dir=$DAEMONEXAMPLE_DIR --plugin-ini=$MYSQL_TEST_DIR/include/daemon_example_bad_format.ini; --error 1,2,256 --exec $MYSQLD_BOOTSTRAP_CMD DISABLE daemon_example 2>&1 --echo # --echo # Missing base_dir option --echo # let $MYSQLD_BOOTSTRAP_CMD= $MYSQL_PLUGIN -n --datadir=$MYSQLD_DATADIR --plugin-dir=$DAEMONEXAMPLE_DIR; --error 1,2,139,256 --exec $MYSQLD_BOOTSTRAP_CMD DISABLE daemon_example 2>&1 --echo # --echo # Missing data_dir option --echo # let $MYSQLD_BOOTSTRAP_CMD= $MYSQL_PLUGIN -n --basedir=$MYSQLD_BASEDIR --plugin-dir=$DAEMONEXAMPLE_DIR; --error 1,2,139,256 --exec $MYSQLD_BOOTSTRAP_CMD DISABLE daemon_example 2>&1 --echo # --echo # Missing plugin_dir option --echo # let $MYSQLD_BOOTSTRAP_CMD= $MYSQL_PLUGIN -n --datadir=$MYSQLD_DATADIR --basedir=$MYSQLD_BASEDIR; --error 1,2,139,256 --exec $MYSQLD_BOOTSTRAP_CMD DISABLE daemon_example 2>&1 --echo # --echo # Show the help. --echo # replace_result $MYSQL_PLUGIN mysql_plugin; --replace_regex /Ver [0-9.]+ Distrib [0-9.]+/Ver V.V.VV Distrib XX.XX.XX/ --exec $MYSQL_PLUGIN --help replace_result $MYSQL_PLUGIN mysql_plugin; --replace_regex /Ver [0-9.]+ Distrib [0-9.]+/Ver V.V.VV Distrib XX.XX.XX/ --exec $MYSQL_PLUGIN --version # # Restart the server # --append_file $expect_file restart EOF --enable_reconnect --source include/wait_until_connected_again.inc # # Cleanup # MTR will remove this file later, but this might be too late. --error 0,1 --remove_file $expect_file if(`SELECT CONVERT(@@version_compile_os USING latin1) IN ('Win32','Win64','Windows')`) { --remove_file $DAEMONEXAMPLE_DIR/daemon_example.ini --remove_file $MYSQLD_BASEDIR/my_print_defaults.exe --remove_file $MYSQLD_BASEDIR/share/errmsg.sys --rmdir $MYSQLD_BASEDIR/share } if(`SELECT CONVERT(@@version_compile_os USING latin1) NOT IN ('Win32','Win64','Windows')`) { --remove_file $MYSQLD_BASEDIR/my_print_defaults --remove_file $MYSQLD_BASEDIR/share/errmsg.sys } --enable_abort_on_error