snowflake changes from global static variables to one instance per thread

This commit is contained in:
luwenpeng
2024-08-23 15:21:07 +08:00
parent 3014e0feef
commit 6808e6ba29
30 changed files with 420 additions and 167 deletions

View File

@@ -3,10 +3,8 @@
#include "tuple.h"
#include "packet_private.h"
#include "packet_parser.h"
#include "snowflake.h"
#include "session_private.h"
#include "session_manager.h"
#include "tcp_reassembly.h"
struct session_manager_options opts = {
// max session number
@@ -48,6 +46,12 @@ struct session_manager_options opts = {
.tcp_reassembly_max_segments = 16,
};
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
{
static uint64_t count = 0;
return (++count);
}
/******************************************************************************
* case: TCP init -> opening (by TCP Fast Open)
******************************************************************************/
@@ -310,6 +314,7 @@ TEST(CASE, TCP_FAST_OPEN)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S fast open packet\n");
@@ -420,11 +425,6 @@ TEST(CASE, TCP_FAST_OPEN)
int main(int argc, char **argv)
{
struct snowflake_options opt = {
.snowflake_base = 1,
.snowflake_offset = 2,
};
snowflake_id_init(&opt);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
}

View File

@@ -1,6 +1,5 @@
#include <gtest/gtest.h>
#include "packet_helper.h"
#include "packet_private.h"
#include "packet_parser.h"
#include "session_private.h"
@@ -47,12 +46,18 @@ struct session_manager_options opts = {
.tcp_reassembly_max_segments = 16,
};
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
{
static uint64_t count = 0;
return (++count);
}
static void packet_set_ip_id(struct packet *pkt, uint16_t ip_id)
{
const struct layer_private *ipv4_layer = packet_get_innermost_layer(pkt, LAYER_PROTO_IPV4);
EXPECT_TRUE(ipv4_layer);
struct ip *hdr = (struct ip *)ipv4_layer->hdr_ptr;
ip4_hdr_set_ipid(hdr, ip_id);
hdr->ip_id = htons(ip_id);
}
#if 1
@@ -65,6 +70,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SYN_DUP)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
@@ -131,6 +137,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SYNACK_DUP)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// S2C SYNACK Packet
printf("\n=> Packet Parse: TCP S2C SYNACK packet\n");
@@ -198,6 +205,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SKIP)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
@@ -284,6 +292,7 @@ TEST(TCP_DUPKT_FILTER_DISABLE, SYN_DUP)
mgr = session_manager_new(&_opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
@@ -334,6 +343,7 @@ TEST(TCP_DUPKT_FILTER_DISABLE, SYNACK_DUP)
mgr = session_manager_new(&_opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// S2C SYNACK Packet
printf("\n=> Packet Parse: TCP S2C SYNACK packet\n");
@@ -375,4 +385,4 @@ int main(int argc, char **argv)
{
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
}

View File

@@ -1,7 +1,6 @@
#include <gtest/gtest.h>
#include "utils.h"
#include "packet_helper.h"
#include "packet_private.h"
#include "packet_parser.h"
#include "session_private.h"
@@ -48,12 +47,18 @@ struct session_manager_options opts = {
.tcp_reassembly_max_segments = 16,
};
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
{
static uint64_t count = 0;
return (++count);
}
static void packet_set_ip_src_addr(struct packet *pkt, uint32_t addr)
{
const struct layer_private *ipv4_layer = packet_get_innermost_layer(pkt, LAYER_PROTO_IPV4);
EXPECT_TRUE(ipv4_layer);
struct ip *hdr = (struct ip *)ipv4_layer->hdr_ptr;
ip4_hdr_set_src_addr(hdr, addr);
hdr->ip_src.s_addr = htonl(addr);
}
#if 1
@@ -65,6 +70,7 @@ TEST(TCP_OVERLOAD, EVICT_OLD_SESS)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
@@ -106,6 +112,7 @@ TEST(TCP_OVERLOAD, EVICT_NEW_SESS)
mgr = session_manager_new(&_opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");

View File

@@ -1,7 +1,6 @@
#include <gtest/gtest.h>
#include "utils.h"
#include "packet_helper.h"
#include "packet_private.h"
#include "packet_parser.h"
#include "session_private.h"
@@ -48,12 +47,18 @@ struct session_manager_options opts = {
.tcp_reassembly_max_segments = 16,
};
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
{
static uint64_t count = 0;
return (++count);
}
static void packet_set_ip_src_addr(struct packet *pkt, uint32_t addr)
{
const struct layer_private *ipv4_layer = packet_get_innermost_layer(pkt, LAYER_PROTO_IPV4);
EXPECT_TRUE(ipv4_layer);
struct ip *hdr = (struct ip *)ipv4_layer->hdr_ptr;
ip4_hdr_set_src_addr(hdr, addr);
hdr->ip_src.s_addr = htonl(addr);
}
#if 1
@@ -66,6 +71,7 @@ TEST(UDP_OVERLOAD, EVICT_OLD_SESS)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S REQ Packet
printf("\n=> Packet Parse: UDP C2S REQ packet\n");
@@ -155,6 +161,7 @@ TEST(UDP_OVERLOAD, EVICT_NEW_SESS)
mgr = session_manager_new(&_opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S REQ Packet
printf("\n=> Packet Parse: UDP C2S REQ packet\n");

View File

@@ -1,6 +1,5 @@
#include <gtest/gtest.h>
#include "snowflake.h"
#include "session_private.h"
#include "session_manager.h"
#include "packet_private.h"
@@ -47,6 +46,12 @@ struct session_manager_options opts = {
.tcp_reassembly_max_segments = 16,
};
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
{
static uint64_t count = 0;
return (++count);
}
static inline void packet_overwrite_src_addr(struct packet *pkt, struct in_addr addr)
{
const struct layer_private *ipv4_layer = packet_get_innermost_layer(pkt, LAYER_PROTO_IPV4);
@@ -128,6 +133,7 @@ TEST(SESS_MGR_SCAN, OPTS)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// new session
memset(&pkt, 0, sizeof(pkt));
@@ -388,11 +394,6 @@ TEST(SESS_MGR_SCAN, OPTS)
int main(int argc, char **argv)
{
struct snowflake_options opt = {
.snowflake_base = 1,
.snowflake_offset = 2,
};
snowflake_id_init(&opt);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}

View File

@@ -1,11 +1,9 @@
#include <gtest/gtest.h>
#include "packet_helper.h"
#include "packet_private.h"
#include "packet_parser.h"
#include "session_private.h"
#include "session_manager.h"
#include "tcp_reassembly.h"
#include "test_packets.h"
struct session_manager_options opts = {
@@ -48,6 +46,12 @@ struct session_manager_options opts = {
.tcp_reassembly_max_segments = 16,
};
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
{
static uint64_t count = 0;
return (++count);
}
static void hex_dump(const char *payload, uint32_t len)
{
printf("Payload Length: %u\n", len);
@@ -72,6 +76,7 @@ TEST(SESS_MGR_TCP_REASSEMBLY, OUT_OF_ORDER)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
@@ -263,6 +268,7 @@ TEST(SESS_MGR_TCP_REASSEMBLY, SEQ_WRAPAROUND)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
@@ -350,4 +356,4 @@ int main(int argc, char **argv)
{
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
}

View File

@@ -2,10 +2,8 @@
#include <gtest/gtest.h>
#include "tuple.h"
#include "packet_helper.h"
#include "packet_private.h"
#include "packet_parser.h"
#include "snowflake.h"
#include "session_private.h"
#include "session_manager.h"
#include "test_packets.h"
@@ -50,6 +48,12 @@ struct session_manager_options opts = {
.tcp_reassembly_max_segments = 16,
};
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
{
static uint64_t count = 0;
return (++count);
}
static void build_active_tcp_session(struct session_manager *mgr, struct session *sess)
{
struct packet pkt;
@@ -94,6 +98,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_FIN_FIN)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet & C2S DATA Packet
build_active_tcp_session(mgr, sess);
@@ -185,6 +190,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_C2S_RST)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet & C2S DATA Packet
build_active_tcp_session(mgr, sess);
@@ -198,8 +204,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_C2S_RST)
const struct layer_private *tcp_layer = packet_get_innermost_layer(&pkt, LAYER_PROTO_TCP);
EXPECT_TRUE(tcp_layer);
struct tcphdr *hdr = (struct tcphdr *)tcp_layer->hdr_ptr;
tcp_hdr_set_flags(hdr, 0);
tcp_hdr_set_rst_flag(hdr, true);
hdr->th_flags = TH_RST;
printf("<= Packet Parse: done\n\n");
// lookup session
@@ -271,6 +276,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_S2C_RST)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet & C2S DATA Packet
build_active_tcp_session(mgr, sess);
@@ -284,8 +290,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_S2C_RST)
const struct layer_private *tcp_layer = packet_get_innermost_layer(&pkt, LAYER_PROTO_TCP);
EXPECT_TRUE(tcp_layer);
struct tcphdr *hdr = (struct tcphdr *)tcp_layer->hdr_ptr;
tcp_hdr_set_flags(hdr, 0);
tcp_hdr_set_rst_flag(hdr, true);
hdr->th_flags = TH_RST;
printf("<= Packet Parse: done\n\n");
// lookup session
@@ -355,6 +360,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_DATA_TIMEOUT)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet & C2S DATA Packet
build_active_tcp_session(mgr, sess);
@@ -404,6 +410,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_C2S_HALF_CLOSED_TIMEOUT)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet & C2S DATA Packet
build_active_tcp_session(mgr, sess);
@@ -483,6 +490,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_S2C_HALF_CLOSED_TIMEOUT)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet & C2S DATA Packet
build_active_tcp_session(mgr, sess);
@@ -549,11 +557,6 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_S2C_HALF_CLOSED_TIMEOUT)
int main(int argc, char **argv)
{
struct snowflake_options opt = {
.snowflake_base = 1,
.snowflake_offset = 2,
};
snowflake_id_init(&opt);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
}

