add test case: overload evict tcp (old/new) session

This commit is contained in:
luwenpeng
2024-01-26 14:13:54 +08:00
parent 5ba0e4bb3b
commit 6050d15e29
21 changed files with 424 additions and 145 deletions

View File

@@ -129,6 +129,16 @@ static inline void ipv4_hdr_set_ipid(struct ip *hdr, uint16_t ipid)
hdr->ip_id = htons(ipid);
}
static inline void ipv4_hdr_set_host_order_saddr(struct ip *hdr, uint32_t saddr)
{
hdr->ip_src.s_addr = htonl(saddr);
}
static inline void ipv4_hdr_set_host_order_daddr(struct ip *hdr, uint32_t daddr)
{
hdr->ip_dst.s_addr = htonl(daddr);
}
#ifdef __cpluscplus
}
#endif

View File

@@ -43,6 +43,11 @@ struct session_manager
uint64_t udp_active_sess_num;
uint64_t udp_closing_sess_num;
uint64_t tcp_overload_evict_old_sess_num;
uint64_t tcp_overload_evict_new_sess_num;
uint64_t udp_overload_evict_old_sess_num;
uint64_t udp_overload_evict_new_sess_num;
// packet filter status
uint64_t npkts_miss_l4_proto; // fast forward
@@ -196,6 +201,19 @@ static int session_manager_check_config(struct session_manager_config *config)
return -1;
}
// session overload
if (config->tcp_overload_evict_old_sess != 0 && config->tcp_overload_evict_old_sess != 1)
{
SESSION_LOG_ERROR("invalid tcp overload evict old session, support range: 0-1");
return -1;
}
if (config->udp_overload_evict_old_sess != 0 && config->udp_overload_evict_old_sess != 1)
{
SESSION_LOG_ERROR("invalid udp overload evict old session, support range: 0-1");
return -1;
}
// TCP timeout config
if (config->tcp_timeout_init < 1 || config->tcp_timeout_init > 60)
{
@@ -797,11 +815,27 @@ static struct session *session_manager_new_tcp_session(struct session_manager *m
return NULL;
}
if (mgr->tcp_sess_num == mgr->config.max_tcp_session_num - 1)
if (mgr->tcp_sess_num >= mgr->config.max_tcp_session_num - 1)
{
if (mgr->config.tcp_overload_evict_old_sess)
{
struct session *evicted_sess = session_table_find_least_recently_unused_session(mgr->tcp_sess_table);
assert(evicted_sess);
session_manager_evicte_session(mgr, evicted_sess);
mgr->tcp_overload_evict_old_sess_num++;
}
else
{
if (mgr->tcp_sess_num >= mgr->config.max_tcp_session_num)
{
mgr->tcp_overload_evict_new_sess_num++;
return NULL;
}
else
{
// continue;
}
}
}
struct session *sess = session_pool_alloc(mgr->sess_pool);
@@ -828,11 +862,27 @@ static struct session *session_manager_new_udp_session(struct session_manager *m
return NULL;
}
if (mgr->udp_sess_num == mgr->config.max_udp_session_num - 1)
if (mgr->udp_sess_num >= mgr->config.max_udp_session_num - 1)
{
if (mgr->config.udp_overload_evict_old_sess)
{
struct session *evicted_sess = session_table_find_least_recently_unused_session(mgr->udp_sess_table);
assert(evicted_sess);
session_manager_evicte_session(mgr, evicted_sess);
mgr->udp_overload_evict_old_sess_num++;
}
else
{
if (mgr->udp_sess_num >= mgr->config.max_udp_session_num)
{
mgr->udp_overload_evict_new_sess_num++;
return NULL;
}
else
{
// continue;
}
}
}
struct session *sess = session_pool_alloc(mgr->sess_pool);
@@ -1186,11 +1236,16 @@ void session_manager_get_session_counter(struct session_manager *mgr, struct ses
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;
out->tcp_overload_evict_old_sess_num = mgr->tcp_overload_evict_old_sess_num;
out->tcp_overload_evict_new_sess_num = mgr->tcp_overload_evict_new_sess_num;
out->udp_overload_evict_old_sess_num = mgr->udp_overload_evict_old_sess_num;
out->udp_overload_evict_new_sess_num = mgr->udp_overload_evict_new_sess_num;
}
void session_manager_print_status(struct session_manager *mgr)
{
printf("session status:\n");
printf("session manager status:\n");
printf("tcp session number : %lu\n", mgr->tcp_sess_num);
printf(" opening number : %lu\n", mgr->tcp_opening_sess_num);
@@ -1200,6 +1255,12 @@ void session_manager_print_status(struct session_manager *mgr)
printf(" opening number : %lu\n", mgr->udp_opening_sess_num);
printf(" active number : %lu\n", mgr->udp_active_sess_num);
printf(" closing number : %lu\n", mgr->udp_closing_sess_num);
printf("tcp overload evict : \n");
printf(" old session number: %lu\n", mgr->tcp_overload_evict_old_sess_num);
printf(" new session number: %lu\n", mgr->tcp_overload_evict_new_sess_num);
printf("udp overload evict : \n");
printf(" old session number: %lu\n", mgr->udp_overload_evict_old_sess_num);
printf(" new session number: %lu\n", mgr->udp_overload_evict_new_sess_num);
printf("packet status:\n");
printf(" miss l4 proto : %lu (bypass)\n", mgr->npkts_miss_l4_proto);

View File

@@ -23,6 +23,10 @@ struct session_manager_config
uint64_t max_tcp_session_num;
uint64_t max_udp_session_num;
// session overload
uint8_t tcp_overload_evict_old_sess; // 1: evict old session, 0: bypass new session
uint8_t udp_overload_evict_old_sess; // 1: evict old session, 0: bypass new session
// TCP timeout
uint64_t tcp_timeout_init; // seconds, Range: 1-60
uint64_t tcp_timeout_handshake; // seconds, Range: 1-60
@@ -80,6 +84,11 @@ struct session_counter
uint64_t udp_opening_sess_num;
uint64_t udp_active_sess_num;
uint64_t udp_closing_sess_num;
uint64_t tcp_overload_evict_old_sess_num;
uint64_t tcp_overload_evict_new_sess_num;
uint64_t udp_overload_evict_old_sess_num;
uint64_t udp_overload_evict_new_sess_num;
};
void session_manager_get_session_counter(struct session_manager *mgr, struct session_counter *out);

View File

@@ -79,6 +79,16 @@ target_link_libraries(gtest_filter_tcp_dupkt session_manager gtest)
add_executable(gtest_filter_udp_eviction gtest_filter_udp_eviction.cpp)
target_link_libraries(gtest_filter_udp_eviction session_manager gtest)
###############################################################################
# gtest overload
###############################################################################
add_executable(gtest_overload_evict_tcp_sess gtest_overload_evict_tcp_sess.cpp)
target_link_libraries(gtest_overload_evict_tcp_sess session_manager gtest)
add_executable(gtest_overload_evict_udp_sess gtest_overload_evict_udp_sess.cpp)
target_link_libraries(gtest_overload_evict_udp_sess session_manager gtest)
###############################################################################
# gtest
###############################################################################
@@ -108,3 +118,6 @@ gtest_discover_tests(gtest_timeout_udp_data)
gtest_discover_tests(gtest_filter_tcp_dupkt)
gtest_discover_tests(gtest_filter_udp_eviction)
gtest_discover_tests(gtest_overload_evict_tcp_sess)
gtest_discover_tests(gtest_overload_evict_udp_sess)

View File

@@ -44,16 +44,16 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SYN_DUP)
EXPECT_TRUE(session_get_dup_traffic_flag(sess) == DUP_TRAFFIC_YES);
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
#endif
#if 1
TEST(TCP_DUPKT_FILTER_ENABLE, S2C_DUPKT)
TEST(TCP_DUPKT_FILTER_ENABLE, S2C_DUP)
{
struct packet pkt;
struct session *sess = NULL;
@@ -96,9 +96,9 @@ TEST(TCP_DUPKT_FILTER_ENABLE, S2C_DUPKT)
EXPECT_TRUE(session_get_dup_traffic_flag(sess) == DUP_TRAFFIC_YES);
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -164,9 +164,9 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SKIP_FILTER)
EXPECT_TRUE(sess);
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -219,16 +219,16 @@ TEST(TCP_DUPKT_FILTER_DISABLE, C2S_DUPKT)
EXPECT_TRUE(session_get_dup_traffic_flag(sess) == DUP_TRAFFIC_NO);
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
#endif
#if 1
TEST(TCP_DUPKT_FILTER_DISABLE, S2C_DUPKT)
TEST(TCP_DUPKT_FILTER_DISABLE, S2C_DUP)
{
struct packet pkt;
struct session *sess = NULL;
@@ -274,9 +274,9 @@ TEST(TCP_DUPKT_FILTER_DISABLE, S2C_DUPKT)
EXPECT_TRUE(session_get_dup_traffic_flag(sess) == DUP_TRAFFIC_NO);
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}

