MXS-2196: Fix filter unit tests

Fixed the use of DCBs and sessions in the mock testing framework and
adapted them to the changes done to the objects in question. Extended the
testing utility functions to allow preloading modules as well as making it
possible to only partially initialize the query classifier.
This commit is contained in:
Markus Mäkelä
2018-12-04 10:25:47 +02:00
parent 4b8393b2ee
commit ceb6094623
9 changed files with 68 additions and 76 deletions

View File

@ -31,7 +31,18 @@
#include "../internal/poll.hh"
#include "../internal/modules.hh"
void init_test_env(char* path)
void preload_module(const char* name, const char* path, const char* type)
{
std::string old_libdir = get_libdir();
std::string fullpath = TEST_DIR;
fullpath += "/";
fullpath += path;
set_libdir(MXS_STRDUP(fullpath.c_str()));
load_module(name, type);
set_libdir(MXS_STRDUP(old_libdir.c_str()));
}
void init_test_env(char* __attribute((unused)) path = nullptr, uint32_t init_type = QC_INIT_BOTH)
{
config_get_global_options()->n_threads = 1;
@ -41,21 +52,19 @@ void init_test_env(char* path)
}
atexit(mxs_log_finish);
dcb_global_init();
std::string old_libdir = get_libdir();
set_libdir(MXS_STRDUP(TEST_DIR "/query_classifier/qc_sqlite/"));
qc_setup(NULL, QC_SQL_MODE_DEFAULT, NULL, NULL);
qc_process_init(QC_INIT_BOTH);
qc_process_init(init_type);
poll_init();
maxbase::init();
maxscale::RoutingWorker::init();
hkinit();
set_libdir(MXS_STRDUP(TEST_DIR "/server/modules/protocol/MySQL/mariadbclient/"));
load_module("mariadbclient", MODULE_PROTOCOL);
set_libdir(MXS_STRDUP(TEST_DIR "/server/modules/routing/readconnroute/"));
load_module("readconnroute", MODULE_ROUTER);
set_libdir(MXS_STRDUP(TEST_DIR "/server/modules/routing/readwritesplit/"));
load_module("readwritesplit", MODULE_ROUTER);
set_libdir(MXS_STRDUP(TEST_DIR "/server/modules/authenticator/MySQLAuth/"));
load_module("mysqlauth", MODULE_AUTHENTICATOR);
set_libdir(MXS_STRDUP(old_libdir.c_str()));
preload_module("mariadbclient", "server/modules/protocol/MySQL/mariadbclient/", MODULE_PROTOCOL);
preload_module("readconnroute", "server/modules/routing/readconnroute/", MODULE_ROUTER);
preload_module("mysqlauth", "/server/modules/authenticator/MySQLAuth/", MODULE_AUTHENTICATOR);
}
#endif