【修改】更新单元测试
This commit is contained in:
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user