This validates the previous commit: subflow closed events should contain
an error field when a subflow got closed with an error, e.g. reset or
timeout.

For this test, the chk_evt_nr helper has been extended to check
attributes in the matched events.

In this test, the 2 subflow closed events should have an error.

The 'Fixes' tag here below is the same as the one from the previous
commit: this patch here is not fixing anything wrong in the selftests,
but it validates the previous fix for an issue introduced by this commit
ID.

Fixes: 15cc10453398 ("mptcp: deliver ssk errors to msk")
Cc: [email protected]
Reviewed-by: Geliang Tang <[email protected]>
Signed-off-by: Matthieu Baerts (NGI0) <[email protected]>
---
 tools/testing/selftests/net/mptcp/mptcp_join.sh | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh 
b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 1765714a1e2f..3fc29201362a 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -3847,21 +3847,28 @@ userspace_pm_chk_get_addr()
        fi
 }
 
-# $1: ns ; $2: event type ; $3: count
+# $1: ns ; $2: event type ; $3: count ; [ $4: attr ; $5: attr count ]
 chk_evt_nr()
 {
        local ns=${1}
        local evt_name="${2}"
        local exp="${3}"
+       local attr="${4}"
+       local attr_exp="${5}"
 
        local evts="${evts_ns1}"
        local evt="${!evt_name}"
+       local attr_name
        local count
 
+       if [ -n "${attr}" ]; then
+               attr_name=", ${attr}: ${attr_exp}"
+       fi
+
        evt_name="${evt_name:16}" # without MPTCP_LIB_EVENT_
        [ "${ns}" == "ns2" ] && evts="${evts_ns2}"
 
-       print_check "event ${ns} ${evt_name} (${exp})"
+       print_check "event ${ns} ${evt_name} (${exp}${attr_name})"
 
        if [[ "${evt_name}" = "LISTENER_"* ]] &&
           ! mptcp_lib_kallsyms_has "mptcp_event_pm_listener$"; then
@@ -3873,6 +3880,16 @@ chk_evt_nr()
        if [ "${count}" != "${exp}" ]; then
                fail_test "got ${count} events, expected ${exp}"
                cat "${evts}"
+               return
+       elif [ -z "${attr}" ]; then
+               print_ok
+               return
+       fi
+
+       count=$(grep -w "type:${evt}" "${evts}" | grep -c ",${attr}:")
+       if [ "${count}" != "${attr_exp}" ]; then
+               fail_test "got ${count} event attributes, expected ${attr_exp}"
+               grep -w "type:${evt}" "${evts}"
        else
                print_ok
        fi
@@ -4131,7 +4148,7 @@ userspace_tests()
                        chk_subflows_total 1 1
                        userspace_pm_add_sf $ns2 10.0.1.2 0
                        wait_event ns2 MPTCP_LIB_EVENT_SUB_CLOSED 2
-                       chk_evt_nr ns2 MPTCP_LIB_EVENT_SUB_CLOSED 2
+                       chk_evt_nr ns2 MPTCP_LIB_EVENT_SUB_CLOSED 2 error 2
                fi
                kill_events_pids
                mptcp_lib_kill_group_wait $tests_pid

-- 
2.51.0


Reply via email to