View File

@@ -21,9 +21,9 @@ TEST(UDP_EVICTION_FILTER_ENABLE, HIT_FILTER_THEN_EVICT_SESS)
__session_dispatch(sess);
// wait session timeout
__session_manager_check_counter(mgr, 0, 0, 0, 1, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
// C2S REQ Packet
printf("=> packet parse: UDP C2S REQ packet\n");
@@ -61,9 +61,9 @@ TEST(UDP_EVICTION_FILTER_ENABLE, MISS_FILTER_THEN_NEW_SESS)
__session_dispatch(sess);
// wait session timeout
__session_manager_check_counter(mgr, 0, 0, 0, 1, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
// wait udp eviction filter timeout
sleep(_config.udp_eviction_filter_timeout);
@@ -77,9 +77,9 @@ TEST(UDP_EVICTION_FILTER_ENABLE, MISS_FILTER_THEN_NEW_SESS)
EXPECT_TRUE(sess); // add new udp session
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 0, 0, 1, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -109,9 +109,9 @@ TEST(UDP_EVICTION_FILTER_DISABLE, MISS_FILTER_THEN_NEW_SESS)
__session_dispatch(sess);
// wait session timeout
__session_manager_check_counter(mgr, 0, 0, 0, 1, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
// C2S REQ Packet
printf("=> packet parse: UDP C2S REQ packet\n");
@@ -121,9 +121,9 @@ TEST(UDP_EVICTION_FILTER_DISABLE, MISS_FILTER_THEN_NEW_SESS)
EXPECT_TRUE(sess); // add new udp session
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 0, 0, 1, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}

View File

@@ -0,0 +1,156 @@
#include "test_utils.h"
static void overwrite_ipv4_saddr(struct packet *pkt, uint32_t saddr)
{
const struct layer_record *ipv4_layer = packet_get_innermost_layer(pkt, LAYER_TYPE_IPV4);
EXPECT_TRUE(ipv4_layer);
const struct ip *hdr = (const struct ip *)ipv4_layer->hdr_ptr;
ipv4_hdr_set_host_order_saddr((struct ip *)hdr, saddr);
}
#if 1
TEST(OVERLOAD, EVICT_TCP_OLD_SESS)
{
struct tuple6 key;
struct packet pkt;
struct session *sess = NULL;
struct session_manager *mgr = NULL;
char buffer[1500] = {0};
timestamp_update();
mgr = session_manager_create(&config);
EXPECT_TRUE(mgr != NULL);
for (uint64_t i = 0; i < config.max_tcp_session_num; i++)
{
// C2S SYN Packet
printf("\n====================== new session (%lu) ======================\n\n", i + 1);
printf("=> packet parse: TCP C2S SYN packet\n");
memcpy(buffer, tcp_pkt1_c2s_syn, sizeof(tcp_pkt1_c2s_syn));
packet_parse(&pkt, (const char *)buffer, sizeof(tcp_pkt1_c2s_syn));
overwrite_ipv4_saddr(&pkt, i + 1);
printf("<= packet parse\n\n");
sess = session_manager_update_session(mgr, &pkt);
EXPECT_TRUE(sess);
__session_dispatch(sess);
session_manager_print_status(mgr);
if (i == config.max_tcp_session_num - 1)
{
__session_manager_check_counter(mgr,
i, 0, 1, // tcp_opening_sess_num, tcp_active_sess_num, tcp_closing_sess_num,
0, 0, 0, // udp_opening_sess_num, udp_active_sess_num, udp_closing_sess_num,
0, 1, // tcp_overload_evict_new_sess_num, tcp_overload_evict_old_sess_num,
0, 0); // udp_overload_evict_new_sess_num, udp_overload_evict_old_sess_num,
}
else
{
__session_manager_check_counter(mgr,
i + 1, 0, 0, // tcp_opening_sess_num, tcp_active_sess_num, tcp_closing_sess_num,
0, 0, 0, // udp_opening_sess_num, udp_active_sess_num, udp_closing_sess_num,
0, 0, // tcp_overload_evict_new_sess_num, tcp_overload_evict_old_sess_num,
0, 0); // udp_overload_evict_new_sess_num, udp_overload_evict_old_sess_num,
}
}
printf("\n====================== evicted session ======================\n\n");
// evicted oldest session
sess = session_manager_get_evicted_session(mgr);
EXPECT_TRUE(sess);
EXPECT_TRUE(session_get_state(sess) == SESSION_STATE_CLOSING);
EXPECT_TRUE(session_get_closing_reasion(sess) == CLOSING_BY_EVICTED);
packet_parse(&pkt, (const char *)tcp_pkt1_c2s_syn, sizeof(tcp_pkt1_c2s_syn));
overwrite_ipv4_saddr(&pkt, 1);
memset(&key, 0, sizeof(struct tuple6));
packet_get_innermost_tuple6(&pkt, &key);
EXPECT_TRUE(tuple6_cmp(session_get0_key(sess), &key) == 0);
__session_dispatch(sess);
session_manager_print_status(mgr);
printf("\n====================== expired session ======================\n\n");
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
printf("\n====================== end status ======================\n\n");
session_manager_print_status(mgr);
__session_manager_check_counter(mgr,
0, 0, 0, // tcp_opening_sess_num, tcp_active_sess_num, tcp_closing_sess_num,
0, 0, 0, // udp_opening_sess_num, udp_active_sess_num, udp_closing_sess_num,
0, 1, // tcp_overload_evict_new_sess_num, tcp_overload_evict_old_sess_num,
0, 0); // udp_overload_evict_new_sess_num, udp_overload_evict_old_sess_num,
session_manager_destroy(mgr);
}
#endif
#if 1
TEST(OVERLOAD, EVICT_TCP_NEW_SESS)
{
struct packet pkt;
struct session *sess = NULL;
struct session_manager *mgr = NULL;
char buffer[1500] = {0};
struct session_manager_config _config;
memcpy(&_config, &config, sizeof(struct session_manager_config));
_config.tcp_overload_evict_old_sess = 0;
timestamp_update();
mgr = session_manager_create(&_config);
EXPECT_TRUE(mgr != NULL);
for (uint64_t i = 0; i <= _config.max_tcp_session_num; i++)
{
// C2S SYN Packet
printf("\n====================== new session (%lu) ======================\n\n", i + 1);
printf("=> packet parse: TCP C2S SYN packet\n");
memcpy(buffer, tcp_pkt1_c2s_syn, sizeof(tcp_pkt1_c2s_syn));
packet_parse(&pkt, (const char *)buffer, sizeof(tcp_pkt1_c2s_syn));
overwrite_ipv4_saddr(&pkt, i + 1);
printf("<= packet parse\n\n");
sess = session_manager_update_session(mgr, &pkt);
if (i == _config.max_tcp_session_num)
{
EXPECT_TRUE(sess == NULL);
__session_manager_check_counter(mgr,
i, 0, 0, // tcp_opening_sess_num, tcp_active_sess_num, tcp_closing_sess_num,
0, 0, 0, // udp_opening_sess_num, udp_active_sess_num, udp_closing_sess_num,
1, 0, // tcp_overload_evict_new_sess_num, tcp_overload_evict_old_sess_num,
0, 0); // udp_overload_evict_new_sess_num, udp_overload_evict_old_sess_num,
}
else
{
EXPECT_TRUE(sess);
__session_manager_check_counter(mgr,
i + 1, 0, 0, // tcp_opening_sess_num, tcp_active_sess_num, tcp_closing_sess_num,
0, 0, 0, // udp_opening_sess_num, udp_active_sess_num, udp_closing_sess_num,
0, 0, // tcp_overload_evict_new_sess_num, tcp_overload_evict_old_sess_num,
0, 0); // udp_overload_evict_new_sess_num, udp_overload_evict_old_sess_num,
}
__session_dispatch(sess);
session_manager_print_status(mgr);
}
printf("\n====================== expired session ======================\n\n");
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
printf("\n====================== end status ======================\n\n");
session_manager_print_status(mgr);
__session_manager_check_counter(mgr,
0, 0, 0, // tcp_opening_sess_num, tcp_active_sess_num, tcp_closing_sess_num,
0, 0, 0, // udp_opening_sess_num, udp_active_sess_num, udp_closing_sess_num,
1, 0, // tcp_overload_evict_new_sess_num, tcp_overload_evict_old_sess_num,
0, 0); // udp_overload_evict_new_sess_num, udp_overload_evict_old_sess_num,
session_manager_destroy(mgr);
}
#endif
int main(int argc, char **argv)
{
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}

View File

@@ -0,0 +1,19 @@
#include "test_utils.h"
#if 1
TEST(OVERLOAD, EVICT_UDP_OLD_SESS)
{
}
#endif
#if 1
TEST(OVERLOAD, EVICT_UDP_NEW_SESS)
{
}
#endif
int main(int argc, char **argv)
{
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}

View File

@@ -37,7 +37,7 @@ static void build_active_tcp_session(struct session_manager *mgr, struct session
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -71,7 +71,7 @@ static void build_active_tcp_session(struct session_manager *mgr, struct session
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -126,7 +126,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_FIN_FIN)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -160,9 +160,9 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_FIN_FIN)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_CLIENT_FIN);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -224,9 +224,9 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_C2S_RST)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_CLIENT_RST);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -288,9 +288,9 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_S2C_RST)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_SERVER_RST);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -314,9 +314,9 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_DATA_TIMEOUT)
// C2S SYN Packet & C2S DATA Packet
build_active_tcp_session(mgr, sess);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -371,9 +371,9 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_C2S_HALF_CLOSED_TIMEOUT)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_CLIENT_FIN);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -428,9 +428,9 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_S2C_HALF_CLOSED_TIMEOUT)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_SERVER_FIN);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}

