diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 11bbc2b..ab62983 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -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) diff --git a/test/README.md b/test/README.md index c12fbb9..2e2080d 100644 --- a/test/README.md +++ b/test/README.md @@ -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 | \ No newline at end of file +| tcp-payload | c2s-packet | 3 | After recv C2S First-Payload | Success | +| tcp-payload | s2c-packet | 3 | After recv S2C First-payload | Success | \ No newline at end of file diff --git a/test/gtest_inject_tcp_payload_after_recv_s2c_first_payload.cpp b/test/gtest_inject_tcp_payload_after_recv_s2c_first_payload.cpp new file mode 100644 index 0000000..b35a9c0 --- /dev/null +++ b/test/gtest_inject_tcp_payload_after_recv_s2c_first_payload.cpp @@ -0,0 +1,62 @@ +#include + +#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(); +} diff --git a/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/raw/fw.pcap b/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/raw/fw.pcap new file mode 100644 index 0000000..940faa5 Binary files /dev/null and b/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/raw/fw.pcap differ diff --git a/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/raw/virtio_dign_c.pcap b/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/raw/virtio_dign_c.pcap new file mode 100644 index 0000000..6a73152 Binary files /dev/null and b/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/raw/virtio_dign_c.pcap differ diff --git a/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/raw/virtio_dign_s.pcap b/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/raw/virtio_dign_s.pcap new file mode 100644 index 0000000..d734db0 Binary files /dev/null and b/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/raw/virtio_dign_s.pcap differ diff --git a/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/expect-192.0.2.110:80-192.0.2.213:48322-1.pcap b/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/expect-192.0.2.110:80-192.0.2.213:48322-1.pcap new file mode 100644 index 0000000..21c89e3 Binary files /dev/null and b/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/expect-192.0.2.110:80-192.0.2.213:48322-1.pcap differ diff --git a/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/expect-192.0.2.110:80-192.0.2.213:48322-2.pcap b/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/expect-192.0.2.110:80-192.0.2.213:48322-2.pcap new file mode 100644 index 0000000..545646d Binary files /dev/null and b/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/expect-192.0.2.110:80-192.0.2.213:48322-2.pcap differ diff --git a/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/expect-192.0.2.110:80-192.0.2.213:48322-3.pcap b/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/expect-192.0.2.110:80-192.0.2.213:48322-3.pcap new file mode 100644 index 0000000..98a214d Binary files /dev/null and b/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/expect-192.0.2.110:80-192.0.2.213:48322-3.pcap differ diff --git a/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/expect-192.0.2.213:48322-192.0.2.110:80-4.pcap b/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/expect-192.0.2.213:48322-192.0.2.110:80-4.pcap new file mode 100644 index 0000000..5771475 Binary files /dev/null and b/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/expect-192.0.2.213:48322-192.0.2.110:80-4.pcap differ diff --git a/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/input.pcap b/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/input.pcap new file mode 100644 index 0000000..b112e15 Binary files /dev/null and b/test/pcap/inject_ipv4_based_tcp_payload_after_recv_s2c_first_payload/test/input.pcap differ