#pragma GCC diagnostic ignored "-Wunused-parameter" #include #include "polling_manager/polling_manager_internal.h" #include "module_manager/module_manager_interna.h" /*********************************** * TEST POLLING MANAGER POLLING API * ***********************************/ struct test_module_polling_env { int N_round; int polling_count; int polling_active_count; }; void test_module_on_polling(struct stellar_polling_manager* mod_mgr, void *polling_arg) { struct test_module_polling_env *env = (struct test_module_polling_env*)polling_arg; env->polling_count++; if(env->polling_count%2==0) { stellar_polling_active(mod_mgr); env->polling_active_count++; } } const char *gtest_mock_spec_toml = "[[module]]\n" "path = \"\"\n" "init = \"polling_manager_on_init\"\n" "exit = \"polling_manager_on_exit\"\n"; TEST(polling_manager, basic_polling_module) { struct mq_schema *mq_schema=mq_schema_new(); FILE *fp = fmemopen((void *)gtest_mock_spec_toml, strlen(gtest_mock_spec_toml), "r"); EXPECT_TRUE(fp!=NULL); struct stellar_module_manager *mod_mgr=stellar_module_manager_new_with_file(fp, 10, mq_schema); fclose(fp); EXPECT_TRUE(mod_mgr!=NULL); struct stellar_polling_manager *polling_mgr=stellar_module_get_polling_manager(mod_mgr); EXPECT_TRUE(polling_mgr!=NULL); EXPECT_EQ(stellar_module_manager_get_max_thread_num(mod_mgr), 10); EXPECT_EQ(stellar_module_manager_get_mq_schema(mod_mgr), mq_schema); struct test_module_polling_env env={}; env.N_round=10; stellar_polling_subscribe(polling_mgr, test_module_on_polling, &env); struct mq_runtime *mq_rt = mq_runtime_new(mq_schema); stellar_module_manager_register_thread(mod_mgr, 1, mq_rt); EXPECT_EQ((long)stellar_module_manager_get_thread_id(mod_mgr), 1); EXPECT_EQ(stellar_module_manager_get_mq_runtime(mod_mgr), mq_rt); for(int i=0; i