✨ feat(plugin_manager): add session plugin with hook
This commit is contained in:
@@ -957,7 +957,7 @@ TEST(plugin_manager, no_plugin_register_runtime) {
|
||||
// pesudo running stage
|
||||
for(int i=0; i < env.N_session; i++)
|
||||
{
|
||||
sess[i].plug_mgr_rt=plugin_manager_session_runtime_new(plug_mgr, &sess[i]);
|
||||
plugin_manager_on_session_new(plug_mgr, &sess[i]);
|
||||
sess[i].type=SESSION_TYPE_TCP;
|
||||
}
|
||||
|
||||
@@ -978,8 +978,7 @@ TEST(plugin_manager, no_plugin_register_runtime) {
|
||||
|
||||
for(int i=0; i < env.N_session; i++)
|
||||
{
|
||||
plugin_manager_on_session_closing(&sess[i]);
|
||||
plugin_manager_session_runtime_free(sess[i].plug_mgr_rt);
|
||||
plugin_manager_on_session_free(&sess[i]);
|
||||
}
|
||||
|
||||
//exit stage
|
||||
@@ -1091,7 +1090,7 @@ TEST(plugin_manager, session_plugin_on_intrinsic_ingress_egress) {
|
||||
|
||||
for(int i=0; i < env.N_session; i++)
|
||||
{
|
||||
sess[i].plug_mgr_rt=plugin_manager_session_runtime_new(plug_mgr, &sess[i]);
|
||||
plugin_manager_on_session_new(plug_mgr, &sess[i]);
|
||||
sess[i].type=SESSION_TYPE_TCP;
|
||||
}
|
||||
|
||||
@@ -1110,8 +1109,7 @@ TEST(plugin_manager, session_plugin_on_intrinsic_ingress_egress) {
|
||||
|
||||
for(int i=0; i < env.N_session; i++)
|
||||
{
|
||||
plugin_manager_on_session_closing(&sess[i]);
|
||||
plugin_manager_session_runtime_free(sess[i].plug_mgr_rt);
|
||||
plugin_manager_on_session_free(&sess[i]);
|
||||
}
|
||||
|
||||
plugin_manager_exit(plug_mgr);
|
||||
@@ -1237,7 +1235,7 @@ TEST(plugin_manager, session_plugin_ignore_on_ctx_new_sub_other_msg) {
|
||||
|
||||
for(int i=0; i < env.N_session; i++)
|
||||
{
|
||||
sess[i].plug_mgr_rt=plugin_manager_session_runtime_new(plug_mgr, &sess[i]);
|
||||
plugin_manager_on_session_new(plug_mgr, &sess[i]);
|
||||
sess[i].type=SESSION_TYPE_TCP;
|
||||
}
|
||||
|
||||
@@ -1257,8 +1255,7 @@ TEST(plugin_manager, session_plugin_ignore_on_ctx_new_sub_other_msg) {
|
||||
|
||||
for(int i=0; i < env.N_session; i++)
|
||||
{
|
||||
plugin_manager_on_session_closing(&sess[i]);
|
||||
plugin_manager_session_runtime_free(sess[i].plug_mgr_rt);
|
||||
plugin_manager_on_session_free(&sess[i]);
|
||||
}
|
||||
|
||||
plugin_manager_exit(plug_mgr);
|
||||
@@ -1405,7 +1402,7 @@ TEST(plugin_manager, session_plugin_pub_msg_overlimt) {
|
||||
|
||||
for(int i=0; i < env.N_session; i++)
|
||||
{
|
||||
sess[i].plug_mgr_rt=plugin_manager_session_runtime_new(plug_mgr, &sess[i]);
|
||||
plugin_manager_on_session_new(plug_mgr, &sess[i]);
|
||||
sess[i].type=SESSION_TYPE_TCP;
|
||||
}
|
||||
|
||||
@@ -1424,8 +1421,7 @@ TEST(plugin_manager, session_plugin_pub_msg_overlimt) {
|
||||
|
||||
for(int i=0; i < env.N_session; i++)
|
||||
{
|
||||
plugin_manager_on_session_closing(&sess[i]);
|
||||
plugin_manager_session_runtime_free(sess[i].plug_mgr_rt);
|
||||
plugin_manager_on_session_free(&sess[i]);
|
||||
}
|
||||
|
||||
plugin_manager_exit(plug_mgr);
|
||||
@@ -1516,7 +1512,7 @@ TEST(plugin_manager, session_plugin_on_ctx_new_then_dettach) {
|
||||
|
||||
for(int i=0; i < env.N_session; i++)
|
||||
{
|
||||
sess[i].plug_mgr_rt=plugin_manager_session_runtime_new(plug_mgr, &sess[i]);
|
||||
plugin_manager_on_session_new(plug_mgr, &sess[i]);
|
||||
sess[i].type=SESSION_TYPE_TCP;
|
||||
}
|
||||
|
||||
@@ -1536,8 +1532,7 @@ TEST(plugin_manager, session_plugin_on_ctx_new_then_dettach) {
|
||||
|
||||
for(int i=0; i < env.N_session; i++)
|
||||
{
|
||||
plugin_manager_on_session_closing(&sess[i]);
|
||||
plugin_manager_session_runtime_free(sess[i].plug_mgr_rt);
|
||||
plugin_manager_on_session_free(&sess[i]);
|
||||
}
|
||||
|
||||
plugin_manager_exit(plug_mgr);
|
||||
@@ -1559,7 +1554,7 @@ static void test_invalid_pub_msg_session_ctx_free(struct session *sess, void *se
|
||||
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;
|
||||
EXPECT_EQ(ctx->called,(env->N_per_session_pkt_cnt+1));
|
||||
EXPECT_EQ(ctx->called,(env->N_per_session_pkt_cnt));
|
||||
|
||||
EXPECT_EQ(session_mq_publish_message(sess, env->test_mq_topic_id, ctx), -1);// illegal publish when session closing
|
||||
|
||||
@@ -1608,7 +1603,7 @@ TEST(plugin_manager, session_plugin_pub_on_ctx_free) {
|
||||
// pesudo running stage
|
||||
for(int i=0; i < env.N_session; i++)
|
||||
{
|
||||
sess[i].plug_mgr_rt=plugin_manager_session_runtime_new(plug_mgr, &sess[i]);
|
||||
plugin_manager_on_session_new(plug_mgr, &sess[i]);
|
||||
sess[i].type=SESSION_TYPE_TCP;
|
||||
}
|
||||
|
||||
@@ -1628,8 +1623,7 @@ TEST(plugin_manager, session_plugin_pub_on_ctx_free) {
|
||||
|
||||
for(int i=0; i < env.N_session; i++)
|
||||
{
|
||||
plugin_manager_on_session_closing(&sess[i]);
|
||||
plugin_manager_session_runtime_free(sess[i].plug_mgr_rt);
|
||||
plugin_manager_on_session_free(&sess[i]);
|
||||
}
|
||||
|
||||
// pesudo exit stage
|
||||
@@ -1665,20 +1659,25 @@ static void test_session_closing_ctx_free(struct session *sess, void *session_ct
|
||||
FREE(ctx);
|
||||
}
|
||||
|
||||
static void test_session_closing_on_intrisic_msg(struct session *sess, int topic_id, const void *msg, void *per_session_ctx, void *plugin_env)
|
||||
|
||||
static void test_session_closing_on_session_free(struct session *sess, void *per_session_ctx, void *plugin_env)
|
||||
{
|
||||
struct test_session_closing_ctx *ctx=(struct test_session_closing_ctx *)per_session_ctx;
|
||||
struct session_plugin_env *env = (struct session_plugin_env *)plugin_env;
|
||||
if(msg)ctx->pkt_called+=1;
|
||||
if(sess->state==SESSION_STATE_CLOSING)
|
||||
{
|
||||
EXPECT_EQ(msg,nullptr);
|
||||
ctx->session_free_called+=1;
|
||||
session_mq_publish_message(sess, env->test_mq_topic_id, env);
|
||||
env->test_mq_pub_called+=1;
|
||||
}
|
||||
}
|
||||
|
||||
static void test_session_closing_on_intrisic_msg(struct session *sess, int topic_id, const void *msg, void *per_session_ctx, void *plugin_env)
|
||||
{
|
||||
struct test_session_closing_ctx *ctx=(struct test_session_closing_ctx *)per_session_ctx;
|
||||
if(msg)ctx->pkt_called+=1;
|
||||
}
|
||||
|
||||
static void test_session_closing_on_userdefine_msg(struct session *sess, int topic_id, const void *msg, void *per_session_ctx, void *plugin_env)
|
||||
{
|
||||
struct test_session_closing_ctx *ctx=(struct test_session_closing_ctx *)per_session_ctx;
|
||||
@@ -1701,7 +1700,7 @@ TEST(plugin_manager, session_plugin_pub_msg_on_closing) {
|
||||
|
||||
// plugin manager register plugin
|
||||
|
||||
int plugin_id=stellar_session_plugin_register(&st, test_session_closing_ctx_new, test_session_closing_ctx_free, &env);
|
||||
int plugin_id=stellar_session_plugin_register_with_hook(&st, test_session_closing_ctx_new, test_session_closing_ctx_free, NULL, test_session_closing_on_session_free , &env);
|
||||
EXPECT_GE(plugin_id,0);
|
||||
|
||||
env.intrinsc_tcp_topic_id=stellar_mq_get_topic_id(&st, TOPIC_TCP_INPUT);
|
||||
@@ -1727,7 +1726,7 @@ TEST(plugin_manager, session_plugin_pub_msg_on_closing) {
|
||||
for(int i=0; i < env.N_session; i++)
|
||||
{
|
||||
sess[i].state=SESSION_STATE_OPENING;
|
||||
sess[i].plug_mgr_rt=plugin_manager_session_runtime_new(plug_mgr, &sess[i]);
|
||||
plugin_manager_on_session_new(plug_mgr, &sess[i]);
|
||||
sess[i].type=SESSION_TYPE_TCP;
|
||||
}
|
||||
|
||||
@@ -1749,8 +1748,7 @@ TEST(plugin_manager, session_plugin_pub_msg_on_closing) {
|
||||
for(int i=0; i < env.N_session; i++)
|
||||
{
|
||||
sess[i].state=SESSION_STATE_CLOSING;
|
||||
plugin_manager_on_session_closing(&sess[i]);
|
||||
plugin_manager_session_runtime_free(sess[i].plug_mgr_rt);
|
||||
plugin_manager_on_session_free(&sess[i]);
|
||||
}
|
||||
|
||||
// pesudo exit stage
|
||||
@@ -1853,7 +1851,7 @@ TEST(plugin_manager, test_session_mq_topic_is_active) {
|
||||
for(int i=0; i < env.N_session; i++)
|
||||
{
|
||||
sess[i].state=SESSION_STATE_OPENING;
|
||||
sess[i].plug_mgr_rt=plugin_manager_session_runtime_new(plug_mgr, &sess[i]);
|
||||
plugin_manager_on_session_new(plug_mgr, &sess[i]);
|
||||
sess[i].type=SESSION_TYPE_TCP;
|
||||
}
|
||||
|
||||
@@ -1875,8 +1873,7 @@ TEST(plugin_manager, test_session_mq_topic_is_active) {
|
||||
for(int i=0; i < env.N_session; i++)
|
||||
{
|
||||
sess[i].state=SESSION_STATE_CLOSING;
|
||||
plugin_manager_on_session_closing(&sess[i]);
|
||||
plugin_manager_session_runtime_free(sess[i].plug_mgr_rt);
|
||||
plugin_manager_on_session_free(&sess[i]);
|
||||
}
|
||||
|
||||
// pesudo exit stage
|
||||
@@ -1961,7 +1958,7 @@ TEST(plugin_manager, test_session_dettach) {
|
||||
for(int i=0; i < env.N_session; i++)
|
||||
{
|
||||
sess[i].state=SESSION_STATE_OPENING;
|
||||
sess[i].plug_mgr_rt=plugin_manager_session_runtime_new(plug_mgr, &sess[i]);
|
||||
plugin_manager_on_session_new(plug_mgr, &sess[i]);
|
||||
sess[i].type=SESSION_TYPE_TCP;
|
||||
}
|
||||
|
||||
@@ -1983,8 +1980,7 @@ TEST(plugin_manager, test_session_dettach) {
|
||||
for(int i=0; i < env.N_session; i++)
|
||||
{
|
||||
sess[i].state=SESSION_STATE_CLOSING;
|
||||
plugin_manager_on_session_closing(&sess[i]);
|
||||
plugin_manager_session_runtime_free(sess[i].plug_mgr_rt);
|
||||
plugin_manager_on_session_free(&sess[i]);
|
||||
}
|
||||
|
||||
// pesudo exit stage
|
||||
@@ -2099,7 +2095,7 @@ TEST(plugin_manager, test_session_mq_priority) {
|
||||
for(int i=0; i < env.N_session; i++)
|
||||
{
|
||||
sess[i].state=SESSION_STATE_OPENING;
|
||||
sess[i].plug_mgr_rt=plugin_manager_session_runtime_new(plug_mgr, &sess[i]);
|
||||
plugin_manager_on_session_new(plug_mgr, &sess[i]);
|
||||
sess[i].type=SESSION_TYPE_TCP;
|
||||
}
|
||||
|
||||
@@ -2121,16 +2117,15 @@ TEST(plugin_manager, test_session_mq_priority) {
|
||||
for(int i=0; i < env.N_session; i++)
|
||||
{
|
||||
sess[i].state=SESSION_STATE_CLOSING;
|
||||
plugin_manager_on_session_closing(&sess[i]);
|
||||
plugin_manager_session_runtime_free(sess[i].plug_mgr_rt);
|
||||
plugin_manager_on_session_free(&sess[i]);
|
||||
}
|
||||
|
||||
// pesudo exit stage
|
||||
plugin_manager_exit(plug_mgr);
|
||||
|
||||
// each session publish TCP TOPIC per_session_pkt_cnt+1, and SESSION_PRIORITY_TOPIC 2*(msg per_session_pkt_cnt+1)
|
||||
EXPECT_EQ(env.plugin_id_1_called,env.N_session*((env.N_per_session_pkt_cnt+1)*3));
|
||||
EXPECT_EQ(env.plugin_id_2_called,env.N_session*((env.N_per_session_pkt_cnt+1)*3));
|
||||
EXPECT_EQ(env.plugin_id_1_called,env.N_session*((env.N_per_session_pkt_cnt)*3));
|
||||
EXPECT_EQ(env.plugin_id_2_called,env.N_session*((env.N_per_session_pkt_cnt)*3));
|
||||
|
||||
}
|
||||
|
||||
@@ -2184,7 +2179,7 @@ TEST(plugin_manager, session_exdata_free_pub_msg) {
|
||||
// pesudo running stage
|
||||
for(int i=0; i < env.N_session; i++)
|
||||
{
|
||||
sess[i].plug_mgr_rt=plugin_manager_session_runtime_new(plug_mgr, &sess[i]);
|
||||
plugin_manager_on_session_new(plug_mgr, &sess[i]);
|
||||
sess[i].type=SESSION_TYPE_TCP;
|
||||
}
|
||||
|
||||
@@ -2204,8 +2199,7 @@ TEST(plugin_manager, session_exdata_free_pub_msg) {
|
||||
|
||||
for(int i=0; i < env.N_session; i++)
|
||||
{
|
||||
plugin_manager_on_session_closing(&sess[i]);
|
||||
plugin_manager_session_runtime_free(sess[i].plug_mgr_rt);
|
||||
plugin_manager_on_session_free(&sess[i]);
|
||||
}
|
||||
|
||||
// pesudo exit stage
|
||||
|
||||
Reference in New Issue
Block a user