selftests: mptcp: make evts global in mptcp_join
authorGeliang Tang <geliang.tang@suse.com>
Wed, 30 Nov 2022 14:06:32 +0000 (15:06 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 2 Dec 2022 04:06:07 +0000 (20:06 -0800)
This patch moves evts_ns1 and evts_ns2 out of do_transfer() as two global
variables in mptcp_join.sh. Init them in init() and remove them in
cleanup().

Add a new helper reset_with_events() to save the outputs of 'pm_nl_ctl
events' command in them. And a new helper kill_events_pids() to kill
pids of 'pm_nl_ctl events' command. Use these helpers in userspace pm
tests.

Suggested-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
Acked-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/net/mptcp/mptcp_join.sh

index f10ef65..32a3694 100755 (executable)
@@ -26,6 +26,10 @@ ip_mptcp=0
 check_invert=0
 validate_checksum=0
 init=0
+evts_ns1=""
+evts_ns2=""
+evts_ns1_pid=0
+evts_ns2_pid=0
 
 declare -A all_tests
 declare -a only_tests_ids
@@ -154,6 +158,8 @@ init() {
        cin=$(mktemp)
        cinsent=$(mktemp)
        cout=$(mktemp)
+       evts_ns1=$(mktemp)
+       evts_ns2=$(mktemp)
 
        trap cleanup EXIT
 
@@ -165,6 +171,7 @@ cleanup()
 {
        rm -f "$cin" "$cout" "$sinfail"
        rm -f "$sin" "$sout" "$cinsent" "$cinfail"
+       rm -rf $evts_ns1 $evts_ns2
        cleanup_partial
 }
 
@@ -320,6 +327,18 @@ reset_with_fail()
                index 100 || exit 1
 }
 
+reset_with_events()
+{
+       reset "${1}" || return 1
+
+       :> "$evts_ns1"
+       :> "$evts_ns2"
+       ip netns exec $ns1 ./pm_nl_ctl events >> "$evts_ns1" 2>&1 &
+       evts_ns1_pid=$!
+       ip netns exec $ns2 ./pm_nl_ctl events >> "$evts_ns2" 2>&1 &
+       evts_ns2_pid=$!
+}
+
 fail_test()
 {
        ret=1
@@ -473,6 +492,12 @@ kill_wait()
        wait $1 2>/dev/null
 }
 
+kill_events_pids()
+{
+       kill_wait $evts_ns1_pid
+       kill_wait $evts_ns2_pid
+}
+
 pm_nl_set_limits()
 {
        local ns=$1
@@ -673,10 +698,6 @@ do_transfer()
        local port=$((10000 + TEST_COUNT - 1))
        local cappid
        local userspace_pm=0
-       local evts_ns1
-       local evts_ns1_pid
-       local evts_ns2
-       local evts_ns2_pid
 
        :> "$cout"
        :> "$sout"
@@ -753,17 +774,6 @@ do_transfer()
                addr_nr_ns2=${addr_nr_ns2:9}
        fi
 
-       if [ $userspace_pm -eq 1 ]; then
-               evts_ns1=$(mktemp)
-               evts_ns2=$(mktemp)
-               :> "$evts_ns1"
-               :> "$evts_ns2"
-               ip netns exec ${listener_ns} ./pm_nl_ctl events >> "$evts_ns1" 2>&1 &
-               evts_ns1_pid=$!
-               ip netns exec ${connector_ns} ./pm_nl_ctl events >> "$evts_ns2" 2>&1 &
-               evts_ns2_pid=$!
-       fi
-
        local local_addr
        if is_v6 "${connect_addr}"; then
                local_addr="::"
@@ -982,12 +992,6 @@ do_transfer()
            kill $cappid
        fi
 
-       if [ $userspace_pm -eq 1 ]; then
-               kill_wait $evts_ns1_pid
-               kill_wait $evts_ns2_pid
-               rm -rf $evts_ns1 $evts_ns2
-       fi
-
        NSTAT_HISTORY=/tmp/${listener_ns}.nstat ip netns exec ${listener_ns} \
                nstat | grep Tcp > /tmp/${listener_ns}.out
        NSTAT_HISTORY=/tmp/${connector_ns}.nstat ip netns exec ${connector_ns} \
@@ -2961,22 +2965,24 @@ userspace_tests()
        fi
 
        # userspace pm add & remove address
-       if reset "userspace pm add & remove address"; then
+       if reset_with_events "userspace pm add & remove address"; then
                set_userspace_pm $ns1
                pm_nl_set_limits $ns2 1 1
                run_tests $ns1 $ns2 10.0.1.1 0 userspace_1 0 slow
                chk_join_nr 1 1 1
                chk_add_nr 1 1
                chk_rm_nr 1 1 invert
+               kill_events_pids
        fi
 
        # userspace pm create destroy subflow
-       if reset "userspace pm create destroy subflow"; then
+       if reset_with_events "userspace pm create destroy subflow"; then
                set_userspace_pm $ns2
                pm_nl_set_limits $ns1 0 1
                run_tests $ns1 $ns2 10.0.1.1 0 0 userspace_1 slow
                chk_join_nr 1 1 1
                chk_rm_nr 0 1
+               kill_events_pids
        fi
 }