View File

@@ -2,10 +2,8 @@
#include <gtest/gtest.h>
#include "tuple.h"
#include "packet_helper.h"
#include "packet_private.h"
#include "packet_parser.h"
#include "snowflake.h"
#include "session_private.h"
#include "session_manager.h"
#include "test_packets.h"
@@ -50,6 +48,12 @@ struct session_manager_options opts = {
.tcp_reassembly_max_segments = 16,
};
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
{
static uint64_t count = 0;
return (++count);
}
/******************************************************************************
* case: TCP init -> opening (by SYN)
******************************************************************************/
@@ -65,6 +69,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
@@ -142,6 +147,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYNACK)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// S2C SYNACK Packet
printf("\n=> Packet Parse: TCP S2C SYNACK packet\n");
@@ -219,6 +225,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
@@ -308,6 +315,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK_ACK)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
@@ -411,6 +419,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_RETRANSMISSION)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
@@ -432,7 +441,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_RETRANSMISSION)
packet_parse(&pkt, (const char *)syn_retransmission, sizeof(tcp_pkt1_c2s_syn));
const struct layer_private *ipv4_layer = packet_get_innermost_layer(&pkt, LAYER_PROTO_IPV4);
struct ip *hdr = (struct ip *)ipv4_layer->hdr_ptr;
ip4_hdr_set_ipid(hdr, 0x1234);
hdr->ip_id = htons(0x1234);
printf("<= Packet Parse: done\n\n");
// lookup session
@@ -507,6 +516,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYNACK_RETRANSMISSION)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// S2C SYNACK Packet
printf("\n=> Packet Parse: TCP S2C SYNACK packet\n");
@@ -529,7 +539,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYNACK_RETRANSMISSION)
const struct layer_private *ipv4_layer = packet_get_innermost_layer(&pkt, LAYER_PROTO_IPV4);
EXPECT_TRUE(ipv4_layer);
struct ip *hdr = (struct ip *)ipv4_layer->hdr_ptr;
ip4_hdr_set_ipid(hdr, 0x1234);
hdr->ip_id = htons(0x1234);
printf("<= Packet Parse: done\n\n");
// lookup session
@@ -602,6 +612,7 @@ TEST(TCP_INIT_TO_OPENING, BY_C2S_ASMMETRIC)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
@@ -691,6 +702,7 @@ TEST(TCP_INIT_TO_OPENING, BY_S2C_ASMMETRIC)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// S2C SYNACK Packet
printf("\n=> Packet Parse: TCP S2C SYNACK packet\n");
@@ -767,11 +779,6 @@ TEST(TCP_INIT_TO_OPENING, BY_S2C_ASMMETRIC)
int main(int argc, char **argv)
{
struct snowflake_options opt = {
.snowflake_base = 1,
.snowflake_offset = 2,
};
snowflake_id_init(&opt);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
}

View File

@@ -4,7 +4,6 @@
#include "tuple.h"
#include "packet_private.h"
#include "packet_parser.h"
#include "snowflake.h"
#include "session_private.h"
#include "session_manager.h"
#include "test_packets.h"
@@ -49,6 +48,12 @@ struct session_manager_options opts = {
.tcp_reassembly_max_segments = 16,
};
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
{
static uint64_t count = 0;
return (++count);
}
#if 1
TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
{
@@ -60,6 +65,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
@@ -433,11 +439,6 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST)
int main(int argc, char **argv)
{
struct snowflake_options opt = {
.snowflake_base = 1,
.snowflake_offset = 2,
};
snowflake_id_init(&opt);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
}

View File

@@ -4,7 +4,6 @@
#include "tuple.h"
#include "packet_private.h"
#include "packet_parser.h"
#include "snowflake.h"
#include "session_private.h"
#include "session_manager.h"
#include "test_packets.h"
@@ -49,6 +48,12 @@ struct session_manager_options opts = {
.tcp_reassembly_max_segments = 16,
};
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
{
static uint64_t count = 0;
return (++count);
}
/******************************************************************************
* case: TCP opening -> active (by C2S DATA)
******************************************************************************/
@@ -64,6 +69,7 @@ TEST(TCP_OPENING_TO_ACTIVE, BY_SYN_C2S_DATA)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
@@ -153,6 +159,7 @@ TEST(TCP_OPENING_TO_ACTIVE, BY_SYNACK_S2C_DATA)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// S2C SYNACK Packet
printf("\n=> Packet Parse: TCP S2C SYNACK packet\n");
@@ -229,11 +236,6 @@ TEST(TCP_OPENING_TO_ACTIVE, BY_SYNACK_S2C_DATA)
int main(int argc, char **argv)
{
struct snowflake_options opt = {
.snowflake_base = 1,
.snowflake_offset = 2,
};
snowflake_id_init(&opt);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
}

View File

@@ -2,10 +2,8 @@
#include <gtest/gtest.h>
#include "tuple.h"
#include "packet_helper.h"
#include "packet_private.h"
#include "packet_parser.h"
#include "snowflake.h"
#include "session_private.h"
#include "session_manager.h"
#include "test_packets.h"
@@ -50,6 +48,12 @@ struct session_manager_options opts = {
.tcp_reassembly_max_segments = 16,
};
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
{
static uint64_t count = 0;
return (++count);
}
/******************************************************************************
* case: TCP opening -> closing (by FIN-FIN)
******************************************************************************/
@@ -65,6 +69,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_FIN_FIN)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
@@ -165,6 +170,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_C2S_RST)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
@@ -187,8 +193,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_C2S_RST)
const struct layer_private *tcp_layer = packet_get_innermost_layer(&pkt, LAYER_PROTO_TCP);
EXPECT_TRUE(tcp_layer);
struct tcphdr *hdr = (struct tcphdr *)tcp_layer->hdr_ptr;
tcp_hdr_set_flags(hdr, 0);
tcp_hdr_set_rst_flag(hdr, true);
hdr->th_flags = TH_RST;
printf("<= Packet Parse: done\n\n");
// lookup session
@@ -260,6 +265,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_S2C_RST)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
@@ -282,8 +288,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_S2C_RST)
const struct layer_private *tcp_layer = packet_get_innermost_layer(&pkt, LAYER_PROTO_TCP);
EXPECT_TRUE(tcp_layer);
struct tcphdr *hdr = (struct tcphdr *)tcp_layer->hdr_ptr;
tcp_hdr_set_flags(hdr, 0);
tcp_hdr_set_rst_flag(hdr, true);
hdr->th_flags = TH_RST;
printf("<= Packet Parse: done\n\n");
// lookup session
@@ -354,6 +359,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_INIT_TIMEOUT)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
@@ -412,6 +418,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_HANDSHAKE_TIMEOUT)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
@@ -501,6 +508,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_DATA_TIMEOUT)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
@@ -602,6 +610,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_C2S_HALF_FIN)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
@@ -690,6 +699,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_S2C_HALF_FIN)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
@@ -765,11 +775,6 @@ TEST(TCP_OPENING_TO_CLOSING, BY_S2C_HALF_FIN)
int main(int argc, char **argv)
{
struct snowflake_options opt = {
.snowflake_base = 1,
.snowflake_offset = 2,
};
snowflake_id_init(&opt);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
}

View File

@@ -4,7 +4,6 @@
#include "tuple.h"
#include "packet_private.h"
#include "packet_parser.h"
#include "snowflake.h"
#include "session_private.h"
#include "session_manager.h"
#include "test_packets.h"
@@ -49,6 +48,12 @@ struct session_manager_options opts = {
.tcp_reassembly_max_segments = 16,
};
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
{
static uint64_t count = 0;
return (++count);
}
#if 1
TEST(UDP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING, TEST)
{
@@ -60,6 +65,7 @@ TEST(UDP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING, TEST)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S REQ Packet
printf("\n=> Packet Parse: UDP C2S REQ packet\n");
@@ -154,11 +160,6 @@ TEST(UDP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING, TEST)
int main(int argc, char **argv)
{
struct snowflake_options opt = {
.snowflake_base = 1,
.snowflake_offset = 2,
};
snowflake_id_init(&opt);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
}

View File

@@ -4,7 +4,6 @@
#include "tuple.h"
#include "packet_private.h"
#include "packet_parser.h"
#include "snowflake.h"
#include "session_private.h"
#include "session_manager.h"
#include "test_packets.h"
@@ -49,6 +48,12 @@ struct session_manager_options opts = {
.tcp_reassembly_max_segments = 16,
};
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
{
static uint64_t count = 0;
return (++count);
}
/******************************************************************************
* case: UDP init -> opening (by C2S Packet)
* case: UDP opening -> closing (by timeout)
@@ -65,6 +70,7 @@ TEST(UDP_INIT_TO_OPENING_TO_CLOSING, BY_C2S)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S REQ Packet
printf("\n=> Packet Parse: UDP C2S REQ packet\n");
@@ -143,6 +149,7 @@ TEST(UDP_INIT_TO_OPENING_TO_CLOSING, BY_S2C)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// S2C RESP Packet
printf("\n=> Packet Parse: UDP S2C RESP packet\n");
@@ -209,11 +216,6 @@ TEST(UDP_INIT_TO_OPENING_TO_CLOSING, BY_S2C)
int main(int argc, char **argv)
{
struct snowflake_options opt = {
.snowflake_base = 1,
.snowflake_offset = 2,
};
snowflake_id_init(&opt);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
}

View File

@@ -47,6 +47,12 @@ struct session_manager_options opts = {
.tcp_reassembly_max_segments = 16,
};
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
{
static uint64_t count = 0;
return (++count);
}
#if 1
TEST(TIMEOUT, TCP_TIMEOUT_DATA)
{
@@ -56,6 +62,7 @@ TEST(TIMEOUT, TCP_TIMEOUT_DATA)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");

View File

@@ -47,6 +47,12 @@ struct session_manager_options opts = {
.tcp_reassembly_max_segments = 16,
};
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
{
static uint64_t count = 0;
return (++count);
}
#if 1
TEST(TIMEOUT, TCP_TIMEOUT_HANDSHAKE)
{
@@ -56,6 +62,7 @@ TEST(TIMEOUT, TCP_TIMEOUT_HANDSHAKE)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// S2C SYNACK Packet
printf("\n=> Packet Parse: TCP S2C SYNACK packet\n");

View File

@@ -47,6 +47,12 @@ struct session_manager_options opts = {
.tcp_reassembly_max_segments = 16,
};
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
{
static uint64_t count = 0;
return (++count);
}
#if 1
TEST(TIMEOUT, TCP_TIMEOUT_INIT)
{
@@ -56,6 +62,7 @@ TEST(TIMEOUT, TCP_TIMEOUT_INIT)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");

View File

@@ -47,6 +47,12 @@ struct session_manager_options opts = {
.tcp_reassembly_max_segments = 16,
};
static uint64_t session_id_generator(uint64_t now_ms __attribute__((unused)))
{
static uint64_t count = 0;
return (++count);
}
#if 1
TEST(TIMEOUT, UDP_TIMEOUT_DATA1)
{
@@ -56,6 +62,7 @@ TEST(TIMEOUT, UDP_TIMEOUT_DATA1)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S REQ Packet
printf("\n=> Packet Parse: UDP C2S REQ packet\n");
@@ -92,6 +99,7 @@ TEST(TIMEOUT, UDP_TIMEOUT_DATA2)
mgr = session_manager_new(&opts, 1);
EXPECT_TRUE(mgr != NULL);
session_manager_set_session_id_generator(mgr, session_id_generator);
// C2S REQ Packet
printf("\n=> Packet Parse: UDP C2S REQ packet\n");