diff mbox series

[mptcp-next,v5,01/10] Squash to "selftests/bpf: Add bpf scheduler test" 1 nonblock

Message ID f0b66813ae8274e5653988d80d16171508f05796.1712042049.git.tanggeliang@kylinos.cn (mailing list archive)
State Superseded, archived
Headers show
Series refactor mptcp bpf tests | expand

Checks

Context Check Description
matttbe/build success Build and static analysis OK
matttbe/checkpatch success total: 0 errors, 0 warnings, 0 checks, 30 lines checked
matttbe/shellcheck success MPTCP selftests files have not been modified
matttbe/KVM_Validation__normal success Success! ✅
matttbe/KVM_Validation__debug warning Unstable: 1 failed test(s): selftest_mptcp_join
matttbe/KVM_Validation__btf__only_bpftest_all_ success Success! ✅

Commit Message

Geliang Tang April 2, 2024, 7:15 a.m. UTC
From: Geliang Tang <tanggeliang@kylinos.cn>

BPF tests fail sometimes with "bytes != total_bytes" errors:

 # test_default:PASS:sched_init:default 0 nsec
 # send_data:PASS:pthread_create 0 nsec
 # send_data:FAIL:recv 936000 != 10485760 nr_recv:-1 errno:11
 # default: 3041 ms
 # server:FAIL:send 7579500 != 10485760 nr_sent:-1 errno:11
 # send_data:FAIL:pthread_join thread_ret:-11 \
		test_default:PASS:has_bytes_sent addr_1 0 nsec
 # test_default:PASS:has_bytes_sent addr_2 0 nsec
 # close_netns:PASS:setns 0 nsec

Here errno 11 is EAGAIN. This patch sets server socket to nonblock
to fix this. It makes BPF tests stable.

Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
 tools/testing/selftests/bpf/prog_tests/mptcp.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

Comments

Geliang Tang April 3, 2024, 7:45 a.m. UTC | #1
On Tue, 2024-04-02 at 15:15 +0800, Geliang Tang wrote:
> From: Geliang Tang <tanggeliang@kylinos.cn>
> 
> BPF tests fail sometimes with "bytes != total_bytes" errors:
> 
>  # test_default:PASS:sched_init:default 0 nsec
>  # send_data:PASS:pthread_create 0 nsec
>  # send_data:FAIL:recv 936000 != 10485760 nr_recv:-1 errno:11
>  # default: 3041 ms
>  # server:FAIL:send 7579500 != 10485760 nr_sent:-1 errno:11
>  # send_data:FAIL:pthread_join thread_ret:-11 \
> 		test_default:PASS:has_bytes_sent addr_1 0 nsec
>  # test_default:PASS:has_bytes_sent addr_2 0 nsec
>  # close_netns:PASS:setns 0 nsec
> 
> Here errno 11 is EAGAIN. This patch sets server socket to nonblock
> to fix this. It makes BPF tests stable.
> 
> Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
> ---
>  tools/testing/selftests/bpf/prog_tests/mptcp.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c
> b/tools/testing/selftests/bpf/prog_tests/mptcp.c
> index 6e28215d7404..d3d51aee440d 100644
> --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c
> +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c
> @@ -88,6 +88,16 @@ static void cleanup_netns(struct nstoken *nstoken)
>  	SYS_NOFAIL("ip netns del %s", NS_TEST);
>  }
>  
> +static int set_nonblock(int fd)
> +{
> +	int flags = fcntl(fd, F_GETFL);
> +
> +	if (flags == -1)
> +		return -1;
> +
> +	return fcntl(fd, flags | O_NONBLOCK);

This fix is incorrect. fcntl shouldn't be used like this. I'll think
about how to modify it again. BTW, Other patches in this series are
still valid. But needs to be rebased.

Thanks,
-Geliang

> +}
> +
>  static int verify_tsk(int map_fd, int client_fd)
>  {
>  	int err, cfd = client_fd;
> @@ -466,6 +476,7 @@ static void test_default(void)
>  	server_fd = start_mptcp_server(AF_INET, ADDR_1, PORT_1, 0);
>  	client_fd = connect_to_fd(server_fd, 0);
>  
> +	set_nonblock(server_fd);
>  	send_data(server_fd, client_fd, "default");
>  	ASSERT_OK(has_bytes_sent(ADDR_1), "has_bytes_sent addr_1");
>  	ASSERT_OK(has_bytes_sent(ADDR_2), "has_bytes_sent addr_2");
> @@ -639,6 +650,7 @@ static void test_burst(void)
>  	server_fd = start_mptcp_server(AF_INET, ADDR_1, PORT_1, 0);
>  	client_fd = connect_to_fd(server_fd, 0);
>  
> +	set_nonblock(server_fd);
>  	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");
diff mbox series

Patch

diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing/selftests/bpf/prog_tests/mptcp.c
index 6e28215d7404..d3d51aee440d 100644
--- a/tools/testing/selftests/bpf/prog_tests/mptcp.c
+++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c
@@ -88,6 +88,16 @@  static void cleanup_netns(struct nstoken *nstoken)
 	SYS_NOFAIL("ip netns del %s", NS_TEST);
 }
 
+static int set_nonblock(int fd)
+{
+	int flags = fcntl(fd, F_GETFL);
+
+	if (flags == -1)
+		return -1;
+
+	return fcntl(fd, flags | O_NONBLOCK);
+}
+
 static int verify_tsk(int map_fd, int client_fd)
 {
 	int err, cfd = client_fd;
@@ -466,6 +476,7 @@  static void test_default(void)
 	server_fd = start_mptcp_server(AF_INET, ADDR_1, PORT_1, 0);
 	client_fd = connect_to_fd(server_fd, 0);
 
+	set_nonblock(server_fd);
 	send_data(server_fd, client_fd, "default");
 	ASSERT_OK(has_bytes_sent(ADDR_1), "has_bytes_sent addr_1");
 	ASSERT_OK(has_bytes_sent(ADDR_2), "has_bytes_sent addr_2");
@@ -639,6 +650,7 @@  static void test_burst(void)
 	server_fd = start_mptcp_server(AF_INET, ADDR_1, PORT_1, 0);
 	client_fd = connect_to_fd(server_fd, 0);
 
+	set_nonblock(server_fd);
 	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");