【修改】更新单元测试

This commit is contained in:
niubinghui
2024-09-02 16:10:51 +08:00
parent 0988578c6a
commit e063af614e
10 changed files with 347 additions and 244 deletions

View File

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