diff --git a/src/packet/ipv4_helpers.h b/src/packet/ipv4_helpers.h index 0ef1a09..c0d440d 100644 --- a/src/packet/ipv4_helpers.h +++ b/src/packet/ipv4_helpers.h @@ -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 diff --git a/src/session/session_manager.cpp b/src/session/session_manager.cpp index 08f48a5..7d3788a 100644 --- a/src/session/session_manager.cpp +++ b/src/session/session_manager.cpp @@ -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) { - 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); + 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) { - 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); + 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); diff --git a/src/session/session_manager.h b/src/session/session_manager.h index 7a6cac4..5e0fa30 100644 --- a/src/session/session_manager.h +++ b/src/session/session_manager.h @@ -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); diff --git a/src/session/test/CMakeLists.txt b/src/session/test/CMakeLists.txt index 324519e..48ca904 100644 --- a/src/session/test/CMakeLists.txt +++ b/src/session/test/CMakeLists.txt @@ -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 ############################################################################### @@ -107,4 +117,7 @@ gtest_discover_tests(gtest_timeout_tcp_half_closed) gtest_discover_tests(gtest_timeout_udp_data) gtest_discover_tests(gtest_filter_tcp_dupkt) -gtest_discover_tests(gtest_filter_udp_eviction) \ No newline at end of file +gtest_discover_tests(gtest_filter_udp_eviction) + +gtest_discover_tests(gtest_overload_evict_tcp_sess) +gtest_discover_tests(gtest_overload_evict_udp_sess) \ No newline at end of file diff --git a/src/session/test/gtest_filter_tcp_dupkt.cpp b/src/session/test/gtest_filter_tcp_dupkt.cpp index 69062c2..c909de2 100644 --- a/src/session/test/gtest_filter_tcp_dupkt.cpp +++ b/src/session/test/gtest_filter_tcp_dupkt.cpp @@ -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); } diff --git a/src/session/test/gtest_filter_udp_eviction.cpp b/src/session/test/gtest_filter_udp_eviction.cpp index 1adc5b6..dbd0d5a 100644 --- a/src/session/test/gtest_filter_udp_eviction.cpp +++ b/src/session/test/gtest_filter_udp_eviction.cpp @@ -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); } diff --git a/src/session/test/gtest_overload_evict_tcp_sess.cpp b/src/session/test/gtest_overload_evict_tcp_sess.cpp new file mode 100644 index 0000000..dea8abc --- /dev/null +++ b/src/session/test/gtest_overload_evict_tcp_sess.cpp @@ -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(); +} \ No newline at end of file diff --git a/src/session/test/gtest_overload_evict_udp_sess.cpp b/src/session/test/gtest_overload_evict_udp_sess.cpp new file mode 100644 index 0000000..8123131 --- /dev/null +++ b/src/session/test/gtest_overload_evict_udp_sess.cpp @@ -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(); +} \ No newline at end of file diff --git a/src/session/test/gtest_state_tcp_active_to_closing.cpp b/src/session/test/gtest_state_tcp_active_to_closing.cpp index af3a33a..5053316 100644 --- a/src/session/test/gtest_state_tcp_active_to_closing.cpp +++ b/src/session/test/gtest_state_tcp_active_to_closing.cpp @@ -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); } diff --git a/src/session/test/gtest_state_tcp_init_to_opening.cpp b/src/session/test/gtest_state_tcp_init_to_opening.cpp index 49eb0bd..02502e8 100644 --- a/src/session/test/gtest_state_tcp_init_to_opening.cpp +++ b/src/session/test/gtest_state_tcp_init_to_opening.cpp @@ -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); } diff --git a/src/session/test/gtest_state_tcp_init_to_opening_to_active_to_closing_to_closed.cpp b/src/session/test/gtest_state_tcp_init_to_opening_to_active_to_closing_to_closed.cpp index 1e884bf..c83020f 100644 --- a/src/session/test/gtest_state_tcp_init_to_opening_to_active_to_closing_to_closed.cpp +++ b/src/session/test/gtest_state_tcp_init_to_opening_to_active_to_closing_to_closed.cpp @@ -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); } diff --git a/src/session/test/gtest_state_tcp_opening_to_active.cpp b/src/session/test/gtest_state_tcp_opening_to_active.cpp index 944fba8..28f84ca 100644 --- a/src/session/test/gtest_state_tcp_opening_to_active.cpp +++ b/src/session/test/gtest_state_tcp_opening_to_active.cpp @@ -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); } diff --git a/src/session/test/gtest_state_tcp_opening_to_closing.cpp b/src/session/test/gtest_state_tcp_opening_to_closing.cpp index 96c38db..f67a5a1 100644 --- a/src/session/test/gtest_state_tcp_opening_to_closing.cpp +++ b/src/session/test/gtest_state_tcp_opening_to_closing.cpp @@ -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); } diff --git a/src/session/test/gtest_state_udp_init_to_opening_to_active_to_closing.cpp b/src/session/test/gtest_state_udp_init_to_opening_to_active_to_closing.cpp index a32fdfa..fc4d2e7 100644 --- a/src/session/test/gtest_state_udp_init_to_opening_to_active_to_closing.cpp +++ b/src/session/test/gtest_state_udp_init_to_opening_to_active_to_closing.cpp @@ -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); } diff --git a/src/session/test/gtest_state_udp_init_to_opening_to_closing.cpp b/src/session/test/gtest_state_udp_init_to_opening_to_closing.cpp index b1f86ca..a79ca54 100644 --- a/src/session/test/gtest_state_udp_init_to_opening_to_closing.cpp +++ b/src/session/test/gtest_state_udp_init_to_opening_to_closing.cpp @@ -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); } diff --git a/src/session/test/gtest_timeout_tcp_data.cpp b/src/session/test/gtest_timeout_tcp_data.cpp index d724e3e..2dd0a7e 100644 --- a/src/session/test/gtest_timeout_tcp_data.cpp +++ b/src/session/test/gtest_timeout_tcp_data.cpp @@ -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); } diff --git a/src/session/test/gtest_timeout_tcp_half_closed.cpp b/src/session/test/gtest_timeout_tcp_half_closed.cpp index 3a81051..0dcc0d0 100644 --- a/src/session/test/gtest_timeout_tcp_half_closed.cpp +++ b/src/session/test/gtest_timeout_tcp_half_closed.cpp @@ -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); } diff --git a/src/session/test/gtest_timeout_tcp_handshake.cpp b/src/session/test/gtest_timeout_tcp_handshake.cpp index 1b87f47..1831bbd 100644 --- a/src/session/test/gtest_timeout_tcp_handshake.cpp +++ b/src/session/test/gtest_timeout_tcp_handshake.cpp @@ -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); } diff --git a/src/session/test/gtest_timeout_tcp_init.cpp b/src/session/test/gtest_timeout_tcp_init.cpp index 2a7f98f..b0c9de3 100644 --- a/src/session/test/gtest_timeout_tcp_init.cpp +++ b/src/session/test/gtest_timeout_tcp_init.cpp @@ -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); } diff --git a/src/session/test/gtest_timeout_udp_data.cpp b/src/session/test/gtest_timeout_udp_data.cpp index 6fbab5f..734fd35 100644 --- a/src/session/test/gtest_timeout_udp_data.cpp +++ b/src/session/test/gtest_timeout_udp_data.cpp @@ -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); } diff --git a/src/session/test/test_utils.h b/src/session/test/test_utils.h index 1825a1d..6211a19 100644 --- a/src/session/test/test_utils.h +++ b/src/session/test/test_utils.h @@ -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);