This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
stellar-stellar/test/gtest_inject_tcp_rst.cpp
2024-05-20 11:26:06 +08:00

157 lines
5.6 KiB
C++

#include <gtest/gtest.h>
#include "packet_injector_test_frame.h"
static char current_dir[1024] = {0};
#if 1
TEST(INJECT_IPV4_BASED_TCP_RST, AFTER_RECV_SYN_ACK)
{
char work_dir[2048] = {0};
char input_dir[2048] = {0};
snprintf(work_dir, sizeof(work_dir), "%s/%s", current_dir, "inject_ipv4_based_tcp_rst_after_recv_syn_ack");
snprintf(input_dir, sizeof(input_dir), "%s/%s", current_dir, "pcap/inject_ipv4_based_tcp_rst_after_recv_syn_ack/test/");
struct packet_injector_case test = {
// descriptor
.finish_clean_work_dir = 0,
.descriptor = "Inject IPv4 based TCP RST after receiving SYN-ACK packet.",
.work_dir = work_dir,
// prefix
.input_prefix = input_dir,
// input pcap
.input_pcap = "input.pcap",
// compare
.c2s_expect_pcap = "expect-192.0.2.211:59942-192.0.2.110:80-1.pcap",
.c2s_output_pcap = "inject-192.0.2.211:59942-192.0.2.110:80-1.pcap",
.s2c_expect_pcap = "expect-192.0.2.110:80-192.0.2.211:59942-2.pcap",
.s2c_output_pcap = "inject-192.0.2.110:80-192.0.2.211:59942-2.pcap",
// packet injector command
.packet_injector_cmd = {"./packet_injector", "-t", "tcp-rst", "-c", "s2c-packet", "-n", "1"},
.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);
}
#endif
#if 1
TEST(INJECT_IPV4_BASED_TCP_RST, AFTER_RECV_SUB_ACK)
{
char work_dir[2048] = {0};
char input_dir[2048] = {0};
snprintf(work_dir, sizeof(work_dir), "%s/%s", current_dir, "inject_ipv4_based_tcp_rst_after_recv_sub_ack");
snprintf(input_dir, sizeof(input_dir), "%s/%s", current_dir, "pcap/inject_ipv4_based_tcp_rst_after_recv_sub_ack/test/");
struct packet_injector_case test = {
// descriptor
.finish_clean_work_dir = 0,
.descriptor = "Inject IPv4 based TCP RST after receiving SUB-ACK packet.",
.work_dir = work_dir,
// prefix
.input_prefix = input_dir,
// input pcap
.input_pcap = "input.pcap",
// compare
.c2s_expect_pcap = "expect-192.0.2.211:42242-192.0.2.110:80-1.pcap",
.c2s_output_pcap = "inject-192.0.2.211:42242-192.0.2.110:80-1.pcap",
.s2c_expect_pcap = "expect-192.0.2.110:80-192.0.2.211:42242-2.pcap",
.s2c_output_pcap = "inject-192.0.2.110:80-192.0.2.211:42242-2.pcap",
// packet injector command
.packet_injector_cmd = {"./packet_injector", "-t", "tcp-rst", "-c", "c2s-packet", "-n", "2"},
.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);
}
#endif
#if 1
TEST(INJECT_IPV4_BASED_TCP_RST, AFTER_RECV_C2S_FIRST_PAYLOAD)
{
char work_dir[2048] = {0};
char input_dir[2048] = {0};
snprintf(work_dir, sizeof(work_dir), "%s/%s", current_dir, "inject_ipv4_based_tcp_rst_after_recv_c2s_first_payload");
snprintf(input_dir, sizeof(input_dir), "%s/%s", current_dir, "pcap/inject_ipv4_based_tcp_rst_after_recv_c2s_first_payload/test/");
struct packet_injector_case test = {
// descriptor
.finish_clean_work_dir = 0,
.descriptor = "Inject IPv4 based TCP RST after receiving C2S first payload packet.",
.work_dir = work_dir,
// prefix
.input_prefix = input_dir,
// input pcap
.input_pcap = "input.pcap",
// compare
.c2s_expect_pcap = "expect-192.0.2.211:35116-192.0.2.110:80-1.pcap",
.c2s_output_pcap = "inject-192.0.2.211:35116-192.0.2.110:80-1.pcap",
.s2c_expect_pcap = "expect-192.0.2.110:80-192.0.2.211:35116-2.pcap",
.s2c_output_pcap = "inject-192.0.2.110:80-192.0.2.211:35116-2.pcap",
// packet injector command
.packet_injector_cmd = {"./packet_injector", "-t", "tcp-rst", "-c", "c2s-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);
}
#endif
#if 1
TEST(INJECT_IPV4_BASED_TCP_RST, AFTER_RECV_S2C_FIRST_PAYLOAD)
{
char work_dir[2048] = {0};
char input_dir[2048] = {0};
snprintf(work_dir, sizeof(work_dir), "%s/%s", current_dir, "inject_ipv4_based_tcp_rst_after_recv_s2c_first_payload");
snprintf(input_dir, sizeof(input_dir), "%s/%s", current_dir, "pcap/inject_ipv4_based_tcp_rst_after_recv_s2c_first_payload/test/");
struct packet_injector_case test = {
// descriptor
.finish_clean_work_dir = 0,
.descriptor = "Inject IPv4 based TCP RST after receiving S2C first payload packet.",
.work_dir = work_dir,
// prefix
.input_prefix = input_dir,
// input pcap
.input_pcap = "input.pcap",
// compare
.c2s_expect_pcap = "expect-192.0.2.211:54408-192.0.2.110:80-1.pcap",
.c2s_output_pcap = "inject-192.0.2.211:54408-192.0.2.110:80-1.pcap",
.s2c_expect_pcap = "expect-192.0.2.110:80-192.0.2.211:54408-2.pcap",
.s2c_output_pcap = "inject-192.0.2.110:80-192.0.2.211:54408-2.pcap",
// packet injector command
.packet_injector_cmd = {"./packet_injector", "-t", "tcp-rst", "-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);
}
#endif
int main(int argc, char **argv)
{
getcwd(current_dir, sizeof(current_dir));
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}