summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorniubinghui <[email protected]>2024-09-02 16:10:51 +0800
committerniubinghui <[email protected]>2024-09-02 16:10:51 +0800
commite063af614ec41f6cb9f7f622fad77e7d12d3f9c8 (patch)
treedd9180e455985a18710f72594cb5ae01ffba5e48
parent0988578c6ac2452c6352f0edf57fe73ea6560d50 (diff)
【修改】更新单元测试
-rw-r--r--example/conf/lua_plugin_manage.toml15
-rw-r--r--example/example_plugin_manage.c254
-rw-r--r--example/include/plugin_manager_gtest_mock.h5
-rw-r--r--example/plugin/example_plugin-1.lua26
-rw-r--r--example/plugin/example_plugin-2.lua55
-rw-r--r--example/plugin/example_plugin_load.lua11
-rw-r--r--example/plugin/example_plugin_message.lua30
-rw-r--r--example/plugin/example_plugin_regist.lua25
-rw-r--r--example/plugin/example_plugin_topic.lua57
-rw-r--r--example/simple_example_plugin.c101
10 files changed, 341 insertions, 238 deletions
diff --git a/example/conf/lua_plugin_manage.toml b/example/conf/lua_plugin_manage.toml
index ca68bd5..25f4933 100644
--- a/example/conf/lua_plugin_manage.toml
+++ b/example/conf/lua_plugin_manage.toml
@@ -1,10 +1,15 @@
# config.toml
[[plugin]]
-path = "./plugin/example_plugin-1.lua"
+path = "./plugin/example_plugin_regist.lua"
init = "plugin_load"
exit = "plugin_unload"
-# [[plugin]]
-# path = "./plugin/example_plugin-2.lua"
-# init = "plugin_load"
-# exit = "plugin_unload" \ No newline at end of file
+[[plugin]]
+path = "./plugin/example_plugin_topic.lua"
+init = "plugin_load"
+exit = "plugin_unload"
+
+[[plugin]]
+path = "./plugin/example_plugin_message.lua"
+init = "plugin_load"
+exit = "plugin_unload" \ No newline at end of file
diff --git a/example/example_plugin_manage.c b/example/example_plugin_manage.c
index 1e4a398..3187d86 100644
--- a/example/example_plugin_manage.c
+++ b/example/example_plugin_manage.c
@@ -7,75 +7,159 @@
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
+#include <assert.h>
+#include <getopt.h>
+#include <time.h>
#define PLUGIN_CONFIG_PATH "./conf/plugin_manage.toml"
#define LUA_CONFIG_PATH "./conf/lua_plugin_manage.toml"
// #define DEBUG_PLUGIN_SCHEMA
+#define PACKET_COUNT 3
+#define SESSION_COUNT 10
+
+struct arg_config
+{
+ int session_count;
+ int packet_count;
+ int wait_time;
+ int thread_num;
+ unsigned char lua_mod;
+ unsigned char session_mod;
+ unsigned char print_mod;
+ unsigned char time_mod;
+ char *config_path;
+};
+
+struct arg_config global_arg_config = {SESSION_COUNT, PACKET_COUNT, 10, 1, 1, 1, 1, 1, LUA_CONFIG_PATH};
+
static struct lua_config_specific *config_load(const char *config_file_name, int *specific_num);
-#ifdef DEBUG_PLUGIN_SCHEMA
+static void parse_args(int argc, char *argv[]);
+// #ifdef DEBUG_PLUGIN_SCHEMA
+static void debug_plugin_manage_specifics(struct lua_config_specific *specifics, int num);
static void debug_plugin_manage_schema(struct plugin_manager_schema *schema);
-#endif
-
-#define PACKET_COUNT 10
-#define SESSION_COUNT 10
+// #endif
-int main()
+int main(int argc, char *argv[])
{
+ parse_args(argc, argv);
+ if (global_arg_config.print_mod)
+ {
+ printf("***** ***** ***** ***** ***** *****\n");
+ printf("load example config:\n");
+ printf("session count is %d\n", global_arg_config.session_count);
+ printf("packet count is %d\n", global_arg_config.packet_count);
+ printf("thread num is %d\n", global_arg_config.thread_num);
+ printf("load config from path %s\n", global_arg_config.config_path);
+ printf("***** ***** ***** ***** ***** *****\n\n");
+ }
+
+ clock_t start_clock, end_clock;
+
struct stellar st;
memset(&st, 0, sizeof(st));
+ st.thread_num = global_arg_config.thread_num;
- int num = 0;
- struct lua_config_specific *specific = config_load(LUA_CONFIG_PATH, &num);
+ /* ***** ***** 进行初始化 ***** ***** */
struct plugin_manager_schema *plug_mgr = plugin_manager_init(&st, PLUGIN_CONFIG_PATH);
+ assert(plug_mgr);
/* 初始化lua插件 */
- struct lua_plugin_manage_schema *lua_schema = lua_plugin_manage_init(&st, num, specific);
- st.lua_plug_mgr = lua_schema;
-
- struct lua_config_specific add_specific = {NULL, NULL, NULL};
- add_specific.config_specific_file = "./plugin/example_plugin-2.lua";
- add_specific.config_specific_load_func = "plugin_load";
- add_specific.config_specific_unload_func = "plugin_unload";
-
- lua_plugin_manage_load_one_specific(st.lua_plug_mgr, &add_specific);
-#ifdef DEBUG_PLUGIN_SCHEMA
- debug_plugin_manage_schema(plug_mgr);
-#endif
-
- unsigned char ip_proto=6;
- struct packet pkt={&st, TCP, ip_proto};
- struct session sess[SESSION_COUNT];
- memset(&sess, 0, sizeof(sess));
-
- for(int i=0; i < SESSION_COUNT; i++)
- {
- sess[i].plug_mgr_rt=plugin_manager_session_runtime_new(plug_mgr, &sess[i]);
- sess[i].type=SESSION_TYPE_TCP;
- }
-
- for (int j = 0; j < PACKET_COUNT; j++)
+
+ printf("now wait time to compute memory ... ...\n");
+ sleep(global_arg_config.wait_time);
+
+ struct lua_plugin_manage_schema *lua_schema = NULL;
+ if (global_arg_config.lua_mod)
{
- // plugin_manager_on_packet_ingress(plug_mgr, &pkt);
+ int num = 0;
+ struct lua_config_specific *specific = config_load(LUA_CONFIG_PATH, &num);
+ assert(specific);
+ if (global_arg_config.print_mod)
+ debug_plugin_manage_specifics(specific, num);
+
+ lua_schema = lua_plugin_manage_init(&st, num, specific);
+ st.lua_plug_mgr = lua_schema;
+ assert(lua_schema);
+ if (specific)
+ free(specific);
- for (int i = 0; i < SESSION_COUNT; i++)
+ /* 测试单个插件加载函数 */
+ struct lua_config_specific add_specific = {NULL, NULL, NULL};
+ add_specific.config_specific_file = "./plugin/example_plugin_load.lua";
+ add_specific.config_specific_load_func = "plugin_load";
+ add_specific.config_specific_unload_func = "plugin_unload";
+ lua_plugin_manage_load_one_specific(st.lua_plug_mgr, &add_specific);
+
+ if (global_arg_config.print_mod)
+ debug_lua_plugin_manage_schema(lua_schema);
+
+ printf("now wait time to compute memory ... ...\n");
+ sleep(global_arg_config.wait_time);
+ }
+
+ // #ifdef DEBUG_PLUGIN_SCHEMA
+ if (global_arg_config.print_mod)
+ debug_plugin_manage_schema(plug_mgr);
+ // #endif
+ /* ***** ***** 初始化完成 ***** ***** */
+
+ /* ***** ***** 会话相关测试 ***** ***** */
+ if (global_arg_config.session_mod)
+ {
+ unsigned char ip_proto = 6;
+ struct packet pkt = {&st, TCP, ip_proto};
+ struct session *sess = (struct session *)calloc(global_arg_config.session_count, sizeof(struct session));
+ memset(sess, 0, global_arg_config.session_count * sizeof(struct session));
+
+ /* 创建session */
+ for (int i = 0; i < global_arg_config.session_count; i++)
{
- sess[i].sess_pkt_cnt+=1;
- plugin_manager_on_session_ingress(&sess[i], &pkt);
- plugin_manager_on_session_egress(&sess[i], &pkt);
+ sess[i].plug_mgr_rt = plugin_manager_session_runtime_new(plug_mgr, &sess[i]);
+ sess[i].type = SESSION_TYPE_TCP;
}
- // plugin_manager_on_packet_egress(plug_mgr, &pkt);
- }
+ clock_t total_clock = 0;
+ for (int j = 0; j < global_arg_config.packet_count; j++)
+ {
+ plugin_manager_on_packet_ingress(plug_mgr, &pkt);
+
+ for (int i = 0; i < global_arg_config.session_count; i++)
+ {
+ sess[i].sess_pkt_cnt += 1;
+ if (global_arg_config.time_mod)
+ start_clock = clock();
+ plugin_manager_on_session_ingress(&sess[i], &pkt);
+ plugin_manager_on_session_egress(&sess[i], &pkt);
+ if (global_arg_config.time_mod)
+ {
+ end_clock = clock();
+ total_clock += (end_clock - start_clock);
+ }
+ }
+
+ if (global_arg_config.time_mod)
+ {
+ printf("for session count %d, total time is %ld\n", global_arg_config.session_count, total_clock);
+ printf("trans to second, time is %f\n", ((double)total_clock / CLOCKS_PER_SEC));
+ }
- for(int i=0; i < SESSION_COUNT; i++)
- {
- plugin_manager_on_session_closing(&sess[i]);
- plugin_manager_session_runtime_free(sess[i].plug_mgr_rt);
- }
+ plugin_manager_on_packet_egress(plug_mgr, &pkt);
+ }
+
+ /* 释放session */
+ for (int i = 0; i < global_arg_config.session_count; i++)
+ {
+ plugin_manager_on_session_closing(&sess[i]);
+ plugin_manager_session_runtime_free(sess[i].plug_mgr_rt);
+ }
+ }
+ /* ***** ***** 会话相关完成 ***** ***** */
- plugin_manager_exit(plug_mgr);
+ /* ***** ***** 释放 ***** ***** */
lua_plugin_manage_exit(lua_schema);
+ plugin_manager_exit(plug_mgr);
+ /* ***** ***** 释放 ***** ***** */
return 0;
}
@@ -132,15 +216,83 @@ static struct lua_config_specific *config_load(const char *config_file_name, int
return new_spec;
}
-#ifdef DEBUG_PLUGIN_SCHEMA
+static void parse_args(int argc, char *argv[])
+{
+ int opt;
+ static const char *shortopts = "s:p:w:c:t:lnde";
+ static struct option longopts[] = {
+ {"session_count", required_argument, NULL, 's'},
+ {"packet_count", required_argument, NULL, 'p'},
+ {"wait_time", required_argument, NULL, 'w'},
+ {"config_path", required_argument, NULL, 'c'},
+ {"thread_num", required_argument, NULL, 't'},
+ {"disable_lua", no_argument, NULL, 'l'},
+ {"disable_session", no_argument, NULL, 'n'},
+ {"print_debug", no_argument, NULL, 'd'},
+ {"disable_time", no_argument, NULL, 'e'},
+ {0, 0, 0, 0},
+ };
+
+ while ((opt = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1)
+ {
+ switch (opt)
+ {
+ case 's':
+ global_arg_config.session_count = atoi(optarg);
+ break;
+ case 'p':
+ global_arg_config.packet_count = atoi(optarg);
+ break;
+ case 'w':
+ global_arg_config.wait_time = atoi(optarg);
+ break;
+ case 'c':
+ global_arg_config.config_path = strdup(optarg);
+ break;
+ case 't':
+ global_arg_config.thread_num = atoi(optarg);
+ break;
+ case 'l':
+ global_arg_config.lua_mod = 0;
+ break;
+ case 'n':
+ global_arg_config.session_mod = 0;
+ break;
+ case 'd':
+ global_arg_config.print_mod = 1;
+ break;
+ case 'e':
+ global_arg_config.time_mod = 0;
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+// #ifdef DEBUG_PLUGIN_SCHEMA
+static void debug_plugin_manage_specifics(struct lua_config_specific *specifics, int num)
+{
+ printf("***** ***** ***** ***** ***** *****\n");
+ printf("load config specifics count is %d\n", num);
+ for (int i = 0; i < num; ++i)
+ {
+ printf("[%d]file path: %s\n", i, specifics[i].config_specific_file);
+ printf("[%d]load func: %s\n", i, specifics[i].config_specific_load_func);
+ printf("[%d]unload func: %s\n", i, specifics[i].config_specific_unload_func);
+ }
+ printf("***** ***** ***** ***** ***** *****\n\n");
+}
+
static void debug_plugin_manage_schema(struct plugin_manager_schema *schema)
{
- struct registered_session_plugin_schema * plugin = NULL;
- for (int i = 0; i < (int)utarray_len(schema->registered_session_plugin_array); ++i) {
+ struct registered_session_plugin_schema *plugin = NULL;
+ for (int i = 0; i < (int)utarray_len(schema->registered_session_plugin_array); ++i)
+ {
plugin = (struct registered_session_plugin_schema *)utarray_eltptr(schema->registered_session_plugin_array, (unsigned int)i);
printf("plugin[%d]: new func %p, free func %p, env %p\n", i, plugin->on_ctx_new, plugin->on_ctx_free, plugin->plugin_env);
}
+ printf("\n");
return;
}
-#endif
-
+// #endif
diff --git a/example/include/plugin_manager_gtest_mock.h b/example/include/plugin_manager_gtest_mock.h
index 7580499..f00866e 100644
--- a/example/include/plugin_manager_gtest_mock.h
+++ b/example/include/plugin_manager_gtest_mock.h
@@ -14,6 +14,7 @@ struct stellar
{
struct plugin_manager_schema *plug_mgr;
struct lua_plugin_manage_schema * lua_plug_mgr;
+ int thread_num;
};
struct packet
@@ -40,8 +41,6 @@ enum session_type session_get_type(struct session *sess)
return sess->type;
}
-
-
int session_get_current_plugin_id(struct session *sess)
{
return sess->plug_mgr_rt->current_session_plugin_id;
@@ -67,7 +66,7 @@ int session_get_current_thread_id(struct session *sess)
int stellar_get_worker_thread_num(struct stellar *st)
{
- return 16;
+ return st->thread_num;
}
int stellar_get_current_thread_id(struct stellar *st)
diff --git a/example/plugin/example_plugin-1.lua b/example/plugin/example_plugin-1.lua
deleted file mode 100644
index b185921..0000000
--- a/example/plugin/example_plugin-1.lua
+++ /dev/null
@@ -1,26 +0,0 @@
-function plugin_ctx_new(sess, plug_env, sess_context)
- print("now begin to create new ctx context example-1")
- print(plug_env.data)
- sess_context.id = 100
-end
-
-function plugin_ctx_free(sess, sess_context, plug_env)
- print("now begin to free ctx context example-1")
- print(sess_context.id)
-end
-
-function plugin_load(stellar, plug_env)
- print("now begin to load plugin example-1")
- plug_env.data = "my example-1 plugin env"
- plug_env.newid = 1000
- plug_env.id = plugin_manage.register(stellar, plugin_ctx_new, plugin_ctx_free, plug_env)
- plug_env.messid = 100
-end
-
-function plugin_unload(plug_env)
- print("now running unload plugin example-1 function")
- -- print(plug_env.__penv_pointer)
- -- print(plug_env.data)
- -- print(plug_env.newid)
- -- print(plug_env.messid)
-end \ No newline at end of file
diff --git a/example/plugin/example_plugin-2.lua b/example/plugin/example_plugin-2.lua
deleted file mode 100644
index 62c13ed..0000000
--- a/example/plugin/example_plugin-2.lua
+++ /dev/null
@@ -1,55 +0,0 @@
-function plugin_ctx_new(sess, plug_env, sess_context)
- print("now create new ctx example-2, plugin id ", plug_env.id)
- local sesstype = session.gettype(sess)
- sess_context.id = 200
- sess_context.called = 0
- print("session type is ", sesstype)
- -- session.setid(sess, 50000)
-end
-
-function plugin_ctx_free(sess, sess_context, plug_env)
- print(plug_env.id, sess_context.id, sess_context.called, plug_env.called)
- print("now begin to free ctx context example-2")
-end
-
-function on_message(sess, topic_id, msg, sess_context, env)
- -- print(sess, topic_id, msg, sess_context, env)
- sess_context.called = sess_context.called + 1
- env.calledcount = env.calledcount + 1
- print("call on message", env.id, env.calledcount, sess_context.called)
-end
-
-function free_message()
- print("free message")
-end
-
-function plugin_load(stellar, plug_env)
- print("now begin to load plugin example-2")
- plug_env.id = plugin_manage.register(stellar, plugin_ctx_new, plugin_ctx_free, plug_env)
- topic_id = message.gettopicid(stellar, "TCP")
- print("get topic id is ", topic_id)
- message.subscribetopic(stellar, topic_id, on_message, plug_env.id)
- -- print("subscribetopic result", bool)
- -- mq_topic_id = message.gettopicid(stellar, "SESSION_MQ_TOPIC")
- -- print("get session mq topic is", mq_topic_id)
- -- message.subscribetopic(stellar, mq_topic_id, on_message, plug_env.id)
-
- plug_env.calledcount = 0
-
- --[[
- create_id = message.gettopicid(stellar, "TOPIC_LUA_SESSION_TEST")
- if (create_id < 0)
- then
- print("no topic, create new one")
- create_table = {}
- create_id = message.createtopic(stellar, "TOPIC_LUA_SESSION_TEST", free_message, create_table)
- print("create topic is ", create_id)
- else
- print("has created, id is ", create_id)
- end
- --]]
-end
-
-function plugin_unload(plug_env)
- print("now running unload plugin example-2 function, plugin id is ", plug_env.id)
-end \ No newline at end of file
diff --git a/example/plugin/example_plugin_load.lua b/example/plugin/example_plugin_load.lua
new file mode 100644
index 0000000..aaa501d
--- /dev/null
+++ b/example/plugin/example_plugin_load.lua
@@ -0,0 +1,11 @@
+function plugin_load(stellar, plug_env)
+ print("now load lua plugin example load")
+ print("this example aims to test load function")
+ plug_env.data = "load plugin env"
+ print("plugin env data is", plug_env.data)
+end
+
+function plugin_unload(plug_env)
+ print("now unload lua plugin example load")
+ print("plugin env data is", plug_env.data)
+end \ No newline at end of file
diff --git a/example/plugin/example_plugin_message.lua b/example/plugin/example_plugin_message.lua
new file mode 100644
index 0000000..3d1f52b
--- /dev/null
+++ b/example/plugin/example_plugin_message.lua
@@ -0,0 +1,30 @@
+function plugin_ctx_new(sess, plug_env, sess_context)
+ -- print("now create new ctx example message, plugin id", plug_env.id)
+end
+
+function plugin_ctx_free(sess, sess_context, plug_env)
+ -- print("now begin to free ctx context example message")
+end
+
+function on_message(sess, topic_id, msg, sess_context, env)
+ -- print("message call on message function, id", topic_id)
+ -- print("message is", msg.data)
+end
+
+function plugin_load(stellar, plug_env)
+ print("now begin to load plugin example messaga")
+ print("this example aims to test topic functions")
+
+ plug_env.st = stellar
+ plug_env.id = plugin_manage.register(stellar, plugin_ctx_new, plugin_ctx_free, plug_env)
+ plug_env.data = "this is message example plug env data"
+
+ --[[ 订阅TOPIC_SESSION_STAT, 并完成函数注册 ]]
+ test_topic_id = message.gettopicid(stellar, "TOPIC_SESSION_STAT")
+ message.subscribetopic(stellar, test_topic_id, on_message, plug_env.id)
+end
+
+function plugin_unload(plug_env)
+ print("now unload lua plugin example message")
+ print("plugin env data is", plug_env.data)
+end \ No newline at end of file
diff --git a/example/plugin/example_plugin_regist.lua b/example/plugin/example_plugin_regist.lua
new file mode 100644
index 0000000..4cc3cd3
--- /dev/null
+++ b/example/plugin/example_plugin_regist.lua
@@ -0,0 +1,25 @@
+function plugin_ctx_new(sess, plug_env, sess_context)
+ print("now begin to create new ctx context example regist")
+ sess_context.data = "this is example regist sess context data"
+ print("session data is", sess_context.data)
+end
+
+function plugin_ctx_free(sess, sess_context, plug_env)
+ print("now begin to free ctx context example regist")
+ print("session data is", sess_context.data)
+end
+
+function plugin_load(stellar, plug_env)
+ print("now load lua plugin example regist")
+ print("this example aims to test regist function")
+ plug_env.data = "my example regist plugin env"
+ --[[ 由于未订阅消息, 注册函数应该永远不会触发 ]]
+ plug_env.id = plugin_manage.register(stellar, plugin_ctx_new, plugin_ctx_free, plug_env)
+ print("plugin env data is", plug_env.data)
+ print("after regist, plugin id is", plug_env.id)
+end
+
+function plugin_unload(plug_env)
+ print("now unload lua plugin example regist")
+ print("plugin env data is", plug_env.data)
+end \ No newline at end of file
diff --git a/example/plugin/example_plugin_topic.lua b/example/plugin/example_plugin_topic.lua
new file mode 100644
index 0000000..a596cc6
--- /dev/null
+++ b/example/plugin/example_plugin_topic.lua
@@ -0,0 +1,57 @@
+function plugin_ctx_new(sess, plug_env, sess_context)
+ -- print("now create new ctx example topic, plugin id", plug_env.id)
+ msg = {}
+ msg.data = "this is message"
+ message.publishmessage(sess, plug_env.topic_id, msg)
+end
+
+function plugin_ctx_free(sess, sess_context, plug_env)
+ -- print("now begin to free ctx context example topic")
+end
+
+function on_message(sess, topic_id, msg, sess_context, env)
+ -- print("topic call on message function, id", topic_id)
+end
+
+function free_message(sess, msg, private_env)
+ -- print("message need to free is", msg.data)
+ -- print("env id is ", private_env.id)
+end
+
+function plugin_load(stellar, plug_env)
+ print("now begin to load plugin example topic")
+ print("this example aims to test topic functions")
+
+ plug_env.st = stellar
+ plug_env.id = plugin_manage.register(stellar, plugin_ctx_new, plugin_ctx_free, plug_env)
+ plug_env.data = "this is topic example plug env data"
+
+ --[[ 获取TCP topic, 并完成订阅 ]]
+ tcp_topic_id = message.gettopicid(stellar, "TCP")
+ print("get TCP topic id is", tcp_topic_id)
+ message.subscribetopic(stellar, tcp_topic_id, on_message, plug_env.id)
+
+ --[[ 创建TOPIC_SESSION_STAT, 并完成函数注册 ]]
+ msg_private_table = {}
+ msg_private_table.data = "this is example topic msg private data"
+ test_topic_id = message.gettopicid(stellar, "TOPIC_SESSION_STAT")
+ if (test_topic_id < 0)
+ then
+ --[[ 该消息未创建, 创建该topic ]]
+ test_topic_id = message.createtopic(stellar, "TOPIC_SESSION_STAT", free_message, msg_private_table)
+ print("create topic is", test_topic_id)
+ else
+ --[[ 如果该消息已经注册, 更新其注册函数 ]]
+ message.updatetopic(stellar, test_topic_id, free_message, msg_private_table)
+ print("topic already created, id is", test_topic_id)
+ end
+ plug_env.tcp_topic_id = tcp_topic_id
+ plug_env.topic_id = test_topic_id
+end
+
+function plugin_unload(plug_env)
+ print("now unload lua plugin example topic")
+ print("plugin env data is", plug_env.data)
+ print("now destory topic id is", plug_env.topic_id)
+ message.destorytopic(plug_env.st, plug_env.topic_id)
+end \ No newline at end of file
diff --git a/example/simple_example_plugin.c b/example/simple_example_plugin.c
index a0aaace..a35d395 100644
--- a/example/simple_example_plugin.c
+++ b/example/simple_example_plugin.c
@@ -303,12 +303,13 @@ void simple_session_packet_plugin_exit(void *plugin_env)
static void simple_plugin_sub_session_stat_on_msg(struct session *sess, int topic_id, const void *data, void *plugin_ctx , void *plugin_env)
{
-
+ // printf("get message, %d\n", topic_id);
struct simple_stellar_plugin_env *env = (struct simple_stellar_plugin_env *)plugin_env;
if(topic_id == env->egress_topic_id)
{
session_mq_ignore_message(sess, topic_id, env->session_plugin_id);
}
+#if 0
if (topic_id == env->stat_topic_id)
{
struct mq_message_stat *stat = (struct mq_message_stat *)data;
@@ -321,6 +322,7 @@ static void simple_plugin_sub_session_stat_on_msg(struct session *sess, int topi
// print_session_stat(sess, stat, env->plugin_id, __FUNCTION__);
session_mq_unignore_message(sess, env->egress_topic_id, env->session_plugin_id);
}
+#endif
return;
}
@@ -357,101 +359,4 @@ void simple_plugin_sub_session_stat_exit(void *plugin_env)
{
if(plugin_env)FREE(plugin_env);
return;
-}
-
-
-
-
-struct session_plugin_env
-{
- struct plugin_manager_schema *plug_mgr;
- int N_session;
- int N_per_session_pkt_cnt;
- int intrinsc_tcp_topic_id;
- int intrinsc_egress_topic_id;
- int basic_exdata_idx;
- int basic_exdata_free_called;
- int basic_on_session_ingress_called;
- int basic_on_session_egress_called;
- int basic_ctx_new_called;
- int basic_ctx_free_called;
- int test_mq_pub_plugin_id;
- int test_mq_sub_plugin_id;
- int test_mq_pub_called;
- int test_mq_sub_called;
- int test_mq_free_called;
- int test_mq_topic_id;
- int plugin_id_1;
- int plugin_id_2;
- int plugin_id_1_called;
- int plugin_id_2_called;
-};
-
-struct test_basic_ctx
-{
- int called;
-};
-
-static void *test_dettach_session_ctx_new(struct session *sess, void *plugin_env)
-{
- printf("now running ctx new\n");
- struct test_basic_ctx *ctx=(struct test_basic_ctx *)calloc(1, sizeof(struct test_basic_ctx));
- struct session_plugin_env *env = (struct session_plugin_env *)plugin_env;
- session_mq_publish_message(sess, env->test_mq_topic_id, plugin_env);// publish success, but won't be delivered to currnet plugin
- stellar_session_plugin_dettach_current_session(sess);
- ctx->called+=1;
- session_mq_publish_message(sess, env->test_mq_topic_id, plugin_env);// publish success, but won't be delivered to currnet plugin
- return ctx;
-}
-
-static void test_dettach_session_ctx_free(struct session *sess, void *session_ctx, void *plugin_env)
-{
- struct session_plugin_env *env = (struct session_plugin_env *)plugin_env;
- env->basic_ctx_free_called+=1;
- struct test_basic_ctx *ctx=(struct test_basic_ctx *)session_ctx;
- printf("now free ctx, called is %d\n", ctx->called);
- session_mq_publish_message(sess, env->test_mq_topic_id, plugin_env);// publish success, but won't be delivered to currnet plugin
- free(ctx);
-}
-
-static void test_dettach_on_session(struct session *sess, int topic_id, const void *msg , void *per_session_ctx, void *plugin_env)
-{
- struct test_basic_ctx *ctx=(struct test_basic_ctx *)per_session_ctx;
- // struct session_plugin_env *env = (struct session_plugin_env *)plugin_env;
- ctx->called+=1;
-}
-
-static void test_dettach_msg_free(struct session *sess, void *msg, void *msg_free_arg)
-{
- struct session_plugin_env *env = (struct session_plugin_env *)msg_free_arg;
- env->test_mq_free_called+=1;
- return;
-}
-
-void * test_plugin_init(struct stellar * st)
-{
- struct session_plugin_env * env = CALLOC(struct session_plugin_env, 1);
- // env.plug_mgr=plug_mgr;
- // env->N_per_session_pkt_cnt=10;
- // env->N_session=10
-
- /* 先插入一个C插件 */
- int plugin_id=stellar_session_plugin_register(st, test_dettach_session_ctx_new, test_dettach_session_ctx_free, env);
- printf("plugin regist id is %d\n", plugin_id);
-
- env->intrinsc_tcp_topic_id=stellar_session_mq_get_topic_id(st, TOPIC_TCP);
- printf("TCP topic id is %d\n", env->intrinsc_egress_topic_id);
- stellar_session_mq_subscribe(st, env->intrinsc_tcp_topic_id, test_dettach_on_session, plugin_id);
-
- env->test_mq_topic_id=stellar_session_mq_create_topic(st, "SESSION_MQ_TOPIC", test_dettach_msg_free, &env);
- stellar_session_mq_subscribe(st, env->test_mq_topic_id, test_dettach_on_session, plugin_id);
-
- return env;
-}
-
-void test_plugin_free(void * plug_env)
-{
- struct session_plugin_env * env = (struct session_plugin_env *)plug_env;
- if (env) free(env);
- return;
} \ No newline at end of file