Add stellar thread cycle

This commit is contained in:
luwenpeng
2024-01-09 18:03:24 +08:00
parent 6fda3e9ddb
commit 37f4680dbc
12 changed files with 535 additions and 311 deletions

View File

@@ -39,7 +39,7 @@ struct packet_idetify idetify = {
.ip_dst = 789000,
};
TEST(DABLOOMS, ADD_SEARCH)
TEST(DABLOOMS, TEST)
{
struct expiry_dablooms_handle *handle = expiry_dablooms_init(config.capacity, config.error_rate, time(NULL), config.expiry_time);
EXPECT_TRUE(handle != nullptr);

View File

@@ -102,6 +102,7 @@ static inline struct packet *packet_dup(const struct packet *pkt)
return NULL;
}
memcpy(pkt_dup, pkt, sizeof(struct packet));
pkt_dup->user_data = NULL;
if (pkt->data_len)
{

View File

@@ -29,7 +29,7 @@
unsigned char data[] = {0x45, 0x00, 0x00, 0x2c, 0xff, 0xff, 0x20, 0x00, 0x7f, 0x06, 0x4d, 0x8b, 0xc0, 0xa8, 0x24, 0x67, 0xc0, 0xa8, 0x28, 0x89};
TEST(IPV4_HELPERS, GET)
TEST(IPV4_HELPERS, TEST)
{
const struct ip *hdr = (struct ip *)data;
EXPECT_TRUE(ipv4_hdr_get_version(hdr) == 4);

View File

@@ -74,7 +74,7 @@ unsigned char data[] = {
0xd9, 0x03, 0x9f, 0x98, 0xec, 0x5f, 0xc6, 0x3c, 0x3b, 0x12, 0x47, 0x92, 0xa0, 0x12, 0xaa, 0xaa, 0xfe, 0x30, 0x00, 0x00, 0x02, 0x04, 0xff, 0xd7, 0x04, 0x02,
0x08, 0x0a, 0xa4, 0xef, 0xa3, 0xcc, 0xa4, 0xef, 0xa3, 0xcc, 0x01, 0x03, 0x03, 0x07};
TEST(TCP_HELPERS, GET)
TEST(TCP_HELPERS, TEST)
{
const struct tcphdr *hdr = (struct tcphdr *)data;
EXPECT_TRUE(tcp_hdr_get_sport(hdr) == 55555);

View File

@@ -14,7 +14,7 @@
unsigned char data[] = {0x0f, 0xa1, 0x1f, 0x40, 0x00, 0x9b, 0x1e, 0x1e};
TEST(UDP_HELPERS, GET)
TEST(UDP_HELPERS, TEST)
{
const struct udphdr *hdr = (struct udphdr *)data;
EXPECT_TRUE(udp_hdr_get_sport(hdr) == 4001);

View File

@@ -312,9 +312,9 @@ void session_free_ex_data(struct session *sess, uint8_t idx)
}
struct ex_schema *schema = &g_ex_manager.schemas[idx];
printf("free ex_data, idx: %d, key: %s, val: %p\n", idx, schema->key, sess->ex_data[idx]);
if (schema->free_cb != NULL && sess->ex_data[idx] != NULL)
{
printf("free ex_data, idx: %d, key: %s, val: %p\n", idx, schema->key, sess->ex_data[idx]);
schema->free_cb(sess, idx, sess->ex_data[idx], schema->args);
}

View File

@@ -23,8 +23,8 @@ struct session_manager
void *arg;
// timeout config
uint64_t timeout_to_closing;
uint64_t timeout_to_closed;
uint64_t timeout_toclosing;
uint64_t timeout_toclosed;
// session number
uint64_t tcp_opening_sess_num;
@@ -201,7 +201,7 @@ void session_manager_update_session_timer(struct session_manager *mgr, struct se
static void session_to_closed(struct session *sess, void *arg)
{
SESSION_MANAGER_LOG_DEBUG("session %lu closing expire, free session", session_get_id(sess));
SESSION_LOG_DEBUG("session %lu closing expire, free session", session_get_id(sess));
struct session_manager *mgr = (struct session_manager *)arg;
assert(mgr != NULL);
@@ -225,14 +225,14 @@ static void session_to_closed(struct session *sess, void *arg)
static void session_to_closing(struct session *sess, void *arg)
{
SESSION_MANAGER_LOG_DEBUG("session %lu packet expire, trigger closing event", session_get_id(sess));
SESSION_LOG_DEBUG("session %lu packet expire, trigger closing event", session_get_id(sess));
struct session_manager *mgr = (struct session_manager *)arg;
assert(mgr != NULL);
update_counter_on_closing(mgr, sess);
session_set_state(sess, SESSION_STATE_CLOSING);
session_push_event(sess, SESSION_EVENT_CLOSING);
session_manager_update_session_timer(mgr, sess, session_to_closed, mgr->timeout_to_closed);
session_manager_update_session_timer(mgr, sess, session_to_closed, mgr->timeout_toclosed);
}
/******************************************************************************
@@ -428,7 +428,7 @@ static int handle_tcp_new_session(struct session_manager *mgr, struct tuple6 *ke
session_push_event(sess, SESSION_EVENT_OPENING);
session_push_event(sess, SESSION_EVENT_PACKET);
session_manager_update_session_timer(mgr, sess, session_to_closing, mgr->timeout_to_closing);
session_manager_update_session_timer(mgr, sess, session_to_closing, mgr->timeout_toclosing);
return 0;
}
@@ -460,7 +460,7 @@ static int handle_udp_new_session(struct session_manager *mgr, struct tuple6 *ke
session_push_event(sess, SESSION_EVENT_OPENING);
session_push_event(sess, SESSION_EVENT_PACKET);
session_manager_update_session_timer(mgr, sess, session_to_closing, mgr->timeout_to_closing);
session_manager_update_session_timer(mgr, sess, session_to_closing, mgr->timeout_toclosing);
return 0;
}
@@ -478,7 +478,7 @@ static void handle_tcp_old_session(struct session_manager *mgr, struct tuple6 *k
session_set_state(sess, SESSION_STATE_CLOSING);
session_push_event(sess, SESSION_EVENT_PACKET);
session_push_event(sess, SESSION_EVENT_CLOSING);
session_manager_update_session_timer(mgr, sess, session_to_closed, mgr->timeout_to_closed);
session_manager_update_session_timer(mgr, sess, session_to_closed, mgr->timeout_toclosed);
return;
}
@@ -487,7 +487,7 @@ static void handle_tcp_old_session(struct session_manager *mgr, struct tuple6 *k
update_counter_on_active(mgr, sess);
session_set_state(sess, SESSION_STATE_ACTIVE);
session_push_event(sess, SESSION_EVENT_PACKET);
session_manager_update_session_timer(mgr, sess, session_to_closing, mgr->timeout_to_closing);
session_manager_update_session_timer(mgr, sess, session_to_closing, mgr->timeout_toclosing);
return;
}
}
@@ -501,7 +501,7 @@ static void handle_udp_old_session(struct session_manager *mgr, struct tuple6 *k
update_counter_on_active(mgr, sess);
session_set_state(sess, SESSION_STATE_ACTIVE);
session_push_event(sess, SESSION_EVENT_PACKET);
session_manager_update_session_timer(mgr, sess, session_to_closing, mgr->timeout_to_closing);
session_manager_update_session_timer(mgr, sess, session_to_closing, mgr->timeout_toclosing);
}
// return 0: success
@@ -571,8 +571,8 @@ struct session_manager *session_manager_create(uint64_t max_session_num)
goto error;
}
mgr->timeout_to_closed = 2 * 1000;
mgr->timeout_to_closing = 5 * 1000;
mgr->timeout_toclosed = 2 * 1000;
mgr->timeout_toclosing = 5 * 1000;
mgr->tcp_opening_sess_num = 0;
mgr->tcp_closing_sess_num = 0;
@@ -617,12 +617,12 @@ void session_manager_set_session_eventcb(struct session_manager *mgr, session_ev
void session_manager_set_timeout_toclosing(struct session_manager *mgr, uint64_t timeout_ms)
{
mgr->timeout_to_closing = timeout_ms;
mgr->timeout_toclosing = timeout_ms;
}
void session_manager_set_timeout_toclosed(struct session_manager *mgr, uint64_t timeout_ms)
{
mgr->timeout_to_closed = timeout_ms;
mgr->timeout_toclosed = timeout_ms;
}
struct session *session_manager_lookup(struct session_manager *mgr, const struct packet *pkt)
@@ -636,7 +636,7 @@ struct session *session_manager_lookup(struct session_manager *mgr, const struct
return session_table_find_session(mgr->sess_table, &key);
}
// return null: Invalid tuple6 or tcp first packet is not syn
// return null: invalid tuple6 or tcp first packet is not syn
struct session *session_manager_update(struct session_manager *mgr, const struct packet *pkt)
{
struct tuple6 key;
@@ -657,7 +657,7 @@ struct session *session_manager_update(struct session_manager *mgr, const struct
session_set_state(unused_sess, SESSION_STATE_CLOSING);
session_push_event(unused_sess, SESSION_EVENT_CLOSING);
session_queue_push(mgr->evicted_sess, unused_sess);
session_manager_update_session_timer(mgr, unused_sess, session_to_closed, mgr->timeout_to_closed);
session_manager_update_session_timer(mgr, unused_sess, session_to_closed, mgr->timeout_toclosed);
}
sess = session_pool_alloc(mgr->sess_pool);
@@ -685,7 +685,7 @@ struct session *session_manager_update(struct session_manager *mgr, const struct
struct session *session_manager_expire(struct session_manager *mgr)
{
SESSION_MANAGER_LOG_DEBUG("current timestamp: %lu s", timestamp_get_sec());
SESSION_LOG_DEBUG("current timestamp: %lu s", timestamp_get_sec());
struct session *sess = session_timer_expire_session(mgr->sess_timer, timestamp_get_msec());
if (sess == NULL)
{
@@ -712,7 +712,7 @@ static void session_dispatch(struct session_manager *mgr, struct session *sess)
uint32_t event;
while (session_pop_event(sess, &event))
{
SESSION_MANAGER_LOG_DEBUG("handle \"%s\" event on session %lu", session_event_tostring((enum session_event)event), session_get_id(sess));
SESSION_LOG_DEBUG("handle \"%s\" event on session %lu", session_event_tostring((enum session_event)event), session_get_id(sess));
if (mgr->event_cb)
{
mgr->event_cb(sess, event, mgr->arg);
@@ -732,32 +732,37 @@ void session_manager_dispatch(struct session_manager *mgr, struct session *sess)
session_dispatch(mgr, evicted_sess);
}
uint64_t session_manager_get_tcp_opening_sess_num(struct session_manager *mgr)
uint64_t session_manager_get_sessions(struct session_manager *mgr, enum session_type type, enum session_state state)
{
return mgr->tcp_opening_sess_num;
}
if (type == SESSION_TYPE_TCP)
{
switch (state)
{
case SESSION_STATE_OPENING:
return mgr->tcp_opening_sess_num;
case SESSION_STATE_ACTIVE:
return mgr->tcp_active_sess_num;
case SESSION_STATE_CLOSING:
return mgr->tcp_closing_sess_num;
default:
return 0;
}
}
uint64_t session_manager_get_tcp_closing_sess_num(struct session_manager *mgr)
{
return mgr->tcp_closing_sess_num;
}
if (type == SESSION_TYPE_UDP)
{
switch (state)
{
case SESSION_STATE_OPENING:
return mgr->udp_opening_sess_num;
case SESSION_STATE_ACTIVE:
return mgr->udp_active_sess_num;
case SESSION_STATE_CLOSING:
return mgr->udp_closing_sess_num;
default:
return 0;
}
}
uint64_t session_manager_get_tcp_active_sess_num(struct session_manager *mgr)
{
return mgr->tcp_active_sess_num;
}
uint64_t session_manager_get_udp_opening_sess_num(struct session_manager *mgr)
{
return mgr->udp_opening_sess_num;
}
uint64_t session_manager_get_udp_closing_sess_num(struct session_manager *mgr)
{
return mgr->udp_closing_sess_num;
}
uint64_t session_manager_get_udp_active_sess_num(struct session_manager *mgr)
{
return mgr->udp_active_sess_num;
return 0;
}

View File

@@ -8,42 +8,34 @@ extern "C"
#include "session.h"
// #define SESSION_MANAGER_LOG_ERROR(format, ...) void(0)
#ifndef SESSION_MANAGER_LOG_ERROR
#define SESSION_MANAGER_LOG_ERROR(format, ...) \
fprintf(stderr, "ERROR (session manager), " format "\n", ##__VA_ARGS__);
// #define SESSION_LOG_ERROR(format, ...) void(0)
#ifndef SESSION_LOG_ERROR
#define SESSION_LOG_ERROR(format, ...) \
fprintf(stderr, "ERROR (session), " format "\n", ##__VA_ARGS__);
#endif
// #define SESSION_MANAGER_LOG_DEBUG(format, ...) void(0)
#ifndef SESSION_MANAGER_LOG_DEBUG
#define SESSION_MANAGER_LOG_DEBUG(format, ...) \
fprintf(stderr, "DEBUG (session manager), " format "\n", ##__VA_ARGS__);
// #define SESSION_LOG_DEBUG(format, ...) void(0)
#ifndef SESSION_LOG_DEBUG
#define SESSION_LOG_DEBUG(format, ...) \
fprintf(stderr, "DEBUG (session), " format "\n", ##__VA_ARGS__);
#endif
// create and destroy
struct session_manager;
struct session_manager *session_manager_create(uint64_t max_session_num);
void session_manager_destroy(struct session_manager *mgr);
// config
typedef void (*session_event_cb)(struct session *sess, uint32_t event, void *arg);
void session_manager_set_session_eventcb(struct session_manager *mgr, session_event_cb cb, void *arg);
void session_manager_set_timeout_toclosing(struct session_manager *mgr, uint64_t timeout_ms);
void session_manager_set_timeout_toclosed(struct session_manager *mgr, uint64_t timeout_ms);
// core functions
struct session *session_manager_lookup(struct session_manager *mgr, const struct packet *pkt);
// return null: Invalid tuple6 or tcp first packet is not syn
// return null: invalid tuple6 or tcp first packet is not syn
struct session *session_manager_update(struct session_manager *mgr, const struct packet *pkt);
struct session *session_manager_expire(struct session_manager *mgr);
void session_manager_dispatch(struct session_manager *mgr, struct session *sess);
// for debug
uint64_t session_manager_get_tcp_opening_sess_num(struct session_manager *mgr);
uint64_t session_manager_get_tcp_closing_sess_num(struct session_manager *mgr);
uint64_t session_manager_get_tcp_active_sess_num(struct session_manager *mgr);
uint64_t session_manager_get_udp_opening_sess_num(struct session_manager *mgr);
uint64_t session_manager_get_udp_closing_sess_num(struct session_manager *mgr);
uint64_t session_manager_get_udp_active_sess_num(struct session_manager *mgr);
uint64_t session_manager_get_sessions(struct session_manager *mgr, enum session_type type, enum session_state state);
#ifdef __cpluscplus
}

View File

@@ -63,21 +63,21 @@ TEST(SESSION, EX_SET_GET)
EXPECT_TRUE(session_get0_ex_data(&sess, idx) == (void *)0x1234);
}
TEST(SESSION, EX_FREE_BY_RESET_NULL)
TEST(SESSION, EX_FREE_BY_RESET)
{
struct session sess;
memset(&sess, 0, sizeof(sess));
uint8_t idx = session_get_ex_new_index("ex_free_by_reset_null", free_ex_data, NULL);
uint8_t idx = session_get_ex_new_index("ex_free_by_reset", free_ex_data, NULL);
char *ptr = strdup("hello");
session_set_ex_data(&sess, idx, ptr);
session_set_ex_data(&sess, idx, NULL);
}
TEST(SESSION, EX_FREE_BY_CALL_API)
TEST(SESSION, EX_FREE_BY_CB)
{
struct session sess;
memset(&sess, 0, sizeof(sess));
uint8_t idx = session_get_ex_new_index("ex_free_by_call_api", free_ex_data, NULL);
uint8_t idx = session_get_ex_new_index("ex_free_by_cb", free_ex_data, NULL);
char *ptr = strdup("hello");
session_set_ex_data(&sess, idx, ptr);
session_free_ex_data(&sess, idx);

View File

@@ -94,12 +94,12 @@ TEST(SESSION_MANAGER, INIT_TO_OPENING_BY_SYN)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == TCP_SYN_RECVED);
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
session_manager_dispatch(mgr, sess);
for (int i = 0; i < 4; i++)
@@ -110,12 +110,12 @@ TEST(SESSION_MANAGER, INIT_TO_OPENING_BY_SYN)
}
// check sess mgr
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
// destory
session_manager_destroy(mgr);
@@ -170,12 +170,12 @@ TEST(SESSION_MANAGER, INIT_TO_OPENING_BY_SYNACK)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == TCP_SYNACK_RECVED);
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
session_manager_dispatch(mgr, sess);
for (int i = 0; i < 4; i++)
@@ -186,12 +186,12 @@ TEST(SESSION_MANAGER, INIT_TO_OPENING_BY_SYNACK)
}
// check sess mgr
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
// destory
session_manager_destroy(mgr);
@@ -250,12 +250,12 @@ TEST(SESSION_MANAGER, INIT_TO_ACTIVE_BY_UDP_C2S)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, udp_builtin_ex) == UDP_C2S_RECVED);
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 1);
session_manager_dispatch(mgr, sess);
for (int i = 0; i < 4; i++)
@@ -266,12 +266,12 @@ TEST(SESSION_MANAGER, INIT_TO_ACTIVE_BY_UDP_C2S)
}
// check sess mgr
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
// destory
session_manager_destroy(mgr);
@@ -326,12 +326,12 @@ TEST(SESSION_MANAGER, INIT_TO_ACTIVE_BY_UDP_S2C)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, udp_builtin_ex) == UDP_S2C_RECVED);
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 1);
session_manager_dispatch(mgr, sess);
for (int i = 0; i < 4; i++)
@@ -342,12 +342,12 @@ TEST(SESSION_MANAGER, INIT_TO_ACTIVE_BY_UDP_S2C)
}
// check sess mgr
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
// destory
session_manager_destroy(mgr);
@@ -413,12 +413,12 @@ TEST(SESSION_MANAGER, OPENING_TO_ACTIVE_BY_SYN_AND_C2S_PAYLOAD)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == TCP_SYN_RECVED);
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer SYN Packet <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -451,12 +451,12 @@ TEST(SESSION_MANAGER, OPENING_TO_ACTIVE_BY_SYN_AND_C2S_PAYLOAD)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == (TCP_SYN_RECVED | TCP_C2S_PAYLOAD_RECVED));
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer C2S Payload Packet <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -474,12 +474,12 @@ TEST(SESSION_MANAGER, OPENING_TO_ACTIVE_BY_SYN_AND_C2S_PAYLOAD)
}
// check sess mgr
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
// destory
session_manager_destroy(mgr);
@@ -541,12 +541,12 @@ TEST(SESSION_MANAGER, OPENING_TO_ACTIVE_BY_SYN_AND_S2C_PAYLOAD)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == TCP_SYN_RECVED);
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer SYN Packet <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -579,12 +579,12 @@ TEST(SESSION_MANAGER, OPENING_TO_ACTIVE_BY_SYN_AND_S2C_PAYLOAD)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == (TCP_SYN_RECVED | TCP_S2C_PAYLOAD_RECVED));
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer C2S Payload Packet <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -601,12 +601,12 @@ TEST(SESSION_MANAGER, OPENING_TO_ACTIVE_BY_SYN_AND_S2C_PAYLOAD)
sleep(1);
}
// check sess mgr
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
// destory
session_manager_destroy(mgr);
@@ -667,12 +667,12 @@ TEST(SESSION_MANAGER, OPENING_TO_ACTIVE_BY_SYNACK_AND_C2S_PAYLOAD)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == TCP_SYNACK_RECVED);
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer SYNACK Packet <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -705,12 +705,12 @@ TEST(SESSION_MANAGER, OPENING_TO_ACTIVE_BY_SYNACK_AND_C2S_PAYLOAD)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == (TCP_SYNACK_RECVED | TCP_C2S_PAYLOAD_RECVED));
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer C2S Payload Packet <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -728,12 +728,12 @@ TEST(SESSION_MANAGER, OPENING_TO_ACTIVE_BY_SYNACK_AND_C2S_PAYLOAD)
}
// check sess mgr
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
// destory
session_manager_destroy(mgr);
@@ -794,12 +794,12 @@ TEST(SESSION_MANAGER, OPENING_TO_ACTIVE_BY_SYNACK_AND_S2C_PAYLOAD)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == TCP_SYNACK_RECVED);
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer SYNACK Packet <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -832,12 +832,12 @@ TEST(SESSION_MANAGER, OPENING_TO_ACTIVE_BY_SYNACK_AND_S2C_PAYLOAD)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == (TCP_SYNACK_RECVED | TCP_S2C_PAYLOAD_RECVED));
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer S2C Payload Packet <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -855,12 +855,12 @@ TEST(SESSION_MANAGER, OPENING_TO_ACTIVE_BY_SYNACK_AND_S2C_PAYLOAD)
}
// check sess mgr
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
// destory
session_manager_destroy(mgr);
@@ -926,12 +926,12 @@ TEST(SESSION_MANAGER, OPENING_TO_ACTIVE_BY_SYN_AND_SYNACK_AND_ACK_AND_C2S_PAYLOA
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == TCP_SYN_RECVED);
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer SYN Packet <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -964,12 +964,12 @@ TEST(SESSION_MANAGER, OPENING_TO_ACTIVE_BY_SYN_AND_SYNACK_AND_ACK_AND_C2S_PAYLOA
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == (TCP_SYN_RECVED | TCP_SYNACK_RECVED));
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer SYNACK Packet <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -1002,12 +1002,12 @@ TEST(SESSION_MANAGER, OPENING_TO_ACTIVE_BY_SYN_AND_SYNACK_AND_ACK_AND_C2S_PAYLOA
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == (TCP_SYN_RECVED | TCP_SYNACK_RECVED));
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer ACK Packet <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -1040,12 +1040,12 @@ TEST(SESSION_MANAGER, OPENING_TO_ACTIVE_BY_SYN_AND_SYNACK_AND_ACK_AND_C2S_PAYLOA
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == (TCP_SYN_RECVED | TCP_SYNACK_RECVED | TCP_C2S_PAYLOAD_RECVED));
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer C2S TCP Payload Packet <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -1062,12 +1062,12 @@ TEST(SESSION_MANAGER, OPENING_TO_ACTIVE_BY_SYN_AND_SYNACK_AND_ACK_AND_C2S_PAYLOA
sleep(1);
}
// check sess mgr
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
// destory
session_manager_destroy(mgr);
@@ -1229,12 +1229,12 @@ TEST(SESSION_MANAGER, TCP_FULL_STREAM)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == TCP_SYN_RECVED);
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer SYN Packet <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -1267,12 +1267,12 @@ TEST(SESSION_MANAGER, TCP_FULL_STREAM)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == (TCP_SYN_RECVED | TCP_SYNACK_RECVED));
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer SYNACK Packet <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -1305,12 +1305,12 @@ TEST(SESSION_MANAGER, TCP_FULL_STREAM)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == (TCP_SYN_RECVED | TCP_SYNACK_RECVED));
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer ACK Packet <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -1343,12 +1343,12 @@ TEST(SESSION_MANAGER, TCP_FULL_STREAM)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == (TCP_SYN_RECVED | TCP_SYNACK_RECVED | TCP_C2S_PAYLOAD_RECVED));
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer C2S HTTP Req Packet <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -1381,12 +1381,12 @@ TEST(SESSION_MANAGER, TCP_FULL_STREAM)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == (TCP_SYN_RECVED | TCP_SYNACK_RECVED | TCP_C2S_PAYLOAD_RECVED));
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer S2C Ack Packet <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -1419,12 +1419,12 @@ TEST(SESSION_MANAGER, TCP_FULL_STREAM)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == (TCP_SYN_RECVED | TCP_SYNACK_RECVED | TCP_C2S_PAYLOAD_RECVED | TCP_S2C_PAYLOAD_RECVED));
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer S2C HTTP Resp Packet1 <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -1457,12 +1457,12 @@ TEST(SESSION_MANAGER, TCP_FULL_STREAM)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == (TCP_SYN_RECVED | TCP_SYNACK_RECVED | TCP_C2S_PAYLOAD_RECVED | TCP_S2C_PAYLOAD_RECVED));
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer S2C HTTP Resp Packet2 <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -1495,12 +1495,12 @@ TEST(SESSION_MANAGER, TCP_FULL_STREAM)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == (TCP_SYN_RECVED | TCP_SYNACK_RECVED | TCP_C2S_PAYLOAD_RECVED | TCP_S2C_PAYLOAD_RECVED));
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer C2S Ack Packet2 <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -1533,12 +1533,12 @@ TEST(SESSION_MANAGER, TCP_FULL_STREAM)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == (TCP_SYN_RECVED | TCP_SYNACK_RECVED | TCP_C2S_PAYLOAD_RECVED | TCP_S2C_PAYLOAD_RECVED | TCP_C2S_FIN_RECVED));
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer C2S FIN Packet <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -1571,12 +1571,12 @@ TEST(SESSION_MANAGER, TCP_FULL_STREAM)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == (TCP_SYN_RECVED | TCP_SYNACK_RECVED | TCP_C2S_PAYLOAD_RECVED | TCP_S2C_PAYLOAD_RECVED | TCP_C2S_FIN_RECVED | TCP_S2C_FIN_RECVED));
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer C2S FIN Packet <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -1609,12 +1609,12 @@ TEST(SESSION_MANAGER, TCP_FULL_STREAM)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, tcp_builtin_ex) == (TCP_SYN_RECVED | TCP_SYNACK_RECVED | TCP_C2S_PAYLOAD_RECVED | TCP_S2C_PAYLOAD_RECVED | TCP_C2S_FIN_RECVED | TCP_S2C_FIN_RECVED));
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
printf("\n===> Atfer C2S ACK Packet <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -1632,12 +1632,12 @@ TEST(SESSION_MANAGER, TCP_FULL_STREAM)
}
// check sess mgr
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
// destory
session_manager_destroy(mgr);
@@ -1698,12 +1698,12 @@ TEST(SESSION_MANAGER, UDP_FULL_STREAM)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, udp_builtin_ex) == UDP_C2S_RECVED);
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 1);
printf("\n===> Atfer UDP c2s Packet <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -1736,12 +1736,12 @@ TEST(SESSION_MANAGER, UDP_FULL_STREAM)
EXPECT_TRUE((uint64_t)session_get0_ex_data(sess, udp_builtin_ex) == (UDP_C2S_RECVED | UDP_S2C_RECVED));
// check session manager info
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 1);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 1);
printf("\n===> Atfer UDP c2s Packet <=== \n\n");
session_manager_dispatch(mgr, sess);
@@ -1758,12 +1758,12 @@ TEST(SESSION_MANAGER, UDP_FULL_STREAM)
}
// check sess mgr
EXPECT_TRUE(session_manager_get_tcp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_tcp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_opening_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_closing_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_udp_active_sess_num(mgr) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_TCP, SESSION_STATE_ACTIVE) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_OPENING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_CLOSING) == 0);
EXPECT_TRUE(session_manager_get_sessions(mgr, SESSION_TYPE_UDP, SESSION_STATE_ACTIVE) == 0);
// destory
session_manager_destroy(mgr);

View File

@@ -1,2 +1,8 @@
add_executable(stellar stellar.cpp)
target_include_directories(stellar PUBLIC ${CMAKE_SOURCE_DIR}/src/packet)
target_include_directories(stellar PUBLIC ${CMAKE_SOURCE_DIR}/src/session)
target_include_directories(stellar PUBLIC ${CMAKE_SOURCE_DIR}/src/timestamp)
target_link_libraries(stellar session_manager pthread)
install(TARGETS stellar RUNTIME DESTINATION bin COMPONENT Program)

View File

@@ -1,7 +1,227 @@
#include <stdio.h>
#include <assert.h>
#include <errno.h>
#include <pthread.h>
#include <unistd.h>
#include <string.h>
#include <sys/prctl.h>
#include <signal.h>
#include "packet.h"
#include "timestamp.h"
#include "session_manager.h"
#ifndef STELLAR_LOG_ERROR
#define STELLAR_LOG_ERROR(format, ...) \
fprintf(stderr, "ERROR (stellar), " format "\n", ##__VA_ARGS__);
#endif
#ifndef STELLAR_LOG_DEBUG
#define STELLAR_LOG_DEBUG(format, ...) \
fprintf(stderr, "DEBUG (stellar), " format "\n", ##__VA_ARGS__);
#endif
#define ATOMIC_SET(x, y) __atomic_store_n(x, y, __ATOMIC_RELAXED)
#define ATOMIC_READ(x) __atomic_load_n(x, __ATOMIC_RELAXED)
struct thread_ctx
{
pthread_t tid;
uint16_t index;
uint64_t need_exit;
uint64_t is_runing;
struct session_manager *sess_mgr;
};
struct stellar_ctx
{
uint64_t need_exit;
uint16_t max_worker_num;
uint64_t sess_mgr_max_session_num;
uint64_t sess_mgr_timeout_ms_toclsoing;
uint64_t sess_mgr_timeout_ms_toclosed;
struct thread_ctx thread_ctx[128];
} g_stellar_ctx = {
.need_exit = 0,
.max_worker_num = 1,
.sess_mgr_max_session_num = 1000000,
.sess_mgr_timeout_ms_toclsoing = 1000,
.sess_mgr_timeout_ms_toclosed = 10000,
};
// TODO
static int recv_packet(const char **data)
{
static unsigned char packet_data[] = {
0x5c, 0x5e, 0xab, 0x2a, 0xa2, 0x00, 0x2c, 0x6b, 0xf5, 0x45, 0x88, 0x29, 0x08, 0x00, 0x45, 0x00, 0x00, 0x5c, 0x0b, 0x4d, 0x00, 0x00, 0x3b, 0x29, 0x09, 0xc8,
0xd2, 0x4d, 0x58, 0xa3, 0x3b, 0x42, 0x04, 0x32, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x06, 0x40, 0x20, 0x01, 0x0d, 0xa8, 0x02, 0x00, 0x90, 0x0e, 0x02, 0x00,
0x5e, 0xfe, 0xd2, 0x4d, 0x58, 0xa3, 0x26, 0x00, 0x14, 0x0e, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x02, 0x10, 0x58, 0xcd, 0x4c, 0x00, 0x50,
0x81, 0x80, 0x5c, 0x76, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x20, 0x00, 0xf7, 0x57, 0x00, 0x00, 0x02, 0x04, 0x04, 0xc4, 0x01, 0x03, 0x03, 0x08, 0x01, 0x01,
0x04, 0x02};
*data = (const char *)packet_data;
return sizeof(packet_data);
}
static void signal_handler(int signo)
{
if (signo == SIGINT)
{
STELLAR_LOG_DEBUG("recv SIGINT, exit !!!");
ATOMIC_SET(&g_stellar_ctx.need_exit, 1);
}
if (signo == SIGQUIT)
{
STELLAR_LOG_DEBUG("recv SIGQUIT, exit !!!");
ATOMIC_SET(&g_stellar_ctx.need_exit, 1);
}
if (signo == SIGTERM)
{
STELLAR_LOG_DEBUG("recv SIGTERM, exit !!!");
ATOMIC_SET(&g_stellar_ctx.need_exit, 1);
}
}
static void plugin_dispatch(struct session *sess, uint32_t event, void *arg)
{
struct thread_ctx *thd_ctx = (struct thread_ctx *)arg;
printf("=> tid[%d] plugin_dispatch handle session: %p, event: \"%s\"\n", thd_ctx->index, sess, session_event_tostring((enum session_event)event));
session_dump(sess);
}
static void thread_ctx_init(struct stellar_ctx *ctx)
{
for (uint16_t i = 0; i < ctx->max_worker_num; i++)
{
struct thread_ctx *thd_ctx = &ctx->thread_ctx[i];
thd_ctx->index = i;
thd_ctx->need_exit = 0;
thd_ctx->is_runing = 0;
thd_ctx->sess_mgr = session_manager_create(ctx->sess_mgr_max_session_num);
assert(thd_ctx->sess_mgr != NULL);
session_manager_set_session_eventcb(thd_ctx->sess_mgr, plugin_dispatch, thd_ctx);
session_manager_set_timeout_toclosing(thd_ctx->sess_mgr, ctx->sess_mgr_timeout_ms_toclsoing);
session_manager_set_timeout_toclosed(thd_ctx->sess_mgr, ctx->sess_mgr_timeout_ms_toclosed);
}
}
static void thread_ctx_free(struct stellar_ctx *ctx)
{
for (uint16_t i = 0; i < ctx->max_worker_num; i++)
{
struct thread_ctx *thd_ctx = &ctx->thread_ctx[i];
if (ATOMIC_READ(&thd_ctx->is_runing) == 0)
{
session_manager_destroy(thd_ctx->sess_mgr);
}
}
}
static void *thread_cycle(void *arg)
{
uint16_t len = 0;
const char *data = NULL;
struct packet pkt;
struct session *sess = NULL;
struct thread_ctx *thd_ctx = (struct thread_ctx *)arg;
struct session_manager *sess_mgr = thd_ctx->sess_mgr;
char thread_name[16];
ATOMIC_SET(&thd_ctx->is_runing, 1);
snprintf(thread_name, sizeof(thread_name), "stellar:%d", thd_ctx->index);
prctl(PR_SET_NAME, (unsigned long long)thread_name, NULL, NULL, NULL);
STELLAR_LOG_DEBUG("worker thread %s runing\n", thread_name);
while (ATOMIC_READ(&thd_ctx->need_exit) == 0)
{
// TODO recv packet
len = recv_packet(&data);
// parse packet
packet_parse(&pkt, data, len);
// TODO duplicated packet filter
// update session
sess = session_manager_update(sess_mgr, &pkt);
if (sess == NULL)
{
goto fast_forward;
}
session_manager_dispatch(sess_mgr, sess);
fast_forward:
// TODO send packet
// dispatch expire session
sess = session_manager_expire(sess_mgr);
session_manager_dispatch(sess_mgr, sess);
// TODO get next timeout
sleep(1);
}
ATOMIC_SET(&thd_ctx->is_runing, 0);
STELLAR_LOG_DEBUG("worker thread %s exit\n", thread_name);
return NULL;
}
int main(int argc, char **argv)
{
printf("Hello Stellar\n");
// TODO parse command line
// TODO init log
// TODO init plugin
// register signal handler
signal(SIGINT, signal_handler);
signal(SIGQUIT, signal_handler);
signal(SIGTERM, signal_handler);
// update timestamp
timestamp_update();
// init thread context
thread_ctx_init(&g_stellar_ctx);
// create worker thread
for (uint16_t i = 0; i < g_stellar_ctx.max_worker_num; i++)
{
struct thread_ctx *thd_ctx = &g_stellar_ctx.thread_ctx[i];
if (pthread_create(&thd_ctx->tid, NULL, thread_cycle, (void *)thd_ctx) < 0)
{
STELLAR_LOG_ERROR("unable to create worker thread, error %d: %s", errno, strerror(errno));
goto error_out;
}
}
// master thread update timestamp
while (!g_stellar_ctx.need_exit)
{
timestamp_update();
sleep(1);
}
// wait worker thread exit
for (uint16_t i = 0; i < g_stellar_ctx.max_worker_num; i++)
{
struct thread_ctx *thd_ctx = &g_stellar_ctx.thread_ctx[i];
ATOMIC_SET(&thd_ctx->need_exit, 1);
while (ATOMIC_READ(&thd_ctx->is_runing) == 1)
{
sleep(1);
}
}
error_out:
thread_ctx_free(&g_stellar_ctx);
// TODO free plugin
// TODO free log
return 0;
}