feat(module manager): add thread_init and thread_exit API

This commit is contained in:
yangwei
2024-10-18 15:02:36 +08:00
parent 722ae7483b
commit a7b79a0e22
6 changed files with 144 additions and 51 deletions

View File

@@ -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);