diff --git a/test/README.md b/test/README.md index d0ce9ff..736eb10 100644 --- a/test/README.md +++ b/test/README.md @@ -38,4 +38,5 @@ curl -v http://http.badssl.selftest.gdnt-cloud.website --resolve "http.badssl.se | tcp-rst | c2s-packet | 1 | After recv SYN | Failed | | tcp-rst | s2c-packet | 1 | After recv SYN-ACK | Success | | tcp-rst | c2s-packet | 2 | After recv Sub-ACK | Success | -| tcp-rst | c2s-packet | 3 | Atter recv C2S First-Payload | Success | \ No newline at end of file +| tcp-rst | c2s-packet | 3 | After recv C2S First-Payload | Success | +| tcp-rst | s2c-packet | 3 | After recv S2C First-payload | Success | \ No newline at end of file diff --git a/test/gtest_inject_tcp_rst.cpp b/test/gtest_inject_tcp_rst.cpp index 05edaac..267645c 100644 --- a/test/gtest_inject_tcp_rst.cpp +++ b/test/gtest_inject_tcp_rst.cpp @@ -98,6 +98,38 @@ TEST(INJECT_IPV4_BASED_TCP_RST, AFTER_RECV_C2S_FIRST_PAYLOAD) } #endif +#if 1 +TEST(INJECT_IPV4_BASED_TCP_RST, AFTER_RECV_S2C_FIRST_PAYLOAD) +{ + struct packet_injector_case test = { + // descriptor + .finish_clean_work_dir = 1, + .descriptor = "Inject IPv4 based TCP RST after receiving S2C first payload packet.", + .work_dir = "/tmp/inject_ipv4_based_tcp_rst_after_recv_s2c_first_payload/", // user defined work directory + + // prefix + .input_prefix = "pcap/inject_ipv4_based_tcp_rst_after_recv_s2c_first_payload/test/", + .output_prefix = "/tmp/", + + // 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) { ::testing::InitGoogleTest(&argc, argv); diff --git a/test/packet_injector_test_frame.cpp b/test/packet_injector_test_frame.cpp index a131ac5..09b1c32 100644 --- a/test/packet_injector_test_frame.cpp +++ b/test/packet_injector_test_frame.cpp @@ -83,10 +83,6 @@ static void expect_cmp_inject(const char *work_dir, const char *output_dir_abs_path, const char *output_pcap_file, const char *diff_skip_pattern, const char *flow_dir) { - printf("\033[32m ============================================= \033[0m\n"); - printf("\033[32m Compare [%s] expect pcap and output pcap \033[0m\n", flow_dir); - printf("\033[32m ============================================= \033[0m\n"); - struct stat s; char expect_pcap_file_abs_path[1024] = {0}; char output_pcap_file_abs_path[1024] = {0}; @@ -136,7 +132,9 @@ static void expect_cmp_inject(const char *work_dir, void packet_injector_test_frame_run(struct packet_injector_case *test) { + printf("\033[32m ============================================= \033[0m\n"); printf("\033[32mTest: %s\033[0m\n", test->descriptor); + printf("\033[32m ============================================= \033[0m\n"); char config_file_abs_path[1024] = {0}; char input_dir_abs_path[1024] = {0}; diff --git a/test/pcap/inject_ipv4_based_tcp_rst_after_recv_s2c_first_payload/raw/fw.pcap b/test/pcap/inject_ipv4_based_tcp_rst_after_recv_s2c_first_payload/raw/fw.pcap new file mode 100644 index 0000000..d7cf360 Binary files /dev/null and b/test/pcap/inject_ipv4_based_tcp_rst_after_recv_s2c_first_payload/raw/fw.pcap differ diff --git a/test/pcap/inject_ipv4_based_tcp_rst_after_recv_s2c_first_payload/raw/virtio_dign_c.pcap b/test/pcap/inject_ipv4_based_tcp_rst_after_recv_s2c_first_payload/raw/virtio_dign_c.pcap new file mode 100644 index 0000000..d777ebe Binary files /dev/null and b/test/pcap/inject_ipv4_based_tcp_rst_after_recv_s2c_first_payload/raw/virtio_dign_c.pcap differ diff --git a/test/pcap/inject_ipv4_based_tcp_rst_after_recv_s2c_first_payload/raw/virtio_dign_s.pcap b/test/pcap/inject_ipv4_based_tcp_rst_after_recv_s2c_first_payload/raw/virtio_dign_s.pcap new file mode 100644 index 0000000..2419859 Binary files /dev/null and b/test/pcap/inject_ipv4_based_tcp_rst_after_recv_s2c_first_payload/raw/virtio_dign_s.pcap differ diff --git a/test/pcap/inject_ipv4_based_tcp_rst_after_recv_s2c_first_payload/test/expect-192.0.2.110:80-192.0.2.211:54408-2.pcap b/test/pcap/inject_ipv4_based_tcp_rst_after_recv_s2c_first_payload/test/expect-192.0.2.110:80-192.0.2.211:54408-2.pcap new file mode 100644 index 0000000..019e54b Binary files /dev/null and b/test/pcap/inject_ipv4_based_tcp_rst_after_recv_s2c_first_payload/test/expect-192.0.2.110:80-192.0.2.211:54408-2.pcap differ diff --git a/test/pcap/inject_ipv4_based_tcp_rst_after_recv_s2c_first_payload/test/expect-192.0.2.211:54408-192.0.2.110:80-1.pcap b/test/pcap/inject_ipv4_based_tcp_rst_after_recv_s2c_first_payload/test/expect-192.0.2.211:54408-192.0.2.110:80-1.pcap new file mode 100644 index 0000000..d5765f7 Binary files /dev/null and b/test/pcap/inject_ipv4_based_tcp_rst_after_recv_s2c_first_payload/test/expect-192.0.2.211:54408-192.0.2.110:80-1.pcap differ diff --git a/test/pcap/inject_ipv4_based_tcp_rst_after_recv_s2c_first_payload/test/input.pcap b/test/pcap/inject_ipv4_based_tcp_rst_after_recv_s2c_first_payload/test/input.pcap new file mode 100644 index 0000000..e8a2683 Binary files /dev/null and b/test/pcap/inject_ipv4_based_tcp_rst_after_recv_s2c_first_payload/test/input.pcap differ