This patch adds the burst BPF MPTCP scheduler test: test_burst(). Use
sysctl to set net.mptcp.scheduler to use this sched. Add two veth net
devices to simulate the multiple addresses case. Use 'ip mptcp endpoint'
command to add the new endpoint ADDR_2 to PM netlink. Send data and check
bytes_sent of 'ss' output after it to make sure the data has been sent
on both net devices.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/bpf/prog_tests/mptcp.c | 38 +++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing/selftests/bpf/prog_tests/mptcp.c
index 851ea32dc1d0..43c0645ddc2a 100644
--- a/tools/testing/selftests/bpf/prog_tests/mptcp.c
+++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c
@@ -12,6 +12,7 @@
#include "mptcp_bpf_rr.skel.h"
#include "mptcp_bpf_red.skel.h"
#include "mptcp_bpf_stale.skel.h"
+#include "mptcp_bpf_burst.skel.h"
char NS_TEST[32];
@@ -524,6 +525,41 @@ static void test_stale(void)
mptcp_bpf_stale__destroy(stale_skel);
}
+static void test_burst(void)
+{
+ struct mptcp_bpf_burst *burst_skel;
+ int server_fd, client_fd;
+ struct nstoken *nstoken;
+ struct bpf_link *link;
+
+ burst_skel = mptcp_bpf_burst__open_and_load();
+ if (!ASSERT_OK_PTR(burst_skel, "bpf_burst__open_and_load"))
+ return;
+
+ link = bpf_map__attach_struct_ops(burst_skel->maps.burst);
+ if (!ASSERT_OK_PTR(link, "bpf_map__attach_struct_ops")) {
+ mptcp_bpf_burst__destroy(burst_skel);
+ return;
+ }
+
+ nstoken = sched_init("subflow", "bpf_burst");
+ if (!ASSERT_OK_PTR(nstoken, "sched_init:bpf_burst"))
+ goto fail;
+ server_fd = start_mptcp_server(AF_INET, ADDR_1, 0, 0);
+ client_fd = connect_to_fd(server_fd, 0);
+
+ send_data(server_fd, client_fd, "bpf_burst");
+ ASSERT_OK(has_bytes_sent(ADDR_1), "has_bytes_sent addr 1");
+ ASSERT_OK(has_bytes_sent(ADDR_2), "has_bytes_sent addr 2");
+
+ close(client_fd);
+ close(server_fd);
+fail:
+ cleanup_netns(nstoken);
+ bpf_link__destroy(link);
+ mptcp_bpf_burst__destroy(burst_skel);
+}
+
void test_mptcp(void)
{
if (test__start_subtest("base"))
@@ -540,4 +576,6 @@ void test_mptcp(void)
test_red();
if (test__start_subtest("stale"))
test_stale();
+ if (test__start_subtest("burst"))
+ test_burst();
}
--
2.35.3