View File

@@ -49,9 +49,9 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -104,9 +104,9 @@ TEST(TCP_INIT_TO_OPENING, BY_SYNACK)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -159,7 +159,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -194,9 +194,9 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -249,7 +249,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK_ACK)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -284,7 +284,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK_ACK)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -318,9 +318,9 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK_ACK)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -375,7 +375,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_RETRANSMISSION)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -416,9 +416,9 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_RETRANSMISSION)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -473,7 +473,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYNACK_RETRANSMISSION)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -514,9 +514,9 @@ TEST(TCP_INIT_TO_OPENING, BY_SYNACK_RETRANSMISSION)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -569,7 +569,7 @@ TEST(TCP_INIT_TO_OPENING, BY_C2S_ASMMETRIC)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -604,9 +604,9 @@ TEST(TCP_INIT_TO_OPENING, BY_C2S_ASMMETRIC)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -659,7 +659,7 @@ TEST(TCP_INIT_TO_OPENING, BY_S2C_ASMMETRIC)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -694,9 +694,9 @@ TEST(TCP_INIT_TO_OPENING, BY_S2C_ASMMETRIC)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}

View File

@@ -46,7 +46,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -81,7 +81,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -116,7 +116,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -151,7 +151,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -186,7 +186,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -221,7 +221,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -256,7 +256,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -291,7 +291,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -326,7 +326,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -361,7 +361,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -396,9 +396,9 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_CLIENT_FIN);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}

