Message ID | 30fbc6cffaf0617640cd1dbb0afd8b056dcab684.1722502941.git.tanggeliang@kylinos.cn (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Matthieu Baerts |
Headers | show |
Series | add io thread mode tests | expand |
Context | Check | Description |
---|---|---|
matttbe/build | success | Build and static analysis OK |
matttbe/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 31 lines checked |
matttbe/shellcheck | fail | ShellCheck issues: mptcp_join.sh |
matttbe/KVM_Validation__normal | success | Success! ✅ |
matttbe/KVM_Validation__debug | warning | Unstable: 2 failed test(s): mptcp_connect_mmap selftest_mptcp_join |
matttbe/KVM_Validation__btf__only_bpftest_all_ | success | Success! ✅ |
Hi Geliang, On 01/08/2024 11:21, Geliang Tang wrote: > From: Geliang Tang <tanggeliang@kylinos.cn> > > This io thread mode is used in BPF selftests bpf_tcp_ca and MPTCP, and > it is not very stable for MPTCP sched tests. This patch adds them into > mptcp_join tests (-T) to make sure this scene is also covered. Do you need to have multiple subflows to reproduce the issue? Can we not have this test in mptcp_connect.sh instead? For example, would it help to modify the CI to run: ./mptcp_connect.sh -m thread > > These tests only run in ns1 for 100 times. The failed output looks like: > > 001 io thread tests > recv 2884500 expected 10485760 > send 8005500 expected 10485760 > Failed in thread_ret -11 > Test no. 12 failed. > syn [FAIL] got 12 JOIN[s] syn expected 100 > synack [ OK ] > ack [FAIL] got 12 JOIN[s] ack expected 100 > > Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn> > --- > .../testing/selftests/net/mptcp/mptcp_join.sh | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh > index 01c1e0871aca..ecba07aac776 100755 > --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh > +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh > @@ -3663,6 +3663,24 @@ endpoint_tests() > fi > } > > +io_thread_tests() > +{ > + if reset "io thread tests"; then > + local nr=0 max=100 > + mptcp_lib_pm_nl_set_limits $ns1 8 8 > + mptcp_lib_pm_nl_add_endpoint $ns1 10.0.2.1 flags subflow > + while [ $nr -lt $max ]; do > + nr=$((nr + 1)) > + ip netns exec $ns1 ./mptcp_connect -l 10.0.1.1 -m "thread" -O 3000 When you read this, it doesn't look obvious it is going to send and receive data with itself. Can we not have a client and server? If not, at least an explicit option, not making '-m "thread"' doing that. > + if [ $? -ne 0 ]; then Shellcheck will not like that I guess: if ! ip netns exec (...); then > + echo "Test no. $nr failed." > + break; > + fi > + done > + chk_join_nr $max 0 $max > + fi > +} > + > # [$1: error message] > usage() > { > @@ -3711,6 +3729,7 @@ all_tests_sorted=( > F@fail_tests > u@userspace_tests > I@endpoint_tests > + T@io_thread_tests > ) > > all_tests_args="" Cheers, Matt
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh index 01c1e0871aca..ecba07aac776 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -3663,6 +3663,24 @@ endpoint_tests() fi } +io_thread_tests() +{ + if reset "io thread tests"; then + local nr=0 max=100 + mptcp_lib_pm_nl_set_limits $ns1 8 8 + mptcp_lib_pm_nl_add_endpoint $ns1 10.0.2.1 flags subflow + while [ $nr -lt $max ]; do + nr=$((nr + 1)) + ip netns exec $ns1 ./mptcp_connect -l 10.0.1.1 -m "thread" -O 3000 + if [ $? -ne 0 ]; then + echo "Test no. $nr failed." + break; + fi + done + chk_join_nr $max 0 $max + fi +} + # [$1: error message] usage() { @@ -3711,6 +3729,7 @@ all_tests_sorted=( F@fail_tests u@userspace_tests I@endpoint_tests + T@io_thread_tests ) all_tests_args=""