summaryrefslogtreecommitdiff
path: root/module_test
diff options
context:
space:
mode:
authorlijia <[email protected]>2024-04-25 11:52:01 +0800
committerlijia <[email protected]>2024-04-25 11:52:01 +0800
commit7f3986cd556b00de3b4623bf21ccdce46b511000 (patch)
tree7ed1ecece8d1ab03f6f0f73336239dc59c6db718 /module_test
parent414b9bcf81c482767ee25fc4e1ab427ea933e94b (diff)
Fix bug: where enabling 'inject_all_enabled=1' would cause original packet dup check also be enabled
Diffstat (limited to 'module_test')
-rw-r--r--module_test/src/gtest_inline_run.cpp2
-rw-r--r--module_test/src/gtest_main.cpp37
-rw-r--r--module_test/src/gtest_sapp_fun.h6
-rw-r--r--module_test/src/gtest_sapp_tcp.cpp70
-rw-r--r--module_test/src/gtest_sapp_tcp_plug.cpp18
-rw-r--r--module_test/src/gtest_sapp_udp.cpp43
-rw-r--r--module_test/src/gtest_sapp_udp_plug.cpp48
7 files changed, 155 insertions, 69 deletions
diff --git a/module_test/src/gtest_inline_run.cpp b/module_test/src/gtest_inline_run.cpp
index 41b3edc..c8f218b 100644
--- a/module_test/src/gtest_inline_run.cpp
+++ b/module_test/src/gtest_inline_run.cpp
@@ -515,6 +515,7 @@ void inline_dup_inject_ipv4_tcp_run(void)
update_config_file_by_lastline("etc/sapp.toml", "packet_io.polling","enabled", "1");
update_config_file("etc/sapp.toml", "timeout", "3"); /* inline模式必须靠polling结束超时的流 */
update_config_file("etc/sapp.toml", "inject_all_enabled", "1");
+ update_config_file("etc/sapp.toml", "first_packets", "6");
update_config_file("etc/gdev.conf", "sendto_gdev_ip", "10.3.36.1");
update_plugin_inf("TCP_ALL", "inline_dup_inject_tcpall_entry");
@@ -538,6 +539,7 @@ void inline_dup_inject_ipv6_tcp_run(void)
update_config_file_by_lastline("etc/sapp.toml", "packet_io.polling","enabled", "1");
update_config_file("etc/sapp.toml", "timeout", "3"); /* inline模式必须靠polling结束超时的流 */
update_config_file("etc/sapp.toml", "inject_all_enabled", "1");
+ update_config_file("etc/sapp.toml", "first_packets", "16");
update_config_file("etc/gdev.conf", "sendto_gdev_ip", "10.3.36.1");
update_plugin_inf("TCP_ALL", "inline_dup_inject_tcpall_entry");
diff --git a/module_test/src/gtest_main.cpp b/module_test/src/gtest_main.cpp
index faaba60..7ca66df 100644
--- a/module_test/src/gtest_main.cpp
+++ b/module_test/src/gtest_main.cpp
@@ -24,7 +24,7 @@ int g_slient_mode = 0;
const char *for_test_sapp_version = "4.2.68_c9193fe";
-static int g_libsapp_devel_res = GTEST_SAPP_ERR; /* 使用lisapp_devel.so在同一个进程内运行的测试结�?*/
+static int g_libsapp_devel_res = GTEST_SAPP_ERR; /* 使用lisapp_devel.so在同一个进程内运行的测试结�??*/
int gtest_set_libsapp_devel_result(int res_value)
{
g_libsapp_devel_res = res_value;
@@ -170,7 +170,7 @@ void call_libsapp_devel_online_mode(void)
while(sapp_get_current_state() != SAPP_STATE_PROCESSING){
usleep(100);
}
- sleep(3); /* TODO: 此处不用超时, 而是靠一个标志位或特定状�?*/
+ sleep(3); /* TODO: 此处不用超时, 而是靠一个标志位或特定状�??*/
libsapp_destroy_env();
}
@@ -278,13 +278,19 @@ TEST(udp, link_s2c_10pkt)
}
-#define udp_dup_pkt 1 // for SI symbol view
-TEST(udp, dup_pkt)
+#define udp_dup_pkt_positive 1 // for SI symbol view
+TEST(udp, dup_pkt_positive)
{
- udp_dup_pkt_identify_run();
+ udp_dup_pkt_positive_run();
ASSERT_EQ(GTEST_SAPP_SUCC, gtest_get_libsapp_devel_result());
}
+#define udp_dup_pkt_negative 1 // for SI symbol view
+TEST(udp, dup_pkt_negative)
+{
+ udp_dup_pkt_negative_run();
+ ASSERT_EQ(GTEST_SAPP_SUCC, gtest_get_libsapp_devel_result());
+}
#define udp_cheat_l2tp_dup_dns 1 // for SI symbol view
TEST(udp, cheat_l2tp_dup_dns)
@@ -453,10 +459,17 @@ TEST(tcp, dumpfile_list)
}
-#define tcp_dup_pkt 1 // for SI symbol view
-TEST(tcp, dup_pkt)
+#define tcp_dup_pkt_positive 1 // for SI symbol view
+TEST(tcp, dup_pkt_positive)
+{
+ tcp_dup_pkt_positive_run();
+ ASSERT_EQ(GTEST_SAPP_SUCC, gtest_get_libsapp_devel_result());
+}
+
+#define tcp_dup_pkt_negative 1 // for SI symbol view
+TEST(tcp, dup_pkt_negative)
{
- tcp_dup_pkt_identify_run();
+ tcp_dup_pkt_negative_run();
ASSERT_EQ(GTEST_SAPP_SUCC, gtest_get_libsapp_devel_result());
}
@@ -1313,7 +1326,7 @@ TEST(timer, simple)
/********************* inject rst packet Test ***********************/
#if SAPP_V4 //rst_tcp only support in sapp-v4.0
-#if 0 /* 改成用sapp_benchmark框架测试, 不需要写代码、不用重新编�?*/
+#if 0 /* 改成用sapp_benchmark框架测试, 不需要写代码、不用重新编�??*/
#define inject_rst_packet_test_v4 1 // for SI symbol view
TEST(inject, rst_pkt_v4)
{
@@ -1324,7 +1337,7 @@ TEST(inject, rst_pkt_v4)
/********************* inject rst packet Test ***********************/
#define inject_rst_packet_test_v6 1 // for SI symbol view
-#if 0 /* 改成用sapp_benchmark框架测试, 不需要写代码、不用重新编�?*/
+#if 0 /* 改成用sapp_benchmark框架测试, 不需要写代码、不用重新编�??*/
TEST(inject, rst_pkt_v6)
{
MESA_rst_tcp_test_v6_run();
@@ -2031,7 +2044,7 @@ TEST(proxy, simple)
#define _proxy_kill_tcp 1
/*
TODO:
- 使用libsapp_devel实测, 两个用例不能顺序执行, 疑似与解析层dlopen有关�? 暂未定位原因, 待解�?!!!
+ 使用libsapp_devel实测, 两个用例不能顺序执行, 疑似与解析层dlopen有关�?? 暂未定位原因, 待解�??!!!
*/
#if 0
TEST(proxy, kill_tcp)
@@ -2153,7 +2166,7 @@ TEST(fake_marsio, vlan_flip_and_symmetric_mpls1vs2)
#define _fake_marsio_vlan_mac_flip_inject_no_asymmetric 1
TEST(fake_marsio, vlan_mac_flip_inject_no_asymmetric)
{
- /* 别着�? 不是BUG!
+ /* 别着�?? 不是BUG!
这个测试用例就是应该错的 !!!
*/
EXPECT_EXIT(fake_marsio_vlan_mac_flipping_inject_run(0), testing::ExitedWithCode(1), "index:4, mac addr error");
diff --git a/module_test/src/gtest_sapp_fun.h b/module_test/src/gtest_sapp_fun.h
index a6ed48b..bb2e2ad 100644
--- a/module_test/src/gtest_sapp_fun.h
+++ b/module_test/src/gtest_sapp_fun.h
@@ -279,7 +279,8 @@ void tcp_lost_pkt_run(void);
void tcp_lost_pkt_manual_run(void);
void tcp_raw_entry_run(void);
void tcp_dumpfile_list_run(void);
-void tcp_dup_pkt_identify_run(void);
+void tcp_dup_pkt_positive_run(void);
+void tcp_dup_pkt_negative_run(void);
void tcp_dropstream_and_unorder_run(void);
void tcp_well_known_port_run_v4(void);
void tcp_not_use_well_known_port_run_v4(void);
@@ -302,7 +303,8 @@ void udp_link_c2s_1pkt_run(void);
void udp_link_c2s_10pkt_run(void);
void udp_link_s2c_1pkt_run(void);
void udp_link_s2c_10pkt_run(void);
-void udp_dup_pkt_identify_run(void);
+void udp_dup_pkt_positive_run(void);
+void udp_dup_pkt_negative_run(void);
void cheat_l2tp_dup_dns_run(void);
void cheat_gtp_dup_dns_run(void);
void udp_well_known_port_run_v4(void);
diff --git a/module_test/src/gtest_sapp_tcp.cpp b/module_test/src/gtest_sapp_tcp.cpp
index fe6c0d7..59ab500 100644
--- a/module_test/src/gtest_sapp_tcp.cpp
+++ b/module_test/src/gtest_sapp_tcp.cpp
@@ -59,7 +59,7 @@ void tcp_oos_run(void)
}
-/* TCP因乱�?? 且最大乱序数不合适导致丢包测�??*/
+/* TCP因乱�?? 且最大乱序数不合适导致丢包测�??*/
void tcp_oos_lost_pkt_run(void)
{
set_default_config();
@@ -221,7 +221,7 @@ void tcp_lost_pkt_run(void)
33333333333333333333333333333333333333333333333
44444444444444444444444444444444444444444444444
55555555555555555555555555555555555555555555555
- 故意将第3个数据包删除, 测试丢包检测功�??
+ 故意将第3个数据包删除, 测试丢包检测功�??
*/
void tcp_lost_pkt_manual_run(void)
{
@@ -251,8 +251,8 @@ void tcp_raw_entry_run(void)
}
/*
- 读取一批pcap文件, 这些小pcap文件实际是通过editcap切割一个原始pcap文件而得�??
- 目的是测�??f --dumpfile-list参数功能.
+ 读取一批pcap文件, 这些小pcap文件实际是通过editcap切割一个原始pcap文件而得�??
+ 目的是测�??f --dumpfile-list参数功能.
*/
void tcp_dumpfile_list_run(void)
{
@@ -282,7 +282,7 @@ void tcp_dumpfile_list_run(void)
}
-void tcp_dup_pkt_identify_run(void)
+void tcp_dup_pkt_positive_run(void)
{
set_default_config();
update_config_file("etc/sapp.toml", "syn_mandatory", "0");
@@ -290,9 +290,27 @@ void tcp_dup_pkt_identify_run(void)
update_config_file("etc/sapp.toml", "bloom_capacity", "1000000");
update_config_file("etc/sapp.toml", "bloom_error_rate", "0.00001");
update_config_file("etc/sapp.toml", "bloom_timeout", "10");
- /* tcp层的重复数据包不能在tcp入口测试,因为序号一样肯定被认为是重传而不调用插件,要挂载到TCP_ALL�?? */
- update_plugin_inf("TCP_ALL", "tcpall_dup_pkt_check");
- /* 此pcap包一共有9个包,前两个和后两个是人为制造的重复�?? tcpall插件应该只收�??个包才是对的 */
+ /* tcp层的重复数据包不能在tcp入口测试,因为序号一样肯定被认为是重传而不调用插件,要挂载到TCP_ALL�?? */
+ update_plugin_inf("TCP_ALL", "tcpall_dup_pkt_positive_check");
+ /* 此pcap包一共有9个包,前两个和后两个是人为制造的重复包, tcpall插件应该只收到7个包才是对的 */
+ set_pcap_dumpfile("for_gtest_only/duplicate_packet/tcp_no_syn_dup.pcap");
+ ASSERT_EQ(file_md5_checksum("dumpfile", "a56bfea74cd5168e9e3cbf1e2c5c17fb"),0);
+
+ call_libsapp_devel_for_dumpfile_topspeed();
+}
+
+void tcp_dup_pkt_negative_run(void)
+{
+ set_default_config();
+ update_config_file("etc/sapp.toml", "syn_mandatory", "0");
+ update_config_file("etc/sapp.toml", "original_ipv4_tcp_enabled", "0");
+ update_config_file("etc/sapp.toml", "inject_all_enabled", "1");
+ update_config_file("etc/sapp.toml", "bloom_capacity", "1000000");
+ update_config_file("etc/sapp.toml", "bloom_error_rate", "0.00001");
+ update_config_file("etc/sapp.toml", "bloom_timeout", "10");
+ /* tcp层的重复数据包不能在tcp入口测试,因为序号一样肯定被认为是重传而不调用插件,要挂载到TCP_ALL�?? */
+ update_plugin_inf("TCP_ALL", "tcpall_dup_pkt_negative_check");
+ /* 此pcap包一共有9个包,前两个和后两个是人为制造的重复包, 关闭重复包检查, tcpall插件应该全收到9个包才是对的 */
set_pcap_dumpfile("for_gtest_only/duplicate_packet/tcp_no_syn_dup.pcap");
ASSERT_EQ(file_md5_checksum("dumpfile", "a56bfea74cd5168e9e3cbf1e2c5c17fb"),0);
@@ -300,7 +318,7 @@ void tcp_dup_pkt_identify_run(void)
}
/*
- 一个流有乱序包, 但是插件曾经调用过MSO_DROP_STREAM, 理论上什么情况都不应该再调用插件�??
+ 一个流有乱序包, 但是插件曾经调用过MSO_DROP_STREAM, 理论上什么情况都不应该再调用插件�??
*/
void tcp_dropstream_and_unorder_run(void)
{
@@ -316,7 +334,7 @@ void tcp_dropstream_and_unorder_run(void)
}
/*
- 期待�??gtest_sapp_hybrid_stream.log 日志内容:
+ 期待�??gtest_sapp_hybrid_stream.log 日志内容:
stream:192.168.36.103.57222>120.241.25.57.36688,c2s_pkt:5,c2s_byte:548,s2c_pkt:4,s2c_byte:20
stream:192.168.36.103.57235>120.241.25.15.36688,c2s_pkt:7,c2s_byte:424,s2c_pkt:5,s2c_byte:40
@@ -462,7 +480,7 @@ void hybrid_pure_tcp_run(void)
update_plugin_inf_with_options("./plug/business/gtest_sapp", "gtest", "gtest_sapp_slave_init", "hybrid_tcp_destroy", "TCP", "hybrid_stream_log_entry");
- /* hybrid混合包测试用例不开启重复流量检�??*/
+ /* hybrid混合包测试用例不开启重复流量检�??*/
update_config_file("etc/sapp.toml", "inject_all_enabled", "0");
update_config_file("etc/sapp.toml", "original_ipv4_tcp_enabled", "0");
update_config_file("etc/sapp.toml", "original_ipv4_udp_enabled", "0");
@@ -483,7 +501,7 @@ void hybrid_pure_tcp_run(void)
/*
- 单次读取一批pcap包测�?? 期待�??gtest_sapp_hybrid_stream.log:
+ 单次读取一批pcap包测�?? 期待�??gtest_sapp_hybrid_stream.log:
stream:2001::192:168:40:134.37948>2001::192:168:40:133.22,c2s_pkt:60,c2s_byte:3937,s2c_pkt:41,s2c_byte:4813
stream:2a00:5e80:101:212d:504:7b1:2572:db22.37034>2606:f200:0:7:bad:f00d:d00d:1.80,c2s_pkt:5,c2s_byte:82,s2c_pkt:4,s2c_byte:381
@@ -516,7 +534,7 @@ void hybrid_dataset_run(void)
update_config_file("etc/sapp.toml", "reorder_pkt_max", "100");
update_config_file("etc/sapp.toml", "timeout", "0");
- /* hybrid混合包测试用例不开启重复流量检�??*/
+ /* hybrid混合包测试用例不开启重复流量检�??*/
update_config_file("etc/sapp.toml", "inject_all_enabled", "0");
update_config_file("etc/sapp.toml", "original_ipv4_tcp_enabled", "0");
update_config_file("etc/sapp.toml", "original_ipv4_udp_enabled", "0");
@@ -535,7 +553,7 @@ void hybrid_dataset_run(void)
/*
- 带fin包正常结束的tcp四元组重用测�?? 没有TCP_ALL插件.
+ 带fin包正常结束的tcp四元组重用测�?? 没有TCP_ALL插件.
*/
void tcp_tuple4_reuse_with_fin_run(void)
{
@@ -563,7 +581,7 @@ void tcp_tuple4_reuse_with_fin_run(void)
}
/*
- 带fin包正常结束的tcp四元组重用测�?? 还加载了TCP_ALL插件, 此时第一个流结束不会真正free, 而是转到nouse链表.
+ 带fin包正常结束的tcp四元组重用测�?? 还加载了TCP_ALL插件, 此时第一个流结束不会真正free, 而是转到nouse链表.
*/
void tcpall_tuple4_reuse_with_fin_run(void)
{
@@ -595,7 +613,7 @@ void tcpall_tuple4_reuse_with_fin_run(void)
/*
- 没有正常结束的tcp四元组重用测�??
+ 没有正常结束的tcp四元组重用测�??
*/
void tcp_tuple4_reuse_no_close_run(void)
{
@@ -634,7 +652,7 @@ void tcp_well_known_port_run_v4(void)
update_plugin_inf("TCP", "tcp_well_known_port_v4_entry");
system("echo [TCP] > ./etc/well_known_port.conf");
system("echo 8088 >> ./etc/well_known_port.conf");
- /* UDP的配置在这里其实没啥�?? 就是顺带测试一下解析配置文件的功能 */
+ /* UDP的配置在这里其实没啥�?? 就是顺带测试一下解析配置文件的功能 */
system("echo [UDP] >> ./etc/well_known_port.conf");
system("echo 12345 >> ./etc/well_known_port.conf");
system("echo 54321 >> ./etc/well_known_port.conf");
@@ -648,7 +666,7 @@ void tcp_well_known_port_run_v4(void)
/*
测试小端口是客户端的四元组创建流方向,
- 此包是带SYN标志�?? 理论上不应该受etc/well_known_port.conf影响, 故意将源端口33720设成服务�??
+ 此包是带SYN标志�?? 理论上不应该受etc/well_known_port.conf影响, 故意将源端口33720设成服务�??
*/
void tcp_not_use_well_known_port_run_v4(void)
{
@@ -657,7 +675,7 @@ void tcp_not_use_well_known_port_run_v4(void)
update_plugin_inf("TCP", "tcp_should_not_use_well_known_port_v4_entry");
system("echo [TCP] > ./etc/well_known_port.conf");
system("echo 33720 >> ./etc/well_known_port.conf");
- /* UDP的配置在这里其实没啥�?? 就是顺带测试一下解析配置文件的功能 */
+ /* UDP的配置在这里其实没啥�?? 就是顺带测试一下解析配置文件的功能 */
system("echo [UDP] >> ./etc/well_known_port.conf");
system("echo 12345 >> ./etc/well_known_port.conf");
system("echo 54321 >> ./etc/well_known_port.conf");
@@ -680,7 +698,7 @@ void tcp_well_known_port_run_v6(void)
update_plugin_inf("TCP", "tcp_well_known_port_v6_entry");
system("echo [TCP] > ./etc/well_known_port.conf");
system("echo 55555 >> ./etc/well_known_port.conf");
- /* UDP的配置在这里其实没啥�?? 就是顺带测试一下解析配置文件的功能 */
+ /* UDP的配置在这里其实没啥�?? 就是顺带测试一下解析配置文件的功能 */
system("echo [UDP] >> ./etc/well_known_port.conf");
system("echo 12345 >> ./etc/well_known_port.conf");
system("echo 54321 >> ./etc/well_known_port.conf");
@@ -693,7 +711,7 @@ void tcp_well_known_port_run_v6(void)
}
/*
- tcp重传包处�??
+ tcp重传包处�??
*/
void tcp_retransmit_run(void)
{
@@ -734,9 +752,9 @@ void tcp_overlap_run(void)
/*
在没有TCP插件且第一个包就是乱序的情况下,
- sapp在函数tcp_deal_unorder()�?? 会调用update_stream_list_raw_pkt_pointer(),
+ sapp在函数tcp_deal_unorder()�?? 会调用update_stream_list_raw_pkt_pointer(),
但是忘记恢复rawpkt指针就返回了, 导致后续再访问rawpkt其实是被free的乱序包中的rawpkt,
- 如果有插件获取原始包选项, �??021-08-23之前是错误的!
+ 如果有插件获取原始包选项, �??021-08-23之前是错误的!
*/
void tcp_first_unorder_rawpkt_run(void)
{
@@ -751,7 +769,7 @@ void tcp_first_unorder_rawpkt_run(void)
}
/*
- gtp有序�?? 无扩展头�??
+ gtp有序�?? 无扩展头�??
*/
void gtp_with_seq_no_ext_tcp_run(void)
{
@@ -766,7 +784,7 @@ void gtp_with_seq_no_ext_tcp_run(void)
}
/*
- gtp无序�?? 但是有扩展头�??
+ gtp无序�?? 但是有扩展头�??
*/
void gtp_without_seq_and_ext_tcp_run(void)
{
@@ -782,7 +800,7 @@ void gtp_without_seq_and_ext_tcp_run(void)
/*
- gtp有序号且有扩展头�??
+ gtp有序号且有扩展头�??
*/
#if (0 == HIGH_PERF)
void gtp_with_seq_and_ext_tcp_run(void)
diff --git a/module_test/src/gtest_sapp_tcp_plug.cpp b/module_test/src/gtest_sapp_tcp_plug.cpp
index b9833b0..4257442 100644
--- a/module_test/src/gtest_sapp_tcp_plug.cpp
+++ b/module_test/src/gtest_sapp_tcp_plug.cpp
@@ -697,7 +697,7 @@ extern "C" char tcp_dumpfile_list_entry(struct streaminfo *pstream,void **pme, i
}
-extern "C" char tcpall_dup_pkt_check(struct streaminfo *pstream,void **pme, int thread_seq, void *a_packet)
+extern "C" char tcpall_dup_pkt_positive_check(struct streaminfo *pstream,void **pme, int thread_seq, void *a_packet)
{
if(OP_STATE_CLOSE == pstream->pktstate){
if(pstream->ptcpdetail->clientpktnum + pstream->ptcpdetail->serverpktnum == 7){
@@ -714,6 +714,22 @@ extern "C" char tcpall_dup_pkt_check(struct streaminfo *pstream,void **pme, int
return APP_STATE_GIVEME;
}
+extern "C" char tcpall_dup_pkt_negative_check(struct streaminfo *pstream,void **pme, int thread_seq, void *a_packet)
+{
+ if(OP_STATE_CLOSE == pstream->pktstate){
+ if(pstream->ptcpdetail->clientpktnum + pstream->ptcpdetail->serverpktnum == 9){
+ printf("\033[32mtcp.dup_pkt test succ\033[0m\n");
+ gtest_set_libsapp_devel_result(GTEST_SAPP_SUCC);
+ }else{
+ printf("\033[1;31;40mtcp_dup_pkt_check error, expect 9 pkt, but actual is:%u\033[0m\n",
+ pstream->ptcpdetail->clientpktnum + pstream->ptcpdetail->serverpktnum);
+ gtest_set_libsapp_devel_result(GTEST_SAPP_ERR);
+ return APP_STATE_DROPME;
+ }
+ }
+
+ return APP_STATE_GIVEME;
+}
extern "C" char tcp_dropstream_and_unorder_entry(struct streaminfo *pstream,void **pme, int thread_seq, void *a_packet)
{
diff --git a/module_test/src/gtest_sapp_udp.cpp b/module_test/src/gtest_sapp_udp.cpp
index b4c7c56..5687c6c 100644
--- a/module_test/src/gtest_sapp_udp.cpp
+++ b/module_test/src/gtest_sapp_udp.cpp
@@ -69,11 +69,11 @@ void udp_link_c2s_10pkt_run(void)
set_pcap_dumpfile("for_gtest_only/udp/udp_C2S_10.pcap");
- /* udp_C2S_10.pcap测试包需�?个驱动包, 把第一个了连接淘汰, 因为lrustream只淘汰当前stream_state的链�?
+ /* udp_C2S_10.pcap测试包需�?个驱动包, 把第一个了连接淘汰, 因为lrustream只淘汰当前stream_state的链�?
第一个包是UDP_ONE,
第二个包是UDP_TWO,
- 第三个包是UDP_MORE, 在lrustream之后才更新状�? 但是还没来得及淘汰第一个连�?
- 第四个包是UDP_MORE,且把第一个连接淘�?
+ 第三个包是UDP_MORE, 在lrustream之后才更新状�? 但是还没来得及淘汰第一个连�?
+ 第四个包是UDP_MORE,且把第一个连接淘�?
*/
ASSERT_EQ(file_md5_checksum("dumpfile", "ff140c986f5d412d6cd234f1b44024fa"),0);
@@ -128,7 +128,7 @@ void udp_link_s2c_10pkt_run(void)
}
-void udp_dup_pkt_identify_run(void)
+void udp_dup_pkt_positive_run(void)
{
set_default_config();
@@ -137,9 +137,9 @@ void udp_dup_pkt_identify_run(void)
update_config_file("etc/sapp.toml", "bloom_error_rate", "0.00001");
update_config_file("etc/sapp.toml", "bloom_timeout", "10");
- update_plugin_inf("UDP", "udp_dup_pkt_check");
+ update_plugin_inf("UDP", "udp_dup_pkt_positive_check");
- /* 此pcap包一共有9个包,前两个和后两个是人为制造的重复�? 插件应该只收�?个包才是对的 */
+ /* 此pcap包一共有9个包,前两个和后两个是人为制造的重复包, 插件应该只收到 7 个包才是对的 */
set_pcap_dumpfile("for_gtest_only/duplicate_packet/udp_dup.pcap");
ASSERT_EQ(file_md5_checksum("dumpfile", "d3641c8f301e78006d7cdb199538e73b"),0);
@@ -147,8 +147,29 @@ void udp_dup_pkt_identify_run(void)
call_libsapp_devel_for_dumpfile_topspeed();
}
+void udp_dup_pkt_negative_run(void)
+{
+ set_default_config();
+
+ update_config_file("etc/sapp.toml", "original_ipv4_udp_enabled", "0");
+ update_config_file("etc/sapp.toml", "inject_all_enabled", "1");
+ update_config_file("etc/sapp.toml", "bloom_capacity", "1000000");
+ update_config_file("etc/sapp.toml", "bloom_error_rate", "0.00001");
+ update_config_file("etc/sapp.toml", "bloom_timeout", "10");
+
+ update_plugin_inf("UDP", "udp_dup_pkt_negative_check");
+
+ /* 此pcap包一共有9个包,前两个和后两个是人为制造的重复包, 关闭重复包检查, 插件应该也收到 9 个包才是对的 */
+ set_pcap_dumpfile("for_gtest_only/duplicate_packet/udp_dup.pcap");
+
+ ASSERT_EQ(file_md5_checksum("dumpfile", "d3641c8f301e78006d7cdb199538e73b"),0);
+
+ call_libsapp_devel_for_dumpfile_topspeed();
+}
+
+
/*
-期待�?gtest_sapp_hybrid_stream.log 日志内容:
+期待�?gtest_sapp_hybrid_stream.log 日志内容:
stream:192.168.36.103.54275>224.0.0.252.5355,c2s_pkt:1,c2s_byte:21,s2c_pkt:0,s2c_byte:0
@@ -309,7 +330,7 @@ void hybrid_pure_udp_run(void)
update_plugin_inf_with_options("./plug/business/gtest_sapp", "gtest", "gtest_sapp_slave_init", "hybrid_udp_destroy", "UDP", "hybrid_pure_udp_entry");
- /* hybrid混合包测试用例不开启重复流量检�?*/
+ /* hybrid混合包测试用例不开启重复流量检�?*/
update_config_file("etc/sapp.toml", "inject_all_enabled", "0");
update_config_file("etc/sapp.toml", "original_ipv4_tcp_enabled", "0");
update_config_file("etc/sapp.toml", "original_ipv4_udp_enabled", "0");
@@ -327,7 +348,7 @@ void hybrid_pure_udp_run(void)
/*
l2tp_cheat_dup_dns.pcap这包, 外层l2tp的ipid, udp-check都是0, 但是内层ipid,udp-check, dns trans id确实是不一样的,
- 所�? 不能被识别成是重复流�?
+ 所�? 不能被识别成是重复流�?
*/
void cheat_l2tp_dup_dns_run(void)
{
@@ -347,7 +368,7 @@ void cheat_l2tp_dup_dns_run(void)
/*
gtp_cheat_dup_dns.pcap这包, 外层gtp的ipid, udp-check都是0, 但是内层ipid,udp-check, dns trans id确实是不一样的,
- 所�? 不能被识别成是重复流�?
+ 所�? 不能被识别成是重复流�?
*/
void cheat_gtp_dup_dns_run(void)
{
@@ -425,7 +446,7 @@ void udp_tuple4_reuse_test(void)
update_plugin_inf("UDP", "udp_timeout_reset_entry");
- /* 这个pcap�?0秒后会超�? 被sapp分成两个流处�?*/
+ /* 这个pcap�?0秒后会超�? 被sapp分成两个流处�?*/
set_pcap_dumpfile("for_gtest_only/udp/udp_timeout_reuse.pcap");
ASSERT_EQ(file_md5_checksum("dumpfile", "b7c83190ac89dd081a6235aafe9ed096"),0);
diff --git a/module_test/src/gtest_sapp_udp_plug.cpp b/module_test/src/gtest_sapp_udp_plug.cpp
index c9bcfd2..cc322e0 100644
--- a/module_test/src/gtest_sapp_udp_plug.cpp
+++ b/module_test/src/gtest_sapp_udp_plug.cpp
@@ -14,7 +14,7 @@ int gtest_udp_tot_stream_num = 0;
static gtest_plug_stat_t gtest_udp_stat;
/*
- UDP流还原基本结果测�?
+ UDP流还原基本结果测�?
与第三方开源DPI对比:
https://github.com/DanieleDeSensi/peafowl
*/
@@ -76,7 +76,7 @@ extern "C" char udp_link_c2s_1pkt_entry(struct streaminfo *pstream,void **pme, i
&&(pstream->addr.tuple4_v4->daddr == server_ip)){
if((1 == pstream->pudpdetail->serverpktnum)
&&(31 == pstream->pudpdetail->serverbytes)){
- ;//go on, 在udp_link_check_result_tcp_entry()里检查其他计�?
+ ;//go on, 在udp_link_check_result_tcp_entry()里检查其他计�?
}else{
printf("\033[1;31;40mudp_link_c2s_1pkt_entry: check data error!\033[0m\n");
gtest_set_libsapp_devel_result(GTEST_SAPP_ERR);
@@ -99,7 +99,7 @@ extern "C" char udp_link_c2s_10pkt_entry(struct streaminfo *pstream,void **pme,
&&(pstream->addr.tuple4_v4->daddr == server_ip)){
if((10 == pstream->pudpdetail->serverpktnum)
&&(2510 == pstream->pudpdetail->serverbytes)){
- ;//go on, 在udp_link_check_result_tcp_entry()里检查其他计�?
+ ;//go on, 在udp_link_check_result_tcp_entry()里检查其他计�?
}else{
printf("\033[1;31;40mudp_link_c2s_1pkt_entry: check data error!\033[0m\n");
gtest_set_libsapp_devel_result(GTEST_SAPP_ERR);
@@ -122,7 +122,7 @@ extern "C" char udp_link_s2c_1pkt_entry(struct streaminfo *pstream,void **pme, i
&&(pstream->addr.tuple4_v4->daddr == server_ip)){
if((1 == pstream->pudpdetail->clientpktnum)
&&(39 == pstream->pudpdetail->clientbytes)){
- ;//go on, 在udp_link_check_result_tcp_entry()里检查其他计�?
+ ;//go on, 在udp_link_check_result_tcp_entry()里检查其他计�?
}else{
printf("\033[1;31;40mudp_link_c2s_1pkt_entry: check data error!\033[0m\n");
gtest_set_libsapp_devel_result(GTEST_SAPP_ERR);
@@ -145,7 +145,7 @@ extern "C" char udp_link_s2c_10pkt_entry(struct streaminfo *pstream,void **pme,
&&(pstream->addr.tuple4_v4->daddr == server_ip)){
if((10 == pstream->pudpdetail->clientpktnum)
&&(2694 == pstream->pudpdetail->clientbytes)){
- ;//go on, 在udp_link_check_result_tcp_entry()里检查其他计�?
+ ;//go on, 在udp_link_check_result_tcp_entry()里检查其他计�?
}else{
printf("\033[1;31;40mudp_link_c2s_1pkt_entry: check data error!\033[0m\n");
gtest_set_libsapp_devel_result(GTEST_SAPP_ERR);
@@ -189,7 +189,7 @@ static char *get_file_md5sum(const char *filename, char *md5sum, int buflen)
extern sapp_global_t *sapp_global_val;
/*
- 排在udp_entry之后, 用于udp超时后比较udp的统计计�?
+ 排在udp_entry之后, 用于udp超时后比较udp的统计计�?
*/
extern "C" char udp_link_check_result_tcp_entry(struct streaminfo *pstream,void **pme, int thread_seq, void *a_packet)
{
@@ -272,13 +272,13 @@ extern "C" char udp_link_check_result_tcp_entry(struct streaminfo *pstream,void
}
-extern "C" char udp_dup_pkt_check(struct streaminfo *pstream,void **pme, int thread_seq, void *a_packet)
+extern "C" char udp_dup_pkt_positive_check(struct streaminfo *pstream,void **pme, int thread_seq, void *a_packet)
{
if(OP_STATE_CLOSE == pstream->opstate){
if(pstream->pudpdetail->clientpktnum + pstream->pudpdetail->serverpktnum == 7){
gtest_set_libsapp_devel_result(GTEST_SAPP_SUCC);
}else{
- printf("\033[1;31;40mudp_dup_pkt_check error, expect 7 pkt, but actual is:%u\033[0m\n",
+ printf("\033[1;31;40mudp_dup_pkt_positive_check error, expect 7 pkt, but actual is:%u\033[0m\n",
pstream->pudpdetail->clientpktnum + pstream->pudpdetail->serverpktnum);
gtest_set_libsapp_devel_result(GTEST_SAPP_ERR);
return APP_STATE_DROPME;
@@ -288,9 +288,23 @@ extern "C" char udp_dup_pkt_check(struct streaminfo *pstream,void **pme, int thr
return APP_STATE_GIVEME;
}
+extern "C" char udp_dup_pkt_negative_check(struct streaminfo *pstream,void **pme, int thread_seq, void *a_packet)
+{
+ if(OP_STATE_CLOSE == pstream->opstate){
+ if(pstream->pudpdetail->clientpktnum + pstream->pudpdetail->serverpktnum == 9){
+ gtest_set_libsapp_devel_result(GTEST_SAPP_SUCC);
+ }else{
+ printf("\033[1;31;40mudp_dup_pkt_negative_check error, expect 9 pkt, but actual is:%u\033[0m\n",
+ pstream->pudpdetail->clientpktnum + pstream->pudpdetail->serverpktnum);
+ gtest_set_libsapp_devel_result(GTEST_SAPP_ERR);
+ return APP_STATE_DROPME;
+ }
+ }
+ return APP_STATE_GIVEME;
+}
static FILE *hybrid_stream_log_fp;
-/* 原始日志gtest_sapp_hybrid_tcp.log的二进制内容, 随着sapp的更新和修改, 以后新打印出来的日志应该与这个完全一�?! */
+/* 原始日志gtest_sapp_hybrid_tcp.log的二进制内容, 随着sapp的更新和修改, 以后新打印出来的日志应该与这个完全一�?! */
const static unsigned char hybrid_pure_udp_log_bin[] =
{
0x73,0x74,0x72,0x65,0x61,0x6D,0x3A,0x31,0x39,0x32,0x2E,0x31,0x36,0x38,0x2E,0x33,
@@ -1201,7 +1215,7 @@ extern "C" char cheat_l2tp_dup_check_entry(struct streaminfo *pstream,void **pme
}
if(pstream->opstate == OP_STATE_CLOSE){
- if(this_plug_call_times != 4){ /* l2tp_cheat_dup_dns.pcap 实际�?个数据包, 并不是重复的 */
+ if(this_plug_call_times != 4){ /* l2tp_cheat_dup_dns.pcap 实际�?个数据包, 并不是重复的 */
printf("\033[1;31;40m cheat_l2tp_dup_check_entry() check error, expect 4 pkt, but actual is:%d\033[0m\n", this_plug_call_times);
gtest_set_libsapp_devel_result(GTEST_SAPP_ERR);
}else{
@@ -1230,7 +1244,7 @@ extern "C" char cheat_gtp_dup_check_entry(struct streaminfo *pstream,void **pme,
}
if(pstream->opstate == OP_STATE_CLOSE){
- if(this_plug_call_times != 5){ /* gtp_cheat_dup_dns.pcap 实际�?个数据包, 并不是重复的 */
+ if(this_plug_call_times != 5){ /* gtp_cheat_dup_dns.pcap 实际�?个数据包, 并不是重复的 */
printf("\033[1;31;40m cheat_gtp_dup_check_entry() check error, expect 5 pkt, but actual is:%d\033[0m\n", this_plug_call_times);
gtest_set_libsapp_devel_result(GTEST_SAPP_ERR);
}else{
@@ -1243,9 +1257,9 @@ extern "C" char cheat_gtp_dup_check_entry(struct streaminfo *pstream,void **pme,
}
/*
- 原始四元组是4013->8000, �?000实际上是服务�?
- 按之前的"大端口是客户�?原则, 首包会被认为是S2C方向, 源IP�?23.166.151.98,
- 设置了well_known_port.conf之后, 应该是C2S方向, 源IP�?92.168.36.103.
+ 原始四元组是4013->8000, �?000实际上是服务�?
+ 按之前的"大端口是客户�?原则, 首包会被认为是S2C方向, 源IP�?23.166.151.98,
+ 设置了well_known_port.conf之后, 应该是C2S方向, 源IP�?92.168.36.103.
*/
extern "C" char udp_well_known_port_v4_entry(struct streaminfo *pstream,void **pme, int thread_seq, void *a_packet)
{
@@ -1285,9 +1299,9 @@ extern "C" char udp_well_known_port_v4_entry(struct streaminfo *pstream,void **p
}
/*
- 原始四元组是45072->45678, �?5678实际上是服务�?
- 按之前的"大端口是客户�?原则, 首包会被认为是S2C方向, 源IP�?001::192:168:40:161,
- 设置了well_known_port.conf之后, 应该是C2S方向, 源IP�?001::192:168:40:162
+ 原始四元组是45072->45678, �?5678实际上是服务�?
+ 按之前的"大端口是客户�?原则, 首包会被认为是S2C方向, 源IP�?001::192:168:40:161,
+ 设置了well_known_port.conf之后, 应该是C2S方向, 源IP�?001::192:168:40:162
*/
extern "C" char udp_well_known_port_v6_entry(struct streaminfo *pstream,void **pme, int thread_seq, void *a_packet)
{