selftests: mptcp: userspace: avoid read errors
authorMatthieu Baerts <matthieu.baerts@tessares.net>
Wed, 25 Jan 2023 10:47:28 +0000 (11:47 +0100)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 26 Jan 2023 12:33:30 +0000 (13:33 +0100)
During the cleanup phase, the server pids were killed with a SIGTERM
directly, not using a SIGUSR1 first to quit safely. As a result, this
test was often ending with two error messages:

  read: Connection reset by peer

While at it, use a for-loop to terminate all the PIDs the same way.

Also the different files are now removed after having killed the PIDs
using them. It makes more sense to do that in this order.

Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
tools/testing/selftests/net/mptcp/userspace_pm.sh

index 259382ad552c3019c279d4aeeaedb751eb2af9e2..66c5be25c13d03892d878b4f58154f657daa54c9 100755 (executable)
@@ -50,6 +50,9 @@ print_title()
 
 kill_wait()
 {
 
 kill_wait()
 {
+       [ $1 -eq 0 ] && return 0
+
+       kill -SIGUSR1 $1 > /dev/null 2>&1
        kill $1 > /dev/null 2>&1
        wait $1 2>/dev/null
 }
        kill $1 > /dev/null 2>&1
        wait $1 2>/dev/null
 }
@@ -58,32 +61,21 @@ cleanup()
 {
        print_title "Cleanup"
 
 {
        print_title "Cleanup"
 
-       rm -rf $file $client_evts $server_evts
-
        # Terminate the MPTCP connection and related processes
        # Terminate the MPTCP connection and related processes
-       if [ $client4_pid -ne 0 ]; then
-               kill -SIGUSR1 $client4_pid > /dev/null 2>&1
-       fi
-       if [ $server4_pid -ne 0 ]; then
-               kill_wait $server4_pid
-       fi
-       if [ $client6_pid -ne 0 ]; then
-               kill -SIGUSR1 $client6_pid > /dev/null 2>&1
-       fi
-       if [ $server6_pid -ne 0 ]; then
-               kill_wait $server6_pid
-       fi
-       if [ $server_evts_pid -ne 0 ]; then
-               kill_wait $server_evts_pid
-       fi
-       if [ $client_evts_pid -ne 0 ]; then
-               kill_wait $client_evts_pid
-       fi
+       local pid
+       for pid in $client4_pid $server4_pid $client6_pid $server6_pid\
+                  $server_evts_pid $client_evts_pid
+       do
+               kill_wait $pid
+       done
+
        local netns
        for netns in "$ns1" "$ns2" ;do
                ip netns del "$netns"
        done
 
        local netns
        for netns in "$ns1" "$ns2" ;do
                ip netns del "$netns"
        done
 
+       rm -rf $file $client_evts $server_evts
+
        stdbuf -o0 -e0 printf "Done\n"
 }
 
        stdbuf -o0 -e0 printf "Done\n"
 }