View File

@@ -49,7 +49,7 @@ TEST(TCP_OPENING_TO_ACTIVE, BY_SYN_C2S_DATA)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -83,9 +83,9 @@ TEST(TCP_OPENING_TO_ACTIVE, BY_SYN_C2S_DATA)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -138,7 +138,7 @@ TEST(TCP_OPENING_TO_ACTIVE, BY_SYNACK_S2C_DATA)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -172,9 +172,9 @@ TEST(TCP_OPENING_TO_ACTIVE, BY_SYNACK_S2C_DATA)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}

View File

@@ -37,7 +37,7 @@ static void build_opening_tcp_session(struct session_manager *mgr, struct sessio
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -92,7 +92,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_FIN_FIN)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -126,9 +126,9 @@ TEST(TCP_OPENING_TO_CLOSING, BY_FIN_FIN)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_CLIENT_FIN);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -190,9 +190,9 @@ TEST(TCP_OPENING_TO_CLOSING, BY_C2S_RST)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_CLIENT_RST);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -254,9 +254,9 @@ TEST(TCP_OPENING_TO_CLOSING, BY_S2C_RST)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_SERVER_RST);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -280,9 +280,9 @@ TEST(TCP_OPENING_TO_CLOSING, BY_INIT_TIMEOUT)
// C2S SYN Packet
build_opening_tcp_session(mgr, sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -338,9 +338,9 @@ TEST(TCP_OPENING_TO_CLOSING, BY_HANDSHAKE_TIMEOUT)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -396,7 +396,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_DATA_TIMEOUT)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -430,9 +430,9 @@ TEST(TCP_OPENING_TO_CLOSING, BY_DATA_TIMEOUT)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -487,9 +487,9 @@ TEST(TCP_OPENING_TO_CLOSING, BY_C2S_HALF_CLOSED_TIMEOUT)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_CLIENT_FIN);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -544,9 +544,9 @@ TEST(TCP_OPENING_TO_CLOSING, BY_S2C_HALF_CLOSED_TIMEOUT)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_SERVER_FIN);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}

