From 9e0aad99a3ea3474e94af6bcfdd6153ac3c2c4ff Mon Sep 17 00:00:00 2001 From: fearful-symmetry Date: Mon, 23 Sep 2024 11:21:28 -0700 Subject: [PATCH] clean up test bins, improve dns tests --- testing/test_bins/common.h | 17 +++++++++++++++++ .../create_rename_delete_file_container.c | 2 +- testing/test_bins/tcpv4_connect.c | 16 ---------------- testing/test_bins/tcpv6_connect.c | 16 ---------------- testing/test_bins/udp_send.c | 4 ++++ testing/testrunner/ebpf_test.go | 14 +++++++++++++- 6 files changed, 35 insertions(+), 34 deletions(-) diff --git a/testing/test_bins/common.h b/testing/test_bins/common.h index c8569441..55c60569 100644 --- a/testing/test_bins/common.h +++ b/testing/test_bins/common.h @@ -45,3 +45,20 @@ void gen_pid_info_json(char *buf, size_t size) (pid_t)syscall(SYS_gettid), getppid(), getpid(), getsid(0), getpgid(0), cap_permitted, cap_effective); } + +int dump_info(int client_port, int server_port) +{ + char pid_info[8192]; + gen_pid_info_json(pid_info, sizeof(pid_info)); + + char netns[128]; + ssize_t nbytes; + CHECK(nbytes = readlink("/proc/self/ns/net", netns, sizeof(netns)), -1); + netns[nbytes] = '\0'; + + uint64_t netns_inode; + sscanf(netns, "net:[%lu]", &netns_inode); + + printf("{ \"pid_info\": %s, \"client_port\": %d, \"server_port\": %d, \"netns\": %lu }\n", + pid_info, client_port, server_port, netns_inode); +} \ No newline at end of file diff --git a/testing/test_bins/create_rename_delete_file_container.c b/testing/test_bins/create_rename_delete_file_container.c index f67ecd49..2663980b 100644 --- a/testing/test_bins/create_rename_delete_file_container.c +++ b/testing/test_bins/create_rename_delete_file_container.c @@ -135,7 +135,7 @@ int main() cleanup: // Clean up directories created by child - CHECK(umount2(ovl_mountpoint, MNT_DETACH), -1); + CHECK(umount2(ovl_mountpoint, MNT_FORCE), -1); CHECK(rm_recursive(ovl_mountpoint), -1); CHECK(rm_recursive(ovl_upperdir), -1); CHECK(rm_recursive(ovl_lowerdir), -1); diff --git a/testing/test_bins/tcpv4_connect.c b/testing/test_bins/tcpv4_connect.c index 8e41d596..ca701492 100644 --- a/testing/test_bins/tcpv4_connect.c +++ b/testing/test_bins/tcpv4_connect.c @@ -25,22 +25,6 @@ #define BOUND_PORT 2048 -int dump_info(int client_port, int server_port) -{ - char pid_info[8192]; - gen_pid_info_json(pid_info, sizeof(pid_info)); - - char netns[128]; - ssize_t nbytes; - CHECK(nbytes = readlink("/proc/self/ns/net", netns, sizeof(netns)), -1); - netns[nbytes] = '\0'; - - uint64_t netns_inode; - sscanf(netns, "net:[%lu]", &netns_inode); - - printf("{ \"pid_info\": %s, \"client_port\": %d, \"server_port\": %d, \"netns\": %lu }\n", - pid_info, client_port, server_port, netns_inode); -} int main() { diff --git a/testing/test_bins/tcpv6_connect.c b/testing/test_bins/tcpv6_connect.c index d2ffb5c1..7401380e 100644 --- a/testing/test_bins/tcpv6_connect.c +++ b/testing/test_bins/tcpv6_connect.c @@ -25,22 +25,6 @@ #define BOUND_PORT 2048 -int dump_info(int client_port, int server_port) -{ - char pid_info[8192]; - gen_pid_info_json(pid_info, sizeof(pid_info)); - - char netns[128]; - ssize_t nbytes; - CHECK(nbytes = readlink("/proc/self/ns/net", netns, sizeof(netns)), -1); - netns[nbytes] = '\0'; - - uint64_t netns_inode; - sscanf(netns, "net:[%lu]", &netns_inode); - - printf("{ \"pid_info\": %s, \"client_port\": %d, \"server_port\": %d, \"netns\": %lu }\n", - pid_info, client_port, server_port, netns_inode); -} int main() { diff --git a/testing/test_bins/udp_send.c b/testing/test_bins/udp_send.c index 04a99d20..30e56d14 100644 --- a/testing/test_bins/udp_send.c +++ b/testing/test_bins/udp_send.c @@ -13,6 +13,8 @@ #include #include +#include "common.h" + int main(int argc, char *argv[]) { struct sockaddr_in sin; @@ -38,5 +40,7 @@ int main(int argc, char *argv[]) else if (n != sizeof(buf)) errx(1, "sendto: shortcount"); + dump_info(53, 0); + return (0); } \ No newline at end of file diff --git a/testing/testrunner/ebpf_test.go b/testing/testrunner/ebpf_test.go index d1854d65..f6cd54cd 100644 --- a/testing/testrunner/ebpf_test.go +++ b/testing/testrunner/ebpf_test.go @@ -592,15 +592,27 @@ func Tcpv6ConnectionClose(t *testing.T, et *Runner) { } func DNSMonitor(t *testing.T, et *Runner) { + var binOutput struct { + PidInfo TestPidInfo `json:"pid_info"` + ClientPort int64 `json:"client_port"` + ServerPort int64 `json:"server_port"` + NetNs int64 `json:"netns"` + } + runTestUnmarshalOutput(t, "udp_send", &binOutput) type dnsOutput struct { Data []uint8 `json:"data"` - NetConnAcceptEvent + Pids PidInfo `json:"pids"` + Net NetInfo `json:"net"` + Comm string `json:"comm"` } runTestBin(t, "udp_send") lineData := dnsOutput{} et.UnmarshalNextEvent(&lineData, "DNS_EVENT") + require.Equal(t, lineData.Net.DestAddr, "127.0.0.1") + require.Equal(t, lineData.Net.SourceAddr, "127.0.0.1") + TestPidEqual(t, binOutput.PidInfo, lineData.Pids) require.Equal(t, lineData.Net.Transport, "UDP") require.Equal(t, lineData.Net.Family, "AF_INET")