add timeout test case

tcp timeout init (SYN / SYNACK)
    tcp timeout handshake
    tcp timeout data
    tcp timeout half closed (session opening / session active)
    tcp timeout time wait
    udp timeout data (session opening / session active)
This commit is contained in:
luwenpeng
2024-01-25 16:08:55 +08:00
parent 3f1a1f3fc3
commit d3367fc86a
19 changed files with 914 additions and 284 deletions

View File

@@ -585,7 +585,7 @@ static void session_manager_update_session_base(struct session_manager *mgr, str
{
session_set_type(sess, SESSION_TYPE_TCP);
}
session_set_create_time(sess, timestamp_get_msec());
session_set_create_time(sess, timestamp_get_sec());
}
static void session_manager_update_session_packet(struct session_manager *mgr, struct session *sess, const struct packet *pkt, enum session_dir curr_dir)
@@ -609,7 +609,7 @@ static void session_manager_update_session_packet(struct session_manager *mgr, s
}
session_set0_cur_pkt(sess, pkt);
session_set_cur_dir(sess, curr_dir);
session_set_last_time(sess, timestamp_get_msec());
session_set_last_time(sess, timestamp_get_sec());
}
static void session_manager_update_udp_to_opening(struct session_manager *mgr, struct session *sess)
@@ -1128,7 +1128,7 @@ struct session *session_manager_get_expired_session(struct session_manager *mgr)
{
session_manager_recycle_session(mgr);
struct session *sess = session_timer_expire_session(mgr->sess_timer, timestamp_get_msec());
struct session *sess = session_timer_expire_session(mgr->sess_timer, timestamp_get_sec());
if (sess)
{
session_run_expirecb(sess);
@@ -1160,44 +1160,22 @@ struct session *session_manager_get_evicted_session(struct session_manager *mgr)
return sess;
}
// return interval (seconds) to next required update, return 0 if no session
uint64_t session_manager_get_expire_interval(struct session_manager *mgr)
{
return session_timer_next_expire_interval(mgr->sess_timer);
}
uint64_t session_manager_get_session_number(struct session_manager *mgr, enum session_type type, enum session_state state)
void session_manager_get_session_counter(struct session_manager *mgr, struct session_counter *out)
{
if (type == SESSION_TYPE_TCP)
{
switch (state)
{
case SESSION_STATE_OPENING:
return mgr->tcp_opening_sess_num;
case SESSION_STATE_ACTIVE:
return mgr->tcp_active_sess_num;
case SESSION_STATE_CLOSING:
return mgr->tcp_closing_sess_num;
default:
return 0;
}
}
else if (type == SESSION_TYPE_UDP)
{
switch (state)
{
case SESSION_STATE_OPENING:
return mgr->udp_opening_sess_num;
case SESSION_STATE_ACTIVE:
return mgr->udp_active_sess_num;
case SESSION_STATE_CLOSING:
return mgr->udp_closing_sess_num;
default:
return 0;
}
}
out->tcp_sess_num = mgr->tcp_sess_num;
out->tcp_opening_sess_num = mgr->tcp_opening_sess_num;
out->tcp_active_sess_num = mgr->tcp_active_sess_num;
out->tcp_closing_sess_num = mgr->tcp_closing_sess_num;
return 0;
out->udp_sess_num = mgr->udp_sess_num;
out->udp_opening_sess_num = mgr->udp_opening_sess_num;
out->udp_active_sess_num = mgr->udp_active_sess_num;
out->udp_closing_sess_num = mgr->udp_closing_sess_num;
}
void session_manager_print_status(struct session_manager *mgr)