MySQL 8.4.2
Source Code Documentation
|
MySQL server plugins have access to server “services”, as described in MySQL Services for Plugins.
MySQL distributions include plugins that demonstrate how to test plugin service APIs:
The test_framework plugin is a bare bones plugin that shows the minimum required framework for service testing.
The test_services plugin demonstrates how to test the my_plugin_log_service service in unthreaded context.
The source code for the plugins is located in the plugin/test_services directory of MySQL source distributions. The README file in that directory contains instructions for running the test cases available for the test_services and test_services_threaded plugins.
Use the following procedure to create a new service-testing plugin based on one of those provided in the plugin/test_services directory. Assume that you want to create a new plugin named test_myservice (or test_myservice_threaded to test in threaded context).
Select a source file to use as a basis for the new plugin:
To begin with a bare bones plugin, copy test_framework.cc to test_myservice.cc.
To begin with a plugin that already includes code for running tests in unthreaded context, copy test_services.cc to test_myservice.cc.
There is a plugin descriptor near the end of the new source file. Modify this descriptor appropriately for your plugin. Change the name, author, and descr members that indicate the plugin name and author and provide a description. For example, if you copied test_framework.cc, those members look like this:
"test_framework", "Horst Hunger", "Test framework",
Change them to something like this:
"test_myservice", "Your Name Here", "Test My Service",
Modify your source file appropriately for the service to be tested:
If you copied test_framework.cc, your file has no tests initially and is set up for unthreaded context. In this case, add code to the test_services_plugin_init() function. This code should invoke the service to be tested.
Compiling your plugin creates a plugin library file, which you should install in the directory named by the [plugin_dir] https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_plugin_dir) system variable. The file base name is the same as that of the source file. The file name suffix differs per platform (for example, .so for Unix and Unix-like systems, .dll for Windows).
To install or unintall your plugin at server startup, use the --plugin-load
or --plugin-load-add
option. For example, you can use these lines in an option file (adjust the file name as necessary):
[mysqld] plugin-load-add=test_myservice.so
To install or uninstall the plugin at runtime, use these statements (adjust the plugin name and file name as necessary):
INSTALL PLUGIN test_myservice SONAME 'test_myservice.so'; UNINSTALL PLUGIN test_myservice;
For addition information about plugin loading, see Installing and Uninstalling Plugins.
For information about creating and running test cases for your new plugin, adapt the instructions in the README file in the plugin/test_services directory. Test cases for the test_services and test_services_threaded plugins are located in mysql-test/suite/test_services.