View File

@@ -53,7 +53,7 @@ TEST(UDP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING, TEST)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 0, 0, 1, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0);
sleep(1);
timestamp_update();
@@ -87,9 +87,9 @@ TEST(UDP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING, TEST)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 1, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}

View File

@@ -51,9 +51,9 @@ TEST(UDP_INIT_TO_OPENING_TO_CLOSING, BY_C2S)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 0, 0, 1, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -108,9 +108,9 @@ TEST(UDP_INIT_TO_OPENING_TO_CLOSING, BY_S2C)
__session_dispatch(sess);
__session_manager_check_counter(mgr, 0, 0, 0, 1, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0);
__session_manager_wait(mgr, CLOSING_BY_TIMEOUT);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}

View File

@@ -26,12 +26,12 @@ TEST(TIMEOUT, TCP_TIMEOUT_DATA)
sess = session_manager_update_session(mgr, &pkt);
EXPECT_TRUE(sess);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_check_tcp_timeout_data(mgr, &config);
__session_manager_check_tcp_timeout_time_wait(mgr, &config);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}

View File

@@ -26,12 +26,12 @@ TEST(TIMEOUT, TCP_TIMEOUT_HALF_CLOSED1)
sess = session_manager_update_session(mgr, &pkt);
EXPECT_TRUE(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_check_tcp_timeout_half_closed(mgr, &config, SESSION_STATE_OPENING);
__session_manager_check_tcp_timeout_time_wait(mgr, &config);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -70,12 +70,12 @@ TEST(TIMEOUT, TCP_TIMEOUT_HALF_CLOSED2)
sess = session_manager_update_session(mgr, &pkt);
EXPECT_TRUE(sess);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_check_tcp_timeout_half_closed(mgr, &config, SESSION_STATE_ACTIVE);
__session_manager_check_tcp_timeout_time_wait(mgr, &config);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}

View File

@@ -19,12 +19,12 @@ TEST(TIMEOUT, TCP_TIMEOUT_HANDSHAKE)
sess = session_manager_update_session(mgr, &pkt);
EXPECT_TRUE(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_check_tcp_timeout_handshake(mgr, &config);
__session_manager_check_tcp_timeout_time_wait(mgr, &config);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}

View File

@@ -19,12 +19,12 @@ TEST(TIMEOUT, TCP_TIMEOUT_INIT1)
sess = session_manager_update_session(mgr, &pkt);
EXPECT_TRUE(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_check_tcp_timeout_init(mgr, &config);
__session_manager_check_tcp_timeout_time_wait(mgr, &config);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -49,12 +49,12 @@ TEST(TIMEOUT, TCP_TIMEOUT_INIT2)
sess = session_manager_update_session(mgr, &pkt);
EXPECT_TRUE(sess);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
__session_manager_check_tcp_timeout_init(mgr, &config);
__session_manager_check_tcp_timeout_time_wait(mgr, &config);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}

View File

@@ -19,12 +19,12 @@ TEST(TIMEOUT, UDP_TIMEOUT_DATA1)
sess = session_manager_update_session(mgr, &pkt);
EXPECT_TRUE(sess);
__session_manager_check_counter(mgr, 0, 0, 0, 1, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0);
__session_manager_check_udp_timeout_data(mgr, &config, SESSION_STATE_OPENING);
EXPECT_TRUE(session_manager_get_expired_session(mgr) == NULL);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}
@@ -56,12 +56,12 @@ TEST(TIMEOUT, UDP_TIMEOUT_DATA2)
sess = session_manager_update_session(mgr, &pkt);
EXPECT_TRUE(sess);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 1, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0);
__session_manager_check_udp_timeout_data(mgr, &config, SESSION_STATE_ACTIVE);
EXPECT_TRUE(session_manager_get_expired_session(mgr) == NULL);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
session_manager_destroy(mgr);
}

View File

@@ -20,6 +20,10 @@ struct session_manager_config config = {
.max_tcp_session_num = 3,
.max_udp_session_num = 3,
// session overload
.tcp_overload_evict_old_sess = 1, // 1: evict old session, 0: bypass new session
.udp_overload_evict_old_sess = 1, // 1: evict old session, 0: bypass new session
// tcp timeout
.tcp_timeout_init = 2,
.tcp_timeout_handshake = 2,
@@ -85,7 +89,9 @@ __attribute__((unused)) static void __session_manager_wait(struct session_manage
__attribute__((unused)) static void __session_manager_check_counter(struct session_manager *mgr,
uint64_t tcp_opening_sess_num, uint64_t tcp_active_sess_num, uint64_t tcp_closing_sess_num,
uint64_t udp_opening_sess_num, uint64_t udp_active_sess_num, uint64_t udp_closing_sess_num)
uint64_t udp_opening_sess_num, uint64_t udp_active_sess_num, uint64_t udp_closing_sess_num,
uint64_t tcp_overload_evict_new_sess_num, uint64_t tcp_overload_evict_old_sess_num,
uint64_t udp_overload_evict_new_sess_num, uint64_t udp_overload_evict_old_sess_num)
{
struct session_counter counter;
session_manager_get_session_counter(mgr, &counter);
@@ -99,6 +105,11 @@ __attribute__((unused)) static void __session_manager_check_counter(struct sessi
EXPECT_TRUE(counter.udp_opening_sess_num == udp_opening_sess_num);
EXPECT_TRUE(counter.udp_active_sess_num == udp_active_sess_num);
EXPECT_TRUE(counter.udp_closing_sess_num == udp_closing_sess_num);
EXPECT_TRUE(counter.tcp_overload_evict_new_sess_num == tcp_overload_evict_new_sess_num);
EXPECT_TRUE(counter.tcp_overload_evict_old_sess_num == tcp_overload_evict_old_sess_num);
EXPECT_TRUE(counter.udp_overload_evict_new_sess_num == udp_overload_evict_new_sess_num);
EXPECT_TRUE(counter.udp_overload_evict_old_sess_num == udp_overload_evict_old_sess_num);
}
__attribute__((unused)) static void __session_manager_check_tcp_timeout_init(struct session_manager *mgr, struct session_manager_config *config)
@@ -119,7 +130,7 @@ __attribute__((unused)) static void __session_manager_check_tcp_timeout_init(str
printf("timeout_time: %lu, curr_time: %lu, session expired\n",
timeout_time, timestamp_get_sec());
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0);
EXPECT_TRUE(sess != NULL);
break;
}
@@ -129,7 +140,7 @@ __attribute__((unused)) static void __session_manager_check_tcp_timeout_init(str
timeout_time, timestamp_get_sec(), interval);
EXPECT_TRUE(interval <= config->tcp_timeout_init);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
EXPECT_TRUE(sess == NULL);
}
sleep(1);
@@ -155,7 +166,7 @@ __attribute__((unused)) static void __session_manager_check_tcp_timeout_handshak
printf("timeout_time: %lu, curr_time: %lu, session expired\n",
timeout_time, timestamp_get_sec());
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0);
EXPECT_TRUE(sess != NULL);
break;
}
@@ -165,7 +176,7 @@ __attribute__((unused)) static void __session_manager_check_tcp_timeout_handshak
timeout_time, timestamp_get_sec(), interval);
EXPECT_TRUE(interval <= config->tcp_timeout_handshake);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
EXPECT_TRUE(sess == NULL);
}
sleep(1);
@@ -191,7 +202,7 @@ __attribute__((unused)) static void __session_manager_check_tcp_timeout_data(str
printf("timeout_time: %lu, curr_time: %lu, session expired\n",
timeout_time, timestamp_get_sec());
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0);
EXPECT_TRUE(sess != NULL);
break;
}
@@ -201,7 +212,7 @@ __attribute__((unused)) static void __session_manager_check_tcp_timeout_data(str
timeout_time, timestamp_get_sec(), interval);
EXPECT_TRUE(interval <= config->tcp_timeout_data);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0);
EXPECT_TRUE(sess == NULL);
}
sleep(1);
@@ -229,7 +240,7 @@ __attribute__((unused)) static void __session_manager_check_tcp_timeout_half_clo
printf("timeout_time: %lu, curr_time: %lu, session expired\n",
timeout_time, timestamp_get_sec());
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0);
EXPECT_TRUE(sess != NULL);
break;
}
@@ -241,11 +252,11 @@ __attribute__((unused)) static void __session_manager_check_tcp_timeout_half_clo
EXPECT_TRUE(interval <= config->tcp_timeout_half_closed);
if (curr_state == SESSION_STATE_OPENING)
{
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
}
if (curr_state == SESSION_STATE_ACTIVE)
{
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0);
}
EXPECT_TRUE(sess == NULL);
}
@@ -272,7 +283,7 @@ __attribute__((unused)) static void __session_manager_check_tcp_timeout_time_wai
printf("timeout_time: %lu, curr_time: %lu, session expired\n",
timeout_time, timestamp_get_sec());
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
EXPECT_TRUE(sess == NULL);
break;
}
@@ -282,7 +293,7 @@ __attribute__((unused)) static void __session_manager_check_tcp_timeout_time_wai
timeout_time, timestamp_get_sec(), interval);
EXPECT_TRUE(interval <= config->tcp_timeout_init);
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0);
EXPECT_TRUE(sess == NULL);
}
sleep(1);
@@ -310,7 +321,7 @@ __attribute__((unused)) static void __session_manager_check_udp_timeout_data(str
printf("timeout_time: %lu, curr_time: %lu, session expired\n",
timeout_time, timestamp_get_sec());
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 1);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0);
EXPECT_TRUE(sess != NULL);
break;
}
@@ -322,11 +333,11 @@ __attribute__((unused)) static void __session_manager_check_udp_timeout_data(str
EXPECT_TRUE(interval <= config->udp_timeout_data);
if (curr_state == SESSION_STATE_OPENING)
{
__session_manager_check_counter(mgr, 0, 0, 0, 1, 0, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0);
}
if (curr_state == SESSION_STATE_ACTIVE)
{
__session_manager_check_counter(mgr, 0, 0, 0, 0, 1, 0);
__session_manager_check_counter(mgr, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0);
}
EXPECT_TRUE(sess == NULL);