Add test case: inject IPv4 based TCP payload packet after recv S2C first payload

This commit is contained in:
luwenpeng
2024-05-22 14:05:36 +08:00
parent e8c61a1752
commit 22f7ddb361
11 changed files with 68 additions and 1 deletions

View File

@@ -17,12 +17,16 @@ target_link_libraries(gtest_inject_tcp_rst_after_recv_s2c_first_payload libpacke
add_executable(gtest_inject_tcp_payload_after_recv_c2s_first_payload gtest_inject_tcp_payload_after_recv_c2s_first_payload.cpp)
target_link_libraries(gtest_inject_tcp_payload_after_recv_c2s_first_payload libpacket_injector)
add_executable(gtest_inject_tcp_payload_after_recv_s2c_first_payload gtest_inject_tcp_payload_after_recv_s2c_first_payload.cpp)
target_link_libraries(gtest_inject_tcp_payload_after_recv_s2c_first_payload libpacket_injector)
include(GoogleTest)
gtest_discover_tests(gtest_inject_tcp_rst_after_recv_syn_ack)
gtest_discover_tests(gtest_inject_tcp_rst_after_recv_sub_ack)
gtest_discover_tests(gtest_inject_tcp_rst_after_recv_c2s_first_payload)
gtest_discover_tests(gtest_inject_tcp_rst_after_recv_s2c_first_payload)
gtest_discover_tests(gtest_inject_tcp_payload_after_recv_c2s_first_payload)
gtest_discover_tests(gtest_inject_tcp_payload_after_recv_s2c_first_payload)
add_executable(packet_injector packet_injector.cpp)
target_link_libraries(packet_injector core gtest)

View File

@@ -40,4 +40,5 @@ curl -v http://http.badssl.selftest.gdnt-cloud.website --resolve "http.badssl.se
| tcp-rst | c2s-packet | 2 | After recv Sub-ACK | Success |
| tcp-rst | c2s-packet | 3 | After recv C2S First-Payload | Success |
| tcp-rst | s2c-packet | 3 | After recv S2C First-payload | Success |
| tcp-payload | c2s-packet | 3 | After recv C2S First-Payload | Success |
| tcp-payload | c2s-packet | 3 | After recv C2S First-Payload | Success |
| tcp-payload | s2c-packet | 3 | After recv S2C First-payload | Success |

View File

@@ -0,0 +1,62 @@
#include <gtest/gtest.h>
#include "packet_injector_test_frame.h"
TEST(INJECT_IPV4_BASED_TCP_PAYLOAD, AFTER_RECV_S2C_FIRST_PAYLOAD)
{
char current_dir[1024] = {0};
char work_dir[2048] = {0};
char input_dir[2048] = {0};
getcwd(current_dir, sizeof(current_dir));
snprintf(work_dir, sizeof(work_dir), "%s/%s", current_dir, "inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload");
snprintf(input_dir, sizeof(input_dir), "%s/%s", current_dir, "pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/");
struct packet_injector_case test = {
// descriptor
.finish_clean_work_dir = 0,
.descriptor = "Inject IPv4 based TCP Payload after receiving S2C first payload packet.",
.work_dir = work_dir,
// prefix
.input_prefix = input_dir,
// input pcap
.input_pcap = "input.pcap",
// compare
.compares = {
{
.expect_pcap = "expect-192.0.2.110:80-192.0.2.213:48322-1.pcap",
.inject_pcap = "inject-192.0.2.110:80-192.0.2.213:48322-1.pcap",
},
{
.expect_pcap = "expect-192.0.2.110:80-192.0.2.213:48322-2.pcap",
.inject_pcap = "inject-192.0.2.110:80-192.0.2.213:48322-2.pcap",
},
{
.expect_pcap = "expect-192.0.2.110:80-192.0.2.213:48322-3.pcap",
.inject_pcap = "inject-192.0.2.110:80-192.0.2.213:48322-3.pcap",
},
{
.expect_pcap = "expect-192.0.2.213:48322-192.0.2.110:80-4.pcap",
.inject_pcap = "inject-192.0.2.213:48322-192.0.2.110:80-4.pcap",
},
{
.expect_pcap = NULL,
.inject_pcap = NULL,
},
},
// packet injector command
.packet_injector_cmd = {"./packet_injector", "-t", "tcp-payload", "-c", "s2c-packet", "-n", "3"},
.diff_skip_pattern = "-I frame.time -I frame.time_epoch -I ip.id -I ip.ttl -I ip.checksum -I tcp.checksum -I tcp.window_size",
};
packet_injector_test_frame_run(&test);
}
int main(int argc, char **argv)
{
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}