✨ feat(module manager): add thread_init and thread_exit API
This commit is contained in:
@@ -117,6 +117,11 @@ TEST(stellar_module_manager, register_thread) {
|
||||
EXPECT_EQ(stellar_module_manager_get_thread_id(mod_mgr), 1);
|
||||
EXPECT_EQ((long)stellar_module_manager_get_mq_runtime(mod_mgr), 2);
|
||||
|
||||
stellar_module_manager_unregister_thread(mod_mgr, 1);
|
||||
|
||||
EXPECT_EQ(stellar_module_manager_get_thread_id(mod_mgr), -1);
|
||||
EXPECT_EQ((long)stellar_module_manager_get_mq_runtime(mod_mgr), 0);
|
||||
|
||||
stellar_module_manager_free(mod_mgr);
|
||||
|
||||
}
|
||||
@@ -141,17 +146,31 @@ extern "C" void gtest_module_exit(struct stellar_module_manager *mod_mgr, struct
|
||||
|
||||
EXPECT_EQ(stellar_module_manager_get_module(mod_mgr, "gtest"), mod);
|
||||
|
||||
EXPECT_EQ(stellar_module_manager_get_thread_id(mod_mgr), 1);
|
||||
EXPECT_EQ((long)stellar_module_manager_get_mq_runtime(mod_mgr), 2);
|
||||
EXPECT_EQ(stellar_module_manager_get_thread_id(mod_mgr), -1);
|
||||
EXPECT_EQ((long)stellar_module_manager_get_mq_runtime(mod_mgr), 0);
|
||||
|
||||
stellar_module_free(mod);
|
||||
}
|
||||
|
||||
extern "C" void gtest_thread_init(struct stellar_module_manager *mod_mgr, int thread_id, struct stellar_module *mod)
|
||||
{
|
||||
EXPECT_STREQ(stellar_module_get_name(mod), "gtest");
|
||||
EXPECT_EQ((long)stellar_module_get_ctx(mod), 1);
|
||||
}
|
||||
|
||||
extern "C" void gtest_thread_exit(struct stellar_module_manager *mod_mgr, int thread_id, struct stellar_module *mod)
|
||||
{
|
||||
EXPECT_STREQ(stellar_module_get_name(mod), "gtest");
|
||||
EXPECT_EQ((long)stellar_module_get_ctx(mod), 1);
|
||||
}
|
||||
|
||||
const char *gtest_module_spec_toml =
|
||||
"[[module]]\n"
|
||||
"path = \"\"\n"
|
||||
"init = \"gtest_module_init\"\n"
|
||||
"exit = \"gtest_module_exit\"\n";
|
||||
"exit = \"gtest_module_exit\"\n"
|
||||
"thread_init = \"gtest_thread_init\"\n"
|
||||
"thread_exit = \"gtest_thread_exit\"\n";
|
||||
|
||||
TEST(module_manager, basic_module) {
|
||||
|
||||
@@ -178,6 +197,10 @@ TEST(module_manager, basic_module) {
|
||||
EXPECT_EQ((long)stellar_module_manager_get_thread_id(mod_mgr), 1);
|
||||
EXPECT_EQ((long)stellar_module_manager_get_mq_runtime(mod_mgr), 2);
|
||||
|
||||
stellar_module_manager_unregister_thread(mod_mgr, 1);
|
||||
EXPECT_EQ((long)stellar_module_manager_get_thread_id(mod_mgr), -1);
|
||||
EXPECT_EQ((long)stellar_module_manager_get_mq_runtime(mod_mgr), 0);
|
||||
|
||||
stellar_module_manager_free(mod_mgr);
|
||||
unlink(toml_template);
|
||||
}
|
||||
@@ -205,7 +228,7 @@ struct test_module_polling_env
|
||||
}
|
||||
|
||||
|
||||
TEST(polling_manager, basic_polling_module) {
|
||||
TEST(module_manager, basic_polling_module) {
|
||||
|
||||
struct mq_schema *mq_schema=mq_schema_new();
|
||||
|
||||
@@ -232,6 +255,10 @@ TEST(polling_manager, basic_polling_module) {
|
||||
stellar_polling_dispatch(mod_mgr);
|
||||
}
|
||||
|
||||
stellar_module_manager_unregister_thread(mod_mgr, 1);
|
||||
|
||||
mq_runtime_free(mq_rt);
|
||||
mq_schema_free(mq_schema);
|
||||
stellar_module_manager_free(mod_mgr);
|
||||
|
||||
EXPECT_EQ(env.polling_count, env.N_round+env.polling_active_count);
|
||||
|
||||
Reference in New Issue
Block a user