* [PATCH mptcp-next v3 00/12] add helpers and vars in mptcp_lib.sh, final
@ 2024-03-17 0:57 Geliang Tang
2024-03-17 0:58 ` [PATCH mptcp-net v3 01/12] selftests: mptcp: join: fix dev in check_endpoint Geliang Tang
` (13 more replies)
0 siblings, 14 replies; 22+ messages in thread
From: Geliang Tang @ 2024-03-17 0:57 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
From: Geliang Tang <tanggeliang@kylinos.cn>
v3:
- use check_output in pm_nl_check_endpoint.
- split #2 and #7 patches in v2.
- put "selftests: mptcp: join: fix dev in check_endpoint" into this
series too.
v2:
- address every Matt's commends in v1.
- depends on "selftests: mptcp: join: fix dev in check_endpoint"
This is the last part for "add helpers and vars in mptcp_lib.sh" series,
add endpoint operation helpers into mptcp_lib.sh.
Geliang Tang (12):
selftests: mptcp: join: fix dev in check_endpoint
selftests: mptcp: export ip_mptcp to mptcp_lib
selftests: mptcp: format limits outputs
selftests: mptcp: add get_limits helper
selftests: mptcp: export set_limits helper
selftests: mptcp: format endpoints outputs
selftests: mptcp: add get_endpoint helper
selftests: mptcp: add change_address helper
selftests: mptcp: join: update endpoint ops
selftests: mptcp: export more endpoint ops
selftests: mptcp: ip_mptcp option for more scripts
selftests: mptcp: netlink: drop disable=SC2086
.../testing/selftests/net/mptcp/mptcp_join.sh | 149 ++---------
.../testing/selftests/net/mptcp/mptcp_lib.sh | 163 ++++++++++++
.../selftests/net/mptcp/mptcp_sockopt.sh | 34 ++-
.../testing/selftests/net/mptcp/pm_netlink.sh | 240 ++++++++++--------
.../selftests/net/mptcp/simult_flows.sh | 14 +-
5 files changed, 349 insertions(+), 251 deletions(-)
--
2.40.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH mptcp-net v3 01/12] selftests: mptcp: join: fix dev in check_endpoint
2024-03-17 0:57 [PATCH mptcp-next v3 00/12] add helpers and vars in mptcp_lib.sh, final Geliang Tang
@ 2024-03-17 0:58 ` Geliang Tang
2024-03-18 11:03 ` Matthieu Baerts
2024-03-17 0:58 ` [PATCH mptcp-next v3 02/12] selftests: mptcp: export ip_mptcp to mptcp_lib Geliang Tang
` (12 subsequent siblings)
13 siblings, 1 reply; 22+ messages in thread
From: Geliang Tang @ 2024-03-17 0:58 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
From: Geliang Tang <tanggeliang@kylinos.cn>
There's a bug in pm_nl_check_endpoint(), 'dev' didn't be parsed correctly.
If calling it in the 2nd test of endpoint_tests() too, it fails with an
error like this:
creation [FAIL] expected '10.0.2.2 id 2 subflow dev dev' \
found '10.0.2.2 id 2 subflow dev ns2eth2'
The reason is '$2' should be set to 'dev', not '$1'. This patch fixes it.
Fixes: 69c6ce7b6eca ("selftests: mptcp: add implicit endpoint test case")
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
tools/testing/selftests/net/mptcp/mptcp_join.sh | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 70621cbbab09..73a2131e6da2 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -729,7 +729,7 @@ pm_nl_check_endpoint()
[ -n "$_flags" ]; flags="flags $_flags"
shift
elif [ $1 = "dev" ]; then
- [ -n "$2" ]; dev="dev $1"
+ [ -n "$2" ]; dev="dev $2"
shift
elif [ $1 = "id" ]; then
_id=$2
@@ -3610,6 +3610,8 @@ endpoint_tests()
local tests_pid=$!
wait_mpj $ns2
+ pm_nl_check_endpoint "creation" \
+ $ns2 10.0.2.2 id 2 flags subflow dev ns2eth2
chk_subflow_nr "before delete" 2
chk_mptcp_info subflows 1 subflows 1
--
2.40.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH mptcp-next v3 02/12] selftests: mptcp: export ip_mptcp to mptcp_lib
2024-03-17 0:57 [PATCH mptcp-next v3 00/12] add helpers and vars in mptcp_lib.sh, final Geliang Tang
2024-03-17 0:58 ` [PATCH mptcp-net v3 01/12] selftests: mptcp: join: fix dev in check_endpoint Geliang Tang
@ 2024-03-17 0:58 ` Geliang Tang
2024-03-17 0:58 ` [PATCH mptcp-next v3 03/12] selftests: mptcp: format limits outputs Geliang Tang
` (11 subsequent siblings)
13 siblings, 0 replies; 22+ messages in thread
From: Geliang Tang @ 2024-03-17 0:58 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
From: Geliang Tang <tanggeliang@kylinos.cn>
This patch exports ip_mptcp into mptcp_lib.sh as a public variable,
named MPTCP_LIB_IP_MPTCP. Add a helper mptcp_lib_set_ip_mptcp() to set
it, and a helper mptcp_lib_is_ip_mptcp() to test whether it is set. Use
these two helpers in mptcp_join.sh.
This patch is prepared for coming commits.
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
tools/testing/selftests/net/mptcp/mptcp_join.sh | 17 ++++++++---------
tools/testing/selftests/net/mptcp/mptcp_lib.sh | 9 +++++++++
2 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 73a2131e6da2..62fcfeaa3430 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -31,7 +31,6 @@ timeout_poll=30
timeout_test=$((timeout_poll * 2 + 1))
capture=false
checksum=false
-ip_mptcp=0
check_invert=0
validate_checksum=false
init=0
@@ -610,7 +609,7 @@ pm_nl_set_limits()
local addrs=$2
local subflows=$3
- if [ $ip_mptcp -eq 1 ]; then
+ if mptcp_lib_is_ip_mptcp; then
ip -n $ns mptcp limits set add_addr_accepted $addrs subflows $subflows
else
ip netns exec $ns ./pm_nl_ctl limits $addrs $subflows
@@ -650,7 +649,7 @@ pm_nl_add_endpoint()
nr=$((nr + 1))
done
- if [ $ip_mptcp -eq 1 ]; then
+ if mptcp_lib_is_ip_mptcp; then
ip -n $ns mptcp endpoint add $addr ${_flags//","/" "} $dev $id $port
else
ip netns exec $ns ./pm_nl_ctl add $addr $flags $dev $id $port
@@ -663,7 +662,7 @@ pm_nl_del_endpoint()
local id=$2
local addr=$3
- if [ $ip_mptcp -eq 1 ]; then
+ if mptcp_lib_is_ip_mptcp; then
[ $id -ne 0 ] && addr=''
ip -n $ns mptcp endpoint delete id $id $addr
else
@@ -675,7 +674,7 @@ pm_nl_flush_endpoint()
{
local ns=$1
- if [ $ip_mptcp -eq 1 ]; then
+ if mptcp_lib_is_ip_mptcp; then
ip -n $ns mptcp endpoint flush
else
ip netns exec $ns ./pm_nl_ctl flush
@@ -686,7 +685,7 @@ pm_nl_show_endpoints()
{
local ns=$1
- if [ $ip_mptcp -eq 1 ]; then
+ if mptcp_lib_is_ip_mptcp; then
ip -n $ns mptcp endpoint show
else
ip netns exec $ns ./pm_nl_ctl dump
@@ -699,7 +698,7 @@ pm_nl_change_endpoint()
local id=$2
local flags=$3
- if [ $ip_mptcp -eq 1 ]; then
+ if mptcp_lib_is_ip_mptcp; then
ip -n $ns mptcp endpoint change id $id ${flags//","/" "}
else
ip netns exec $ns ./pm_nl_ctl set id $id flags $flags
@@ -749,7 +748,7 @@ pm_nl_check_endpoint()
return
fi
- if [ $ip_mptcp -eq 1 ]; then
+ if mptcp_lib_is_ip_mptcp; then
# get line and trim trailing whitespace
line=$(ip -n $ns mptcp endpoint show $id)
line="${line% }"
@@ -3702,7 +3701,7 @@ while getopts "${all_tests_args}cCih" opt; do
checksum=true
;;
i)
- ip_mptcp=1
+ mptcp_lib_set_ip_mptcp
;;
h)
usage
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index 1fa05405f65e..ca01d949fad8 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -23,6 +23,7 @@ MPTCP_LIB_SUBTESTS=()
MPTCP_LIB_SUBTESTS_DUPLICATED=0
MPTCP_LIB_TEST_COUNTER=0
MPTCP_LIB_TEST_FORMAT="%02u %-50s"
+MPTCP_LIB_IP_MPTCP=0
# only if supported (or forced) and not disabled, see no-color.org
if { [ -t 1 ] || [ "${SELFTESTS_MPTCP_LIB_COLOR_FORCE:-}" = "1" ]; } &&
@@ -511,3 +512,11 @@ mptcp_lib_verify_listener_events() {
mptcp_lib_check_expected "type" "family" "saddr" "sport" || rc="${?}"
return "${rc}"
}
+
+mptcp_lib_set_ip_mptcp() {
+ MPTCP_LIB_IP_MPTCP=1
+}
+
+mptcp_lib_is_ip_mptcp() {
+ [ "${MPTCP_LIB_IP_MPTCP}" = "1" ]
+}
--
2.40.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH mptcp-next v3 03/12] selftests: mptcp: format limits outputs
2024-03-17 0:57 [PATCH mptcp-next v3 00/12] add helpers and vars in mptcp_lib.sh, final Geliang Tang
2024-03-17 0:58 ` [PATCH mptcp-net v3 01/12] selftests: mptcp: join: fix dev in check_endpoint Geliang Tang
2024-03-17 0:58 ` [PATCH mptcp-next v3 02/12] selftests: mptcp: export ip_mptcp to mptcp_lib Geliang Tang
@ 2024-03-17 0:58 ` Geliang Tang
2024-03-18 12:21 ` Matthieu Baerts
2024-03-17 0:58 ` [PATCH mptcp-next v3 04/12] selftests: mptcp: add get_limits helper Geliang Tang
` (10 subsequent siblings)
13 siblings, 1 reply; 22+ messages in thread
From: Geliang Tang @ 2024-03-17 0:58 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
From: Geliang Tang <tanggeliang@kylinos.cn>
The output format of 'ip mptcp limits' command is much different from
that of 'pm_nl_ctl limits' command. This patch adds format_limits()
helper to format the outputs of these two commands to hide the
difference.
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
tools/testing/selftests/net/mptcp/mptcp_lib.sh | 12 ++++++++++++
tools/testing/selftests/net/mptcp/pm_netlink.sh | 8 ++++----
2 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index ca01d949fad8..c402cc994902 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -520,3 +520,15 @@ mptcp_lib_set_ip_mptcp() {
mptcp_lib_is_ip_mptcp() {
[ "${MPTCP_LIB_IP_MPTCP}" = "1" ]
}
+
+mptcp_lib_format_limits() {
+ local accept="${1}"
+ local subflows="${2}"
+
+ if mptcp_lib_is_ip_mptcp; then
+ # with a space at the end
+ printf "add_addr_accepted %d subflows %d \n" "${accept}" "${subflows}"
+ else
+ printf "accept %d\nsubflows %d\n" "${accept}" "${subflows}"
+ fi
+}
diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testing/selftests/net/mptcp/pm_netlink.sh
index 6ab8c5d36340..02c92edca8bb 100755
--- a/tools/testing/selftests/net/mptcp/pm_netlink.sh
+++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh
@@ -71,8 +71,8 @@ check "ip netns exec $ns1 ./pm_nl_ctl dump" "" "defaults addr list"
default_limits="$(ip netns exec $ns1 ./pm_nl_ctl limits)"
if mptcp_lib_expect_all_features; then
- check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 0
-subflows 2" "defaults limits"
+ check "ip netns exec $ns1 ./pm_nl_ctl limits" \
+ "$(mptcp_lib_format_limits 0 2)" "defaults limits"
fi
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1
@@ -126,8 +126,8 @@ ip netns exec $ns1 ./pm_nl_ctl limits 1 9 2>/dev/null
check "ip netns exec $ns1 ./pm_nl_ctl limits" "$default_limits" "subflows above hard limit"
ip netns exec $ns1 ./pm_nl_ctl limits 8 8
-check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 8
-subflows 8" "set limits"
+check "ip netns exec $ns1 ./pm_nl_ctl limits" \
+ "$(mptcp_lib_format_limits 8 8)" "set limits"
ip netns exec $ns1 ./pm_nl_ctl flush
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1
--
2.40.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH mptcp-next v3 04/12] selftests: mptcp: add get_limits helper
2024-03-17 0:57 [PATCH mptcp-next v3 00/12] add helpers and vars in mptcp_lib.sh, final Geliang Tang
` (2 preceding siblings ...)
2024-03-17 0:58 ` [PATCH mptcp-next v3 03/12] selftests: mptcp: format limits outputs Geliang Tang
@ 2024-03-17 0:58 ` Geliang Tang
2024-03-18 12:22 ` Matthieu Baerts
2024-03-17 0:58 ` [PATCH mptcp-next v3 05/12] selftests: mptcp: export set_limits helper Geliang Tang
` (9 subsequent siblings)
13 siblings, 1 reply; 22+ messages in thread
From: Geliang Tang @ 2024-03-17 0:58 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
From: Geliang Tang <tanggeliang@kylinos.cn>
Just like set_limits() helper, this patch adds another one get_limits() to
show the limits.
Usage:
Set limits - set_limits $ns $addrs $subflows
Get limits - get_limits $ns
Use this new helper in pm_netlink.sh to replace all 'pm_nl_ctl limits'
commands.
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
tools/testing/selftests/net/mptcp/mptcp_lib.sh | 10 ++++++++++
tools/testing/selftests/net/mptcp/pm_netlink.sh | 10 +++++-----
2 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index c402cc994902..813d6406ccc3 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -532,3 +532,13 @@ mptcp_lib_format_limits() {
printf "accept %d\nsubflows %d\n" "${accept}" "${subflows}"
fi
}
+
+mptcp_lib_pm_nl_get_limits() {
+ local ns=${1}
+
+ if mptcp_lib_is_ip_mptcp; then
+ ip -n "${ns}" mptcp limits
+ else
+ ip netns exec "${ns}" ./pm_nl_ctl limits
+ fi
+}
diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testing/selftests/net/mptcp/pm_netlink.sh
index 02c92edca8bb..87ea4973235d 100755
--- a/tools/testing/selftests/net/mptcp/pm_netlink.sh
+++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh
@@ -69,9 +69,9 @@ check()
check "ip netns exec $ns1 ./pm_nl_ctl dump" "" "defaults addr list"
-default_limits="$(ip netns exec $ns1 ./pm_nl_ctl limits)"
+default_limits="$(mptcp_lib_pm_nl_get_limits "${ns1}")"
if mptcp_lib_expect_all_features; then
- check "ip netns exec $ns1 ./pm_nl_ctl limits" \
+ check "mptcp_lib_pm_nl_get_limits ${ns1}" \
"$(mptcp_lib_format_limits 0 2)" "defaults limits"
fi
@@ -120,13 +120,13 @@ ip netns exec $ns1 ./pm_nl_ctl flush
check "ip netns exec $ns1 ./pm_nl_ctl dump" "" "flush addrs"
ip netns exec $ns1 ./pm_nl_ctl limits 9 1 2>/dev/null
-check "ip netns exec $ns1 ./pm_nl_ctl limits" "$default_limits" "rcv addrs above hard limit"
+check "mptcp_lib_pm_nl_get_limits ${ns1}" "${default_limits}" "rcv addrs above hard limit"
ip netns exec $ns1 ./pm_nl_ctl limits 1 9 2>/dev/null
-check "ip netns exec $ns1 ./pm_nl_ctl limits" "$default_limits" "subflows above hard limit"
+check "mptcp_lib_pm_nl_get_limits ${ns1}" "${default_limits}" "subflows above hard limit"
ip netns exec $ns1 ./pm_nl_ctl limits 8 8
-check "ip netns exec $ns1 ./pm_nl_ctl limits" \
+check "mptcp_lib_pm_nl_get_limits ${ns1}" \
"$(mptcp_lib_format_limits 8 8)" "set limits"
ip netns exec $ns1 ./pm_nl_ctl flush
--
2.40.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH mptcp-next v3 05/12] selftests: mptcp: export set_limits helper
2024-03-17 0:57 [PATCH mptcp-next v3 00/12] add helpers and vars in mptcp_lib.sh, final Geliang Tang
` (3 preceding siblings ...)
2024-03-17 0:58 ` [PATCH mptcp-next v3 04/12] selftests: mptcp: add get_limits helper Geliang Tang
@ 2024-03-17 0:58 ` Geliang Tang
2024-03-18 12:24 ` Matthieu Baerts
2024-03-17 0:58 ` [PATCH mptcp-next v3 06/12] selftests: mptcp: format endpoints outputs Geliang Tang
` (8 subsequent siblings)
13 siblings, 1 reply; 22+ messages in thread
From: Geliang Tang @ 2024-03-17 0:58 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
From: Geliang Tang <tanggeliang@kylinos.cn>
This patch exports pm_nl_set_limits() helper into mptcp_lib.sh as a
public function named mptcp_lib_pm_nl_set_limits(). Then pm_nl_set_limits()
in mptcp_join.sh can be a wrapper of the public one.
Use this newly added helper to replace all 'pm_nl_ctl limits' commands in
scripts mptcp_sockopt.sh, pm_netlink.sh and simult_flows.sh.
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
tools/testing/selftests/net/mptcp/mptcp_join.sh | 10 +---------
tools/testing/selftests/net/mptcp/mptcp_lib.sh | 12 ++++++++++++
tools/testing/selftests/net/mptcp/mptcp_sockopt.sh | 4 ++--
tools/testing/selftests/net/mptcp/pm_netlink.sh | 6 +++---
tools/testing/selftests/net/mptcp/simult_flows.sh | 4 ++--
5 files changed, 20 insertions(+), 16 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 62fcfeaa3430..0bdb631a9ddc 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -605,15 +605,7 @@ kill_events_pids()
pm_nl_set_limits()
{
- local ns=$1
- local addrs=$2
- local subflows=$3
-
- if mptcp_lib_is_ip_mptcp; then
- ip -n $ns mptcp limits set add_addr_accepted $addrs subflows $subflows
- else
- ip netns exec $ns ./pm_nl_ctl limits $addrs $subflows
- fi
+ mptcp_lib_pm_nl_set_limits "${@}"
}
pm_nl_add_endpoint()
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index 813d6406ccc3..d16b82f7e35a 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -542,3 +542,15 @@ mptcp_lib_pm_nl_get_limits() {
ip netns exec "${ns}" ./pm_nl_ctl limits
fi
}
+
+mptcp_lib_pm_nl_set_limits() {
+ local ns=${1}
+ local addrs=${2}
+ local subflows=${3}
+
+ if mptcp_lib_is_ip_mptcp; then
+ ip -n "${ns}" mptcp limits set add_addr_accepted "${addrs}" subflows "${subflows}"
+ else
+ ip netns exec "${ns}" ./pm_nl_ctl limits "${addrs}" "${subflows}"
+ fi
+}
diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
index e2d70c18786e..6f39a5d6d02e 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
@@ -65,8 +65,8 @@ init()
ip netns exec $ns2 ./pm_nl_ctl add dead:beef:$i::2 flags signal
done
- ip netns exec $ns1 ./pm_nl_ctl limits 8 8
- ip netns exec $ns2 ./pm_nl_ctl limits 8 8
+ mptcp_lib_pm_nl_set_limits "${ns1}" 8 8
+ mptcp_lib_pm_nl_set_limits "${ns2}" 8 8
add_mark_rules $ns1 1
add_mark_rules $ns2 2
diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testing/selftests/net/mptcp/pm_netlink.sh
index 87ea4973235d..d369096d0df8 100755
--- a/tools/testing/selftests/net/mptcp/pm_netlink.sh
+++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh
@@ -119,13 +119,13 @@ id 8 flags signal 10.0.1.8" "id limit"
ip netns exec $ns1 ./pm_nl_ctl flush
check "ip netns exec $ns1 ./pm_nl_ctl dump" "" "flush addrs"
-ip netns exec $ns1 ./pm_nl_ctl limits 9 1 2>/dev/null
+mptcp_lib_pm_nl_set_limits "${ns1}" 9 1 2>/dev/null
check "mptcp_lib_pm_nl_get_limits ${ns1}" "${default_limits}" "rcv addrs above hard limit"
-ip netns exec $ns1 ./pm_nl_ctl limits 1 9 2>/dev/null
+mptcp_lib_pm_nl_set_limits "${ns1}" 1 9 2>/dev/null
check "mptcp_lib_pm_nl_get_limits ${ns1}" "${default_limits}" "subflows above hard limit"
-ip netns exec $ns1 ./pm_nl_ctl limits 8 8
+mptcp_lib_pm_nl_set_limits "${ns1}" 8 8
check "mptcp_lib_pm_nl_get_limits ${ns1}" \
"$(mptcp_lib_format_limits 8 8)" "set limits"
diff --git a/tools/testing/selftests/net/mptcp/simult_flows.sh b/tools/testing/selftests/net/mptcp/simult_flows.sh
index e129fcb5a598..b8414cff9b4b 100755
--- a/tools/testing/selftests/net/mptcp/simult_flows.sh
+++ b/tools/testing/selftests/net/mptcp/simult_flows.sh
@@ -85,7 +85,7 @@ setup()
ip -net "$ns1" route add default via 10.0.2.2 metric 101
ip -net "$ns1" route add default via dead:beef:2::2 metric 101
- ip netns exec "$ns1" ./pm_nl_ctl limits 1 1
+ mptcp_lib_pm_nl_set_limits "${ns1}" 1 1
ip netns exec "$ns1" ./pm_nl_ctl add 10.0.2.1 dev ns1eth2 flags subflow
ip -net "$ns2" addr add 10.0.1.2/24 dev ns2eth1
@@ -108,7 +108,7 @@ setup()
ip -net "$ns3" route add default via 10.0.3.2
ip -net "$ns3" route add default via dead:beef:3::2
- ip netns exec "$ns3" ./pm_nl_ctl limits 1 1
+ mptcp_lib_pm_nl_set_limits "${ns3}" 1 1
# debug build can slow down measurably the test program
# we use quite tight time limit on the run-time, to ensure
--
2.40.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH mptcp-next v3 06/12] selftests: mptcp: format endpoints outputs
2024-03-17 0:57 [PATCH mptcp-next v3 00/12] add helpers and vars in mptcp_lib.sh, final Geliang Tang
` (4 preceding siblings ...)
2024-03-17 0:58 ` [PATCH mptcp-next v3 05/12] selftests: mptcp: export set_limits helper Geliang Tang
@ 2024-03-17 0:58 ` Geliang Tang
2024-03-18 12:26 ` Matthieu Baerts
2024-03-17 0:58 ` [PATCH mptcp-next v3 07/12] selftests: mptcp: add get_endpoint helper Geliang Tang
` (7 subsequent siblings)
13 siblings, 1 reply; 22+ messages in thread
From: Geliang Tang @ 2024-03-17 0:58 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
From: Geliang Tang <tanggeliang@kylinos.cn>
The output formats of 'ip mptcp' commands are much different from that
of 'pm_nl_ctl' commands. This patch adds a new helper format_endpoints()
to format the outputs of 'ip mptcp' and 'pm_nl_ctl' with 'endpoints'
arguments to hide these differences.
This is useful for exporting endpoint ops into mptcp_lib.sh
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 22 +----
.../testing/selftests/net/mptcp/mptcp_lib.sh | 23 +++++
.../testing/selftests/net/mptcp/pm_netlink.sh | 98 +++++++++++--------
3 files changed, 83 insertions(+), 60 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 0bdb631a9ddc..3d0051b57ecd 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -704,9 +704,7 @@ pm_nl_check_endpoint()
local ns=$2
local addr=$3
local _flags=""
- local flags
local _port
- local port
local dev
local _id
local id
@@ -717,10 +715,9 @@ pm_nl_check_endpoint()
while [ -n "$1" ]; do
if [ $1 = "flags" ]; then
_flags=$2
- [ -n "$_flags" ]; flags="flags $_flags"
shift
elif [ $1 = "dev" ]; then
- [ -n "$2" ]; dev="dev $2"
+ [ -n "$2" ]; dev="$2"
shift
elif [ $1 = "id" ]; then
_id=$2
@@ -728,7 +725,6 @@ pm_nl_check_endpoint()
shift
elif [ $1 = "port" ]; then
_port=$2
- [ -n "$_port" ]; port=" port $_port"
shift
fi
@@ -741,24 +737,12 @@ pm_nl_check_endpoint()
fi
if mptcp_lib_is_ip_mptcp; then
- # get line and trim trailing whitespace
line=$(ip -n $ns mptcp endpoint show $id)
- line="${line% }"
- # the dump order is: address id flags port dev
- [ -n "$addr" ] && expected_line="$addr"
- expected_line+=" $id"
- [ -n "$_flags" ] && expected_line+=" ${_flags//","/" "}"
- [ -n "$dev" ] && expected_line+=" $dev"
- [ -n "$port" ] && expected_line+=" $port"
else
line=$(ip netns exec $ns ./pm_nl_ctl get $_id)
- # the dump order is: id flags dev address port
- expected_line="$id"
- [ -n "$flags" ] && expected_line+=" $flags"
- [ -n "$dev" ] && expected_line+=" $dev"
- [ -n "$addr" ] && expected_line+=" $addr"
- [ -n "$_port" ] && expected_line+=" $_port"
fi
+ expected_line=$(mptcp_lib_format_endpoints \
+ "${_id},${addr},${_flags//","/" "},${dev},${_port}")
if [ "$line" = "$expected_line" ]; then
print_ok
else
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index d16b82f7e35a..92b89f3a7605 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -554,3 +554,26 @@ mptcp_lib_pm_nl_set_limits() {
ip netns exec "${ns}" ./pm_nl_ctl limits "${addrs}" "${subflows}"
fi
}
+
+# format: <id>,<ip>,<flags>,<dev>
+mptcp_lib_format_endpoints() {
+ local entry id ip flags dev port
+
+ for entry in "${@}"; do
+ IFS=, read -r id ip flags dev port <<< "${entry}"
+ if mptcp_lib_is_ip_mptcp; then
+ echo -n "${ip}"
+ [ -n "${port}" ] && echo -n " port ${port}"
+ echo -n " id ${id}"
+ [ -n "${flags}" ] && echo -n " ${flags}"
+ [ -n "${dev}" ] && echo -n " dev ${dev}"
+ echo " " # always a space at the end
+ else
+ echo -n "id ${id}"
+ echo -n " flags ${flags//" "/","}"
+ [ -n "${dev}" ] && echo -n " dev ${dev}"
+ echo -n " ${ip}"
+ [ -n "${port}" ] && echo " ${port}" || echo ""
+ fi
+ done
+}
diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testing/selftests/net/mptcp/pm_netlink.sh
index d369096d0df8..95e393c95017 100755
--- a/tools/testing/selftests/net/mptcp/pm_netlink.sh
+++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh
@@ -78,29 +78,34 @@ fi
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.2 flags subflow dev lo
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3 flags signal,backup
-check "ip netns exec $ns1 ./pm_nl_ctl get 1" "id 1 flags 10.0.1.1" "simple add/get addr"
+check "ip netns exec $ns1 ./pm_nl_ctl get 1" \
+ "$(mptcp_lib_format_endpoints "1,10.0.1.1")" "simple add/get addr"
check "ip netns exec $ns1 ./pm_nl_ctl dump" \
-"id 1 flags 10.0.1.1
-id 2 flags subflow dev lo 10.0.1.2
-id 3 flags signal,backup 10.0.1.3" "dump addrs"
+ "$(mptcp_lib_format_endpoints "1,10.0.1.1" \
+ "2,10.0.1.2,subflow,lo" \
+ "3,10.0.1.3,signal backup")" \
+ "dump addrs"
ip netns exec $ns1 ./pm_nl_ctl del 2
check "ip netns exec $ns1 ./pm_nl_ctl get 2" "" "simple del addr"
check "ip netns exec $ns1 ./pm_nl_ctl dump" \
-"id 1 flags 10.0.1.1
-id 3 flags signal,backup 10.0.1.3" "dump addrs after del"
+ "$(mptcp_lib_format_endpoints "1,10.0.1.1" \
+ "3,10.0.1.3,signal backup")" \
+ "dump addrs after del"
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3 2>/dev/null
check "ip netns exec $ns1 ./pm_nl_ctl get 4" "" "duplicate addr"
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.4 flags signal
-check "ip netns exec $ns1 ./pm_nl_ctl get 4" "id 4 flags signal 10.0.1.4" "id addr increment"
+check "ip netns exec $ns1 ./pm_nl_ctl get 4" \
+ "$(mptcp_lib_format_endpoints "4,10.0.1.4,signal")" "id addr increment"
for i in $(seq 5 9); do
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.$i flags signal >/dev/null 2>&1
done
-check "ip netns exec $ns1 ./pm_nl_ctl get 9" "id 9 flags signal 10.0.1.9" "hard addr limit"
+check "ip netns exec $ns1 ./pm_nl_ctl get 9" \
+ "$(mptcp_lib_format_endpoints "9,10.0.1.9,signal")" "hard addr limit"
check "ip netns exec $ns1 ./pm_nl_ctl get 10" "" "above hard addr limit"
ip netns exec $ns1 ./pm_nl_ctl del 9
@@ -108,13 +113,15 @@ for i in $(seq 10 255); do
ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.9 id $i
ip netns exec $ns1 ./pm_nl_ctl del $i
done
-check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags 10.0.1.1
-id 3 flags signal,backup 10.0.1.3
-id 4 flags signal 10.0.1.4
-id 5 flags signal 10.0.1.5
-id 6 flags signal 10.0.1.6
-id 7 flags signal 10.0.1.7
-id 8 flags signal 10.0.1.8" "id limit"
+check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+ "$(mptcp_lib_format_endpoints "1,10.0.1.1" \
+ "3,10.0.1.3,signal backup" \
+ "4,10.0.1.4,signal" \
+ "5,10.0.1.5,signal" \
+ "6,10.0.1.6,signal" \
+ "7,10.0.1.7,signal" \
+ "8,10.0.1.8,signal")" \
+ "id limit"
ip netns exec $ns1 ./pm_nl_ctl flush
check "ip netns exec $ns1 ./pm_nl_ctl dump" "" "flush addrs"
@@ -138,14 +145,16 @@ ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.5 id 254
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.6
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.7
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.8
-check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags 10.0.1.1
-id 2 flags 10.0.1.2
-id 3 flags 10.0.1.7
-id 4 flags 10.0.1.8
-id 100 flags 10.0.1.3
-id 101 flags 10.0.1.4
-id 254 flags 10.0.1.5
-id 255 flags 10.0.1.6" "set ids"
+check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+ "$(mptcp_lib_format_endpoints "1,10.0.1.1" \
+ "2,10.0.1.2" \
+ "3,10.0.1.7" \
+ "4,10.0.1.8" \
+ "100,10.0.1.3" \
+ "101,10.0.1.4" \
+ "254,10.0.1.5" \
+ "255,10.0.1.6")" \
+ "set ids"
ip netns exec $ns1 ./pm_nl_ctl flush
ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.1
@@ -156,36 +165,43 @@ ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.5 id 253
ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.6
ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.7
ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.8
-check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags 10.0.0.1
-id 2 flags 10.0.0.4
-id 3 flags 10.0.0.6
-id 4 flags 10.0.0.7
-id 5 flags 10.0.0.8
-id 253 flags 10.0.0.5
-id 254 flags 10.0.0.2
-id 255 flags 10.0.0.3" "wrap-around ids"
+check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+ "$(mptcp_lib_format_endpoints "1,10.0.0.1" \
+ "2,10.0.0.4" \
+ "3,10.0.0.6" \
+ "4,10.0.0.7" \
+ "5,10.0.0.8" \
+ "253,10.0.0.5" \
+ "254,10.0.0.2" \
+ "255,10.0.0.3")" \
+ "wrap-around ids"
ip netns exec $ns1 ./pm_nl_ctl flush
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1 flags subflow
ip netns exec $ns1 ./pm_nl_ctl set 10.0.1.1 flags backup
-check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags \
-subflow,backup 10.0.1.1" "set flags (backup)"
+check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+ "$(mptcp_lib_format_endpoints "1,10.0.1.1,subflow backup")" \
+ "set flags (backup)"
ip netns exec $ns1 ./pm_nl_ctl set 10.0.1.1 flags nobackup
-check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags \
-subflow 10.0.1.1" " (nobackup)"
+check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+ "$(mptcp_lib_format_endpoints "1,10.0.1.1,subflow")" \
+ " (nobackup)"
# fullmesh support has been added later
ip netns exec $ns1 ./pm_nl_ctl set id 1 flags fullmesh 2>/dev/null
if ip netns exec $ns1 ./pm_nl_ctl dump | grep -q "fullmesh" ||
mptcp_lib_expect_all_features; then
- check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags \
-subflow,fullmesh 10.0.1.1" " (fullmesh)"
+ check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+ "$(mptcp_lib_format_endpoints "1,10.0.1.1,subflow fullmesh")" \
+ " (fullmesh)"
ip netns exec $ns1 ./pm_nl_ctl set id 1 flags nofullmesh
- check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags \
-subflow 10.0.1.1" " (nofullmesh)"
+ check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+ "$(mptcp_lib_format_endpoints "1,10.0.1.1,subflow")" \
+ " (nofullmesh)"
ip netns exec $ns1 ./pm_nl_ctl set id 1 flags backup,fullmesh
- check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags \
-subflow,backup,fullmesh 10.0.1.1" " (backup,fullmesh)"
+ check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+ "$(mptcp_lib_format_endpoints "1,10.0.1.1,subflow backup fullmesh")" \
+ " (backup,fullmesh)"
else
for st in fullmesh nofullmesh backup,fullmesh; do
st=" (${st})"
--
2.40.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH mptcp-next v3 07/12] selftests: mptcp: add get_endpoint helper
2024-03-17 0:57 [PATCH mptcp-next v3 00/12] add helpers and vars in mptcp_lib.sh, final Geliang Tang
` (5 preceding siblings ...)
2024-03-17 0:58 ` [PATCH mptcp-next v3 06/12] selftests: mptcp: format endpoints outputs Geliang Tang
@ 2024-03-17 0:58 ` Geliang Tang
2024-03-18 12:27 ` Matthieu Baerts
2024-03-17 0:58 ` [PATCH mptcp-next v3 08/12] selftests: mptcp: add change_address helper Geliang Tang
` (6 subsequent siblings)
13 siblings, 1 reply; 22+ messages in thread
From: Geliang Tang @ 2024-03-17 0:58 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
From: Geliang Tang <tanggeliang@kylinos.cn>
All endpoints are showed in show_endpoints(). This patch adds another
helper named get_endpoint() to show a specofic endpoint identified by
the given address ID.
Usage:
All endpoints - show_endpoints $ns
One endpoint - get_endpoint $ns $id
Use this new helper in mptcp_join.sh and pm_netlink.sh to replace all
'pm_nl_ctl get' commands.
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
tools/testing/selftests/net/mptcp/mptcp_join.sh | 10 ++--------
tools/testing/selftests/net/mptcp/mptcp_lib.sh | 11 +++++++++++
tools/testing/selftests/net/mptcp/pm_netlink.sh | 12 ++++++------
3 files changed, 19 insertions(+), 14 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 3d0051b57ecd..c06c1bd4d621 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -707,7 +707,6 @@ pm_nl_check_endpoint()
local _port
local dev
local _id
- local id
print_check "${msg}"
@@ -721,7 +720,6 @@ pm_nl_check_endpoint()
shift
elif [ $1 = "id" ]; then
_id=$2
- [ -n "$_id" ]; id="id $_id"
shift
elif [ $1 = "port" ]; then
_port=$2
@@ -731,16 +729,12 @@ pm_nl_check_endpoint()
shift
done
- if [ -z "$id" ]; then
+ if [ -z "${_id}" ]; then
test_fail "bad test - missing endpoint id"
return
fi
- if mptcp_lib_is_ip_mptcp; then
- line=$(ip -n $ns mptcp endpoint show $id)
- else
- line=$(ip netns exec $ns ./pm_nl_ctl get $_id)
- fi
+ line=$(mptcp_lib_pm_nl_get_endpoint "${ns}" "${_id}")
expected_line=$(mptcp_lib_format_endpoints \
"${_id},${addr},${_flags//","/" "},${dev},${_port}")
if [ "$line" = "$expected_line" ]; then
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index 92b89f3a7605..d83a67922b17 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -577,3 +577,14 @@ mptcp_lib_format_endpoints() {
fi
done
}
+
+mptcp_lib_pm_nl_get_endpoint() {
+ local ns=${1}
+ local id=${2}
+
+ if mptcp_lib_is_ip_mptcp; then
+ ip -n "${ns}" mptcp endpoint show id "${id}"
+ else
+ ip netns exec "${ns}" ./pm_nl_ctl get "${id}"
+ fi
+}
diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testing/selftests/net/mptcp/pm_netlink.sh
index 95e393c95017..28c89b576d1f 100755
--- a/tools/testing/selftests/net/mptcp/pm_netlink.sh
+++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh
@@ -78,7 +78,7 @@ fi
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.2 flags subflow dev lo
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3 flags signal,backup
-check "ip netns exec $ns1 ./pm_nl_ctl get 1" \
+check "mptcp_lib_pm_nl_get_endpoint ${ns1} 1" \
"$(mptcp_lib_format_endpoints "1,10.0.1.1")" "simple add/get addr"
check "ip netns exec $ns1 ./pm_nl_ctl dump" \
@@ -88,25 +88,25 @@ check "ip netns exec $ns1 ./pm_nl_ctl dump" \
"dump addrs"
ip netns exec $ns1 ./pm_nl_ctl del 2
-check "ip netns exec $ns1 ./pm_nl_ctl get 2" "" "simple del addr"
+check "mptcp_lib_pm_nl_get_endpoint ${ns1} 2" "" "simple del addr"
check "ip netns exec $ns1 ./pm_nl_ctl dump" \
"$(mptcp_lib_format_endpoints "1,10.0.1.1" \
"3,10.0.1.3,signal backup")" \
"dump addrs after del"
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3 2>/dev/null
-check "ip netns exec $ns1 ./pm_nl_ctl get 4" "" "duplicate addr"
+check "mptcp_lib_pm_nl_get_endpoint ${ns1} 4" "" "duplicate addr"
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.4 flags signal
-check "ip netns exec $ns1 ./pm_nl_ctl get 4" \
+check "mptcp_lib_pm_nl_get_endpoint ${ns1} 4" \
"$(mptcp_lib_format_endpoints "4,10.0.1.4,signal")" "id addr increment"
for i in $(seq 5 9); do
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.$i flags signal >/dev/null 2>&1
done
-check "ip netns exec $ns1 ./pm_nl_ctl get 9" \
+check "mptcp_lib_pm_nl_get_endpoint ${ns1} 9" \
"$(mptcp_lib_format_endpoints "9,10.0.1.9,signal")" "hard addr limit"
-check "ip netns exec $ns1 ./pm_nl_ctl get 10" "" "above hard addr limit"
+check "mptcp_lib_pm_nl_get_endpoint ${ns1} 10" "" "above hard addr limit"
ip netns exec $ns1 ./pm_nl_ctl del 9
for i in $(seq 10 255); do
--
2.40.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH mptcp-next v3 08/12] selftests: mptcp: add change_address helper
2024-03-17 0:57 [PATCH mptcp-next v3 00/12] add helpers and vars in mptcp_lib.sh, final Geliang Tang
` (6 preceding siblings ...)
2024-03-17 0:58 ` [PATCH mptcp-next v3 07/12] selftests: mptcp: add get_endpoint helper Geliang Tang
@ 2024-03-17 0:58 ` Geliang Tang
2024-03-18 12:28 ` Matthieu Baerts
2024-03-17 0:58 ` [PATCH mptcp-next v3 09/12] selftests: mptcp: join: update endpoint ops Geliang Tang
` (5 subsequent siblings)
13 siblings, 1 reply; 22+ messages in thread
From: Geliang Tang @ 2024-03-17 0:58 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
From: Geliang Tang <tanggeliang@kylinos.cn>
The address that needs to change flags can only be identified by an address
ID in change_endpoint() helper. This patch adds another helper named
change_address(), its 2nd parameter is an IP address.
Usage:
Address ID - change_endpoint $ns id $id $flags
IP address - change_address $ns $addr $flags
Use this new helper in pm_netlink.sh to replace all 'pm_nl_ctl set'
commands.
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
tools/testing/selftests/net/mptcp/mptcp_lib.sh | 13 +++++++++++++
tools/testing/selftests/net/mptcp/pm_netlink.sh | 4 ++--
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index d83a67922b17..e26ef67e4ef1 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -588,3 +588,16 @@ mptcp_lib_pm_nl_get_endpoint() {
ip netns exec "${ns}" ./pm_nl_ctl get "${id}"
fi
}
+
+mptcp_lib_pm_nl_change_address() {
+ local ns=${1}
+ local addr=${2}
+ local flags=${3}
+
+ if mptcp_lib_is_ip_mptcp; then
+ # shellcheck disable=SC2086 # blanks in flags, no double quote
+ ip -n "${ns}" mptcp endpoint change "${addr}" ${flags//","/" "}
+ else
+ ip netns exec "${ns}" ./pm_nl_ctl set "${addr}" flags "${flags}"
+ fi
+}
diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testing/selftests/net/mptcp/pm_netlink.sh
index 28c89b576d1f..a42490885d88 100755
--- a/tools/testing/selftests/net/mptcp/pm_netlink.sh
+++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh
@@ -178,11 +178,11 @@ check "ip netns exec $ns1 ./pm_nl_ctl dump" \
ip netns exec $ns1 ./pm_nl_ctl flush
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1 flags subflow
-ip netns exec $ns1 ./pm_nl_ctl set 10.0.1.1 flags backup
+mptcp_lib_pm_nl_change_address "${ns1}" 10.0.1.1 backup
check "ip netns exec $ns1 ./pm_nl_ctl dump" \
"$(mptcp_lib_format_endpoints "1,10.0.1.1,subflow backup")" \
"set flags (backup)"
-ip netns exec $ns1 ./pm_nl_ctl set 10.0.1.1 flags nobackup
+mptcp_lib_pm_nl_change_address "${ns1}" 10.0.1.1 nobackup
check "ip netns exec $ns1 ./pm_nl_ctl dump" \
"$(mptcp_lib_format_endpoints "1,10.0.1.1,subflow")" \
" (nobackup)"
--
2.40.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH mptcp-next v3 09/12] selftests: mptcp: join: update endpoint ops
2024-03-17 0:57 [PATCH mptcp-next v3 00/12] add helpers and vars in mptcp_lib.sh, final Geliang Tang
` (7 preceding siblings ...)
2024-03-17 0:58 ` [PATCH mptcp-next v3 08/12] selftests: mptcp: add change_address helper Geliang Tang
@ 2024-03-17 0:58 ` Geliang Tang
2024-03-17 0:58 ` [PATCH mptcp-next v3 10/12] selftests: mptcp: export more " Geliang Tang
` (4 subsequent siblings)
13 siblings, 0 replies; 22+ messages in thread
From: Geliang Tang @ 2024-03-17 0:58 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
From: Geliang Tang <tanggeliang@kylinos.cn>
This patch uses 'case' statements to simplify pm_nl_add_endpoint() and
pm_nl_check_endpoint(). And simplify pm_nl_check_endpoint() with
check_output() helper. Also update pm_nl_del_endpoint() to avoid the
'double quote' shellcheck warning.
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 72 ++++++-------------
1 file changed, 23 insertions(+), 49 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index c06c1bd4d621..ea99e45c3a0a 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -612,39 +612,27 @@ pm_nl_add_endpoint()
{
local ns=$1
local addr=$2
- local flags _flags
- local port _port
- local dev _dev
- local id _id
+ local flags dev id port
local nr=2
local p
for p in "${@}"
do
- if [ $p = "flags" ]; then
- eval _flags=\$"$nr"
- [ -n "$_flags" ]; flags="flags $_flags"
- fi
- if [ $p = "dev" ]; then
- eval _dev=\$"$nr"
- [ -n "$_dev" ]; dev="dev $_dev"
- fi
- if [ $p = "id" ]; then
- eval _id=\$"$nr"
- [ -n "$_id" ]; id="id $_id"
- fi
- if [ $p = "port" ]; then
- eval _port=\$"$nr"
- [ -n "$_port" ]; port="port $_port"
- fi
+ case "${p}" in
+ "flags" | "dev" | "id" | "port")
+ eval "${p}"=\$"${nr}"
+ ;;
+ esac
nr=$((nr + 1))
done
if mptcp_lib_is_ip_mptcp; then
- ip -n $ns mptcp endpoint add $addr ${_flags//","/" "} $dev $id $port
+ ip -n "${ns}" mptcp endpoint add "${addr}" ${flags//","/" "} \
+ ${dev:+dev "${dev}"} ${id:+id "${id}"} ${port:+port "${port}"}
else
- ip netns exec $ns ./pm_nl_ctl add $addr $flags $dev $id $port
+ ip netns exec "${ns}" ./pm_nl_ctl add "${addr}" ${flags:+flags "${flags}"} \
+ ${dev:+dev "${dev}"} ${id:+id "${id}"} ${port:+port "${port}"}
fi
}
@@ -656,7 +644,7 @@ pm_nl_del_endpoint()
if mptcp_lib_is_ip_mptcp; then
[ $id -ne 0 ] && addr=''
- ip -n $ns mptcp endpoint delete id $id $addr
+ ip -n $ns mptcp endpoint delete id $id ${addr:+"${addr}"}
else
ip netns exec $ns ./pm_nl_ctl del $id $addr
fi
@@ -699,49 +687,35 @@ pm_nl_change_endpoint()
pm_nl_check_endpoint()
{
- local line expected_line
local msg="$1"
local ns=$2
local addr=$3
- local _flags=""
- local _port
- local dev
- local _id
+ local flags dev id port
print_check "${msg}"
shift 3
while [ -n "$1" ]; do
- if [ $1 = "flags" ]; then
- _flags=$2
- shift
- elif [ $1 = "dev" ]; then
- [ -n "$2" ]; dev="$2"
- shift
- elif [ $1 = "id" ]; then
- _id=$2
- shift
- elif [ $1 = "port" ]; then
- _port=$2
+ case "${1}" in
+ "flags" | "dev" | "id" | "port")
+ eval "${1}"="${2}"
shift
- fi
+ ;;
+ *)
+ ;;
+ esac
shift
done
- if [ -z "${_id}" ]; then
+ if [ -z "${id}" ]; then
test_fail "bad test - missing endpoint id"
return
fi
- line=$(mptcp_lib_pm_nl_get_endpoint "${ns}" "${_id}")
- expected_line=$(mptcp_lib_format_endpoints \
- "${_id},${addr},${_flags//","/" "},${dev},${_port}")
- if [ "$line" = "$expected_line" ]; then
- print_ok
- else
- fail_test "expected '$expected_line' found '$line'"
- fi
+ check_output "mptcp_lib_pm_nl_get_endpoint ${ns} ${id}" \
+ "$(mptcp_lib_format_endpoints \
+ "${id},${addr},${flags//","/" "},${dev},${port}")"
}
pm_nl_set_endpoint()
--
2.40.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH mptcp-next v3 10/12] selftests: mptcp: export more endpoint ops
2024-03-17 0:57 [PATCH mptcp-next v3 00/12] add helpers and vars in mptcp_lib.sh, final Geliang Tang
` (8 preceding siblings ...)
2024-03-17 0:58 ` [PATCH mptcp-next v3 09/12] selftests: mptcp: join: update endpoint ops Geliang Tang
@ 2024-03-17 0:58 ` Geliang Tang
2024-03-17 0:58 ` [PATCH mptcp-next v3 11/12] selftests: mptcp: ip_mptcp option for more scripts Geliang Tang
` (3 subsequent siblings)
13 siblings, 0 replies; 22+ messages in thread
From: Geliang Tang @ 2024-03-17 0:58 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
From: Geliang Tang <tanggeliang@kylinos.cn>
This patch exports five endpoint operation helpers with pm_nl_ prefix,
pm_nl_add_endpoint(), pm_nl_del_endpoint(), pm_nl_flush_endpoint(),
pm_nl_show_endpoints() and pm_nl_change_endpoint() into mptcp_lib.sh as
public functions, and renamed each of them with a mptcp_lib_ prefix.
Then these old pm_nl_ prefix helpers in mptcp_join.sh can be wrappers
of mptcp_lib_ prefix ones.
Use these newly added helpers to replace all 'pm_nl_ctl' commands with
'add', 'del', 'flush', 'show' and 'set' arguments in scripts
mptcp_sockopt.sh, pm_netlink.sh and simult_flows.sh.
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 62 +-----------
.../testing/selftests/net/mptcp/mptcp_lib.sh | 73 ++++++++++++++
.../selftests/net/mptcp/mptcp_sockopt.sh | 8 +-
.../testing/selftests/net/mptcp/pm_netlink.sh | 94 +++++++++----------
.../selftests/net/mptcp/simult_flows.sh | 2 +-
5 files changed, 130 insertions(+), 109 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index ea99e45c3a0a..7a3a8b8254fb 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -610,79 +610,27 @@ pm_nl_set_limits()
pm_nl_add_endpoint()
{
- local ns=$1
- local addr=$2
- local flags dev id port
- local nr=2
-
- local p
- for p in "${@}"
- do
- case "${p}" in
- "flags" | "dev" | "id" | "port")
- eval "${p}"=\$"${nr}"
- ;;
- esac
-
- nr=$((nr + 1))
- done
-
- if mptcp_lib_is_ip_mptcp; then
- ip -n "${ns}" mptcp endpoint add "${addr}" ${flags//","/" "} \
- ${dev:+dev "${dev}"} ${id:+id "${id}"} ${port:+port "${port}"}
- else
- ip netns exec "${ns}" ./pm_nl_ctl add "${addr}" ${flags:+flags "${flags}"} \
- ${dev:+dev "${dev}"} ${id:+id "${id}"} ${port:+port "${port}"}
- fi
+ mptcp_lib_pm_nl_add_endpoint "${@}"
}
pm_nl_del_endpoint()
{
- local ns=$1
- local id=$2
- local addr=$3
-
- if mptcp_lib_is_ip_mptcp; then
- [ $id -ne 0 ] && addr=''
- ip -n $ns mptcp endpoint delete id $id ${addr:+"${addr}"}
- else
- ip netns exec $ns ./pm_nl_ctl del $id $addr
- fi
+ mptcp_lib_pm_nl_del_endpoint "${@}"
}
pm_nl_flush_endpoint()
{
- local ns=$1
-
- if mptcp_lib_is_ip_mptcp; then
- ip -n $ns mptcp endpoint flush
- else
- ip netns exec $ns ./pm_nl_ctl flush
- fi
+ mptcp_lib_pm_nl_flush_endpoint "${@}"
}
pm_nl_show_endpoints()
{
- local ns=$1
-
- if mptcp_lib_is_ip_mptcp; then
- ip -n $ns mptcp endpoint show
- else
- ip netns exec $ns ./pm_nl_ctl dump
- fi
+ mptcp_lib_pm_nl_show_endpoints "${@}"
}
pm_nl_change_endpoint()
{
- local ns=$1
- local id=$2
- local flags=$3
-
- if mptcp_lib_is_ip_mptcp; then
- ip -n $ns mptcp endpoint change id $id ${flags//","/" "}
- else
- ip netns exec $ns ./pm_nl_ctl set id $id flags $flags
- fi
+ mptcp_lib_pm_nl_change_endpoint "${@}"
}
pm_nl_check_endpoint()
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index e26ef67e4ef1..34f78dc7c8f0 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -601,3 +601,76 @@ mptcp_lib_pm_nl_change_address() {
ip netns exec "${ns}" ./pm_nl_ctl set "${addr}" flags "${flags}"
fi
}
+
+mptcp_lib_pm_nl_add_endpoint() {
+ local ns=${1}
+ local addr=${2}
+ local flags dev id port
+ local nr=2
+
+ local p
+ for p in "${@}"; do
+ case "${p}" in
+ "flags" | "dev" | "id" | "port")
+ eval "${p}"=\$"${nr}"
+ ;;
+ esac
+
+ nr=$((nr + 1))
+ done
+
+ if mptcp_lib_is_ip_mptcp; then
+ # shellcheck disable=SC2086 # blanks in flags, no double quote
+ ip -n "${ns}" mptcp endpoint add "${addr}" ${flags//","/" "} \
+ ${dev:+dev "${dev}"} ${id:+id "${id}"} ${port:+port "${port}"}
+ else
+ ip netns exec "${ns}" ./pm_nl_ctl add "${addr}" ${flags:+flags "${flags}"} \
+ ${dev:+dev "${dev}"} ${id:+id "${id}"} ${port:+port "${port}"}
+ fi
+}
+
+mptcp_lib_pm_nl_del_endpoint() {
+ local ns=${1}
+ local id=${2}
+ local addr=${3}
+
+ if mptcp_lib_is_ip_mptcp; then
+ [ "${id}" -ne 0 ] && addr=''
+ ip -n "${ns}" mptcp endpoint delete id "${id}" ${addr:+"${addr}"}
+ else
+ ip netns exec "${ns}" ./pm_nl_ctl del "${id}" "${addr}"
+ fi
+}
+
+mptcp_lib_pm_nl_flush_endpoint() {
+ local ns=${1}
+
+ if mptcp_lib_is_ip_mptcp; then
+ ip -n "${ns}" mptcp endpoint flush
+ else
+ ip netns exec "${ns}" ./pm_nl_ctl flush
+ fi
+}
+
+mptcp_lib_pm_nl_show_endpoints() {
+ local ns=${1}
+
+ if mptcp_lib_is_ip_mptcp; then
+ ip -n "${ns}" mptcp endpoint show
+ else
+ ip netns exec "${ns}" ./pm_nl_ctl dump
+ fi
+}
+
+mptcp_lib_pm_nl_change_endpoint() {
+ local ns=${1}
+ local id=${2}
+ local flags=${3}
+
+ if mptcp_lib_is_ip_mptcp; then
+ # shellcheck disable=SC2086 # blanks in flags, no double quote
+ ip -n "${ns}" mptcp endpoint change id "${id}" ${flags//","/" "}
+ else
+ ip netns exec "${ns}" ./pm_nl_ctl set id "${id}" flags "${flags}"
+ fi
+}
diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
index 6f39a5d6d02e..36e81383f0e2 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
@@ -58,11 +58,11 @@ init()
# let $ns2 reach any $ns1 address from any interface
ip -net "$ns2" route add default via 10.0.$i.1 dev ns2eth$i metric 10$i
- ip netns exec $ns1 ./pm_nl_ctl add 10.0.$i.1 flags signal
- ip netns exec $ns1 ./pm_nl_ctl add dead:beef:$i::1 flags signal
+ mptcp_lib_pm_nl_add_endpoint "${ns1}" "10.0.${i}.1" flags signal
+ mptcp_lib_pm_nl_add_endpoint "${ns1}" "dead:beef:${i}::1" flags signal
- ip netns exec $ns2 ./pm_nl_ctl add 10.0.$i.2 flags signal
- ip netns exec $ns2 ./pm_nl_ctl add dead:beef:$i::2 flags signal
+ mptcp_lib_pm_nl_add_endpoint "${ns2}" "10.0.${i}.2" flags signal
+ mptcp_lib_pm_nl_add_endpoint "${ns2}" "dead:beef:${i}::2" flags signal
done
mptcp_lib_pm_nl_set_limits "${ns1}" 8 8
diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testing/selftests/net/mptcp/pm_netlink.sh
index a42490885d88..31f7021734fe 100755
--- a/tools/testing/selftests/net/mptcp/pm_netlink.sh
+++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh
@@ -67,7 +67,7 @@ check()
fi
}
-check "ip netns exec $ns1 ./pm_nl_ctl dump" "" "defaults addr list"
+check "mptcp_lib_pm_nl_show_endpoints ${ns1}" "" "defaults addr list"
default_limits="$(mptcp_lib_pm_nl_get_limits "${ns1}")"
if mptcp_lib_expect_all_features; then
@@ -75,45 +75,45 @@ if mptcp_lib_expect_all_features; then
"$(mptcp_lib_format_limits 0 2)" "defaults limits"
fi
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.2 flags subflow dev lo
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3 flags signal,backup
+mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.1.1
+mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.1.2 flags subflow dev lo
+mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.1.3 flags signal,backup
check "mptcp_lib_pm_nl_get_endpoint ${ns1} 1" \
"$(mptcp_lib_format_endpoints "1,10.0.1.1")" "simple add/get addr"
-check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+check "mptcp_lib_pm_nl_show_endpoints ${ns1}" \
"$(mptcp_lib_format_endpoints "1,10.0.1.1" \
"2,10.0.1.2,subflow,lo" \
"3,10.0.1.3,signal backup")" \
"dump addrs"
-ip netns exec $ns1 ./pm_nl_ctl del 2
+mptcp_lib_pm_nl_del_endpoint "${ns1}" 2
check "mptcp_lib_pm_nl_get_endpoint ${ns1} 2" "" "simple del addr"
-check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+check "mptcp_lib_pm_nl_show_endpoints ${ns1}" \
"$(mptcp_lib_format_endpoints "1,10.0.1.1" \
"3,10.0.1.3,signal backup")" \
"dump addrs after del"
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3 2>/dev/null
+mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.1.3 2>/dev/null
check "mptcp_lib_pm_nl_get_endpoint ${ns1} 4" "" "duplicate addr"
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.4 flags signal
+mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.1.4 flags signal
check "mptcp_lib_pm_nl_get_endpoint ${ns1} 4" \
"$(mptcp_lib_format_endpoints "4,10.0.1.4,signal")" "id addr increment"
for i in $(seq 5 9); do
- ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.$i flags signal >/dev/null 2>&1
+ mptcp_lib_pm_nl_add_endpoint "${ns1}" "10.0.1.${i}" flags signal >/dev/null 2>&1
done
check "mptcp_lib_pm_nl_get_endpoint ${ns1} 9" \
"$(mptcp_lib_format_endpoints "9,10.0.1.9,signal")" "hard addr limit"
check "mptcp_lib_pm_nl_get_endpoint ${ns1} 10" "" "above hard addr limit"
-ip netns exec $ns1 ./pm_nl_ctl del 9
+mptcp_lib_pm_nl_del_endpoint "${ns1}" 9
for i in $(seq 10 255); do
- ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.9 id $i
- ip netns exec $ns1 ./pm_nl_ctl del $i
+ mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.0.9 id "${i}"
+ mptcp_lib_pm_nl_del_endpoint "${ns1}" "${i}"
done
-check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+check "mptcp_lib_pm_nl_show_endpoints ${ns1}" \
"$(mptcp_lib_format_endpoints "1,10.0.1.1" \
"3,10.0.1.3,signal backup" \
"4,10.0.1.4,signal" \
@@ -123,8 +123,8 @@ check "ip netns exec $ns1 ./pm_nl_ctl dump" \
"8,10.0.1.8,signal")" \
"id limit"
-ip netns exec $ns1 ./pm_nl_ctl flush
-check "ip netns exec $ns1 ./pm_nl_ctl dump" "" "flush addrs"
+mptcp_lib_pm_nl_flush_endpoint "${ns1}"
+check "mptcp_lib_pm_nl_show_endpoints ${ns1}" "" "flush addrs"
mptcp_lib_pm_nl_set_limits "${ns1}" 9 1 2>/dev/null
check "mptcp_lib_pm_nl_get_limits ${ns1}" "${default_limits}" "rcv addrs above hard limit"
@@ -136,16 +136,16 @@ mptcp_lib_pm_nl_set_limits "${ns1}" 8 8
check "mptcp_lib_pm_nl_get_limits ${ns1}" \
"$(mptcp_lib_format_limits 8 8)" "set limits"
-ip netns exec $ns1 ./pm_nl_ctl flush
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.2
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3 id 100
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.4
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.5 id 254
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.6
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.7
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.8
-check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+mptcp_lib_pm_nl_flush_endpoint "${ns1}"
+mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.1.1
+mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.1.2
+mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.1.3 id 100
+mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.1.4
+mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.1.5 id 254
+mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.1.6
+mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.1.7
+mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.1.8
+check "mptcp_lib_pm_nl_show_endpoints ${ns1}" \
"$(mptcp_lib_format_endpoints "1,10.0.1.1" \
"2,10.0.1.2" \
"3,10.0.1.7" \
@@ -156,16 +156,16 @@ check "ip netns exec $ns1 ./pm_nl_ctl dump" \
"255,10.0.1.6")" \
"set ids"
-ip netns exec $ns1 ./pm_nl_ctl flush
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.1
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.2 id 254
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.3
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.4
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.5 id 253
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.6
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.7
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.8
-check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+mptcp_lib_pm_nl_flush_endpoint "${ns1}"
+mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.0.1
+mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.0.2 id 254
+mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.0.3
+mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.0.4
+mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.0.5 id 253
+mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.0.6
+mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.0.7
+mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.0.8
+check "mptcp_lib_pm_nl_show_endpoints ${ns1}" \
"$(mptcp_lib_format_endpoints "1,10.0.0.1" \
"2,10.0.0.4" \
"3,10.0.0.6" \
@@ -176,30 +176,30 @@ check "ip netns exec $ns1 ./pm_nl_ctl dump" \
"255,10.0.0.3")" \
"wrap-around ids"
-ip netns exec $ns1 ./pm_nl_ctl flush
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1 flags subflow
+mptcp_lib_pm_nl_flush_endpoint "${ns1}"
+mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.1.1 flags subflow
mptcp_lib_pm_nl_change_address "${ns1}" 10.0.1.1 backup
-check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+check "mptcp_lib_pm_nl_show_endpoints ${ns1}" \
"$(mptcp_lib_format_endpoints "1,10.0.1.1,subflow backup")" \
"set flags (backup)"
mptcp_lib_pm_nl_change_address "${ns1}" 10.0.1.1 nobackup
-check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+check "mptcp_lib_pm_nl_show_endpoints ${ns1}" \
"$(mptcp_lib_format_endpoints "1,10.0.1.1,subflow")" \
" (nobackup)"
# fullmesh support has been added later
-ip netns exec $ns1 ./pm_nl_ctl set id 1 flags fullmesh 2>/dev/null
-if ip netns exec $ns1 ./pm_nl_ctl dump | grep -q "fullmesh" ||
+mptcp_lib_pm_nl_change_endpoint "${ns1}" 1 fullmesh 2>/dev/null
+if mptcp_lib_pm_nl_show_endpoints "${ns1}" | grep -q "fullmesh" ||
mptcp_lib_expect_all_features; then
- check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+ check "mptcp_lib_pm_nl_show_endpoints ${ns1}" \
"$(mptcp_lib_format_endpoints "1,10.0.1.1,subflow fullmesh")" \
" (fullmesh)"
- ip netns exec $ns1 ./pm_nl_ctl set id 1 flags nofullmesh
- check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+ mptcp_lib_pm_nl_change_endpoint "${ns1}" 1 nofullmesh
+ check "mptcp_lib_pm_nl_show_endpoints ${ns1}" \
"$(mptcp_lib_format_endpoints "1,10.0.1.1,subflow")" \
" (nofullmesh)"
- ip netns exec $ns1 ./pm_nl_ctl set id 1 flags backup,fullmesh
- check "ip netns exec $ns1 ./pm_nl_ctl dump" \
+ mptcp_lib_pm_nl_change_endpoint "${ns1}" 1 backup,fullmesh
+ check "mptcp_lib_pm_nl_show_endpoints ${ns1}" \
"$(mptcp_lib_format_endpoints "1,10.0.1.1,subflow backup fullmesh")" \
" (backup,fullmesh)"
else
diff --git a/tools/testing/selftests/net/mptcp/simult_flows.sh b/tools/testing/selftests/net/mptcp/simult_flows.sh
index b8414cff9b4b..acc49fa652a2 100755
--- a/tools/testing/selftests/net/mptcp/simult_flows.sh
+++ b/tools/testing/selftests/net/mptcp/simult_flows.sh
@@ -86,7 +86,7 @@ setup()
ip -net "$ns1" route add default via dead:beef:2::2 metric 101
mptcp_lib_pm_nl_set_limits "${ns1}" 1 1
- ip netns exec "$ns1" ./pm_nl_ctl add 10.0.2.1 dev ns1eth2 flags subflow
+ mptcp_lib_pm_nl_add_endpoint "${ns1}" 10.0.2.1 dev ns1eth2 flags subflow
ip -net "$ns2" addr add 10.0.1.2/24 dev ns2eth1
ip -net "$ns2" addr add dead:beef:1::2/64 dev ns2eth1 nodad
--
2.40.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH mptcp-next v3 11/12] selftests: mptcp: ip_mptcp option for more scripts
2024-03-17 0:57 [PATCH mptcp-next v3 00/12] add helpers and vars in mptcp_lib.sh, final Geliang Tang
` (9 preceding siblings ...)
2024-03-17 0:58 ` [PATCH mptcp-next v3 10/12] selftests: mptcp: export more " Geliang Tang
@ 2024-03-17 0:58 ` Geliang Tang
2024-03-17 0:58 ` [PATCH mptcp-next v3 12/12] selftests: mptcp: netlink: drop disable=SC2086 Geliang Tang
` (2 subsequent siblings)
13 siblings, 0 replies; 22+ messages in thread
From: Geliang Tang @ 2024-03-17 0:58 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
From: Geliang Tang <tanggeliang@kylinos.cn>
This patch adds '-i' option for mptcp_sockopt.sh, pm_netlink.sh, and
simult_flows.sh, to use 'ip mptcp' command in the tests instead of
'pm_nl_ctl'. Update usage() correspondingly.
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
.../selftests/net/mptcp/mptcp_sockopt.sh | 22 +++++++++++++++++++
.../testing/selftests/net/mptcp/pm_netlink.sh | 9 ++++++--
.../selftests/net/mptcp/simult_flows.sh | 8 +++++--
3 files changed, 35 insertions(+), 4 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
index 36e81383f0e2..68899a303a1a 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
@@ -22,6 +22,28 @@ ns1=""
ns2=""
ns_sbox=""
+usage() {
+ echo "Usage: $0 [ -i ] [ -h ]"
+ echo -e "\t-i: use 'ip mptcp' instead of 'pm_nl_ctl'"
+ echo -e "\t-h: help"
+}
+
+while getopts "hi" option;do
+ case "$option" in
+ "h")
+ usage "$0"
+ exit ${KSFT_PASS}
+ ;;
+ "i")
+ mptcp_lib_set_ip_mptcp
+ ;;
+ "?")
+ usage "$0"
+ exit ${KSFT_FAIL}
+ ;;
+ esac
+done
+
add_mark_rules()
{
local ns=$1
diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testing/selftests/net/mptcp/pm_netlink.sh
index 31f7021734fe..b48476d73e9e 100755
--- a/tools/testing/selftests/net/mptcp/pm_netlink.sh
+++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh
@@ -11,16 +11,21 @@
ret=0
usage() {
- echo "Usage: $0 [ -h ]"
+ echo "Usage: $0 [ -i ] [ -h ]"
+ echo -e "\t-i: use 'ip mptcp' instead of 'pm_nl_ctl'"
+ echo -e "\t-h: help"
}
-optstring=h
+optstring=hi
while getopts "$optstring" option;do
case "$option" in
"h")
usage $0
exit ${KSFT_PASS}
;;
+ "i")
+ mptcp_lib_set_ip_mptcp
+ ;;
"?")
usage $0
exit ${KSFT_FAIL}
diff --git a/tools/testing/selftests/net/mptcp/simult_flows.sh b/tools/testing/selftests/net/mptcp/simult_flows.sh
index acc49fa652a2..d0b39c2e38a3 100755
--- a/tools/testing/selftests/net/mptcp/simult_flows.sh
+++ b/tools/testing/selftests/net/mptcp/simult_flows.sh
@@ -27,10 +27,11 @@ capout=""
size=0
usage() {
- echo "Usage: $0 [ -b ] [ -c ] [ -d ]"
+ echo "Usage: $0 [ -b ] [ -c ] [ -d ] [ -i]"
echo -e "\t-b: bail out after first error, otherwise runs al testcases"
echo -e "\t-c: capture packets for each test using tcpdump (default: no capture)"
echo -e "\t-d: debug this script"
+ echo -e "\t-i: use 'ip mptcp' instead of 'pm_nl_ctl'"
}
# This function is used in the cleanup trap
@@ -259,7 +260,7 @@ run_test()
fi
}
-while getopts "bcdh" option;do
+while getopts "bcdhi" option;do
case "$option" in
"h")
usage $0
@@ -274,6 +275,9 @@ while getopts "bcdh" option;do
"d")
set -x
;;
+ "i")
+ mptcp_lib_set_ip_mptcp
+ ;;
"?")
usage $0
exit ${KSFT_FAIL}
--
2.40.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH mptcp-next v3 12/12] selftests: mptcp: netlink: drop disable=SC2086
2024-03-17 0:57 [PATCH mptcp-next v3 00/12] add helpers and vars in mptcp_lib.sh, final Geliang Tang
` (10 preceding siblings ...)
2024-03-17 0:58 ` [PATCH mptcp-next v3 11/12] selftests: mptcp: ip_mptcp option for more scripts Geliang Tang
@ 2024-03-17 0:58 ` Geliang Tang
2024-03-17 1:49 ` [PATCH mptcp-next v3 00/12] add helpers and vars in mptcp_lib.sh, final MPTCP CI
2024-03-18 12:20 ` Matthieu Baerts
13 siblings, 0 replies; 22+ messages in thread
From: Geliang Tang @ 2024-03-17 0:58 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
From: Geliang Tang <tanggeliang@kylinos.cn>
Now there are only a few of variables are not using double quotes.
Modifying them, then "shellcheck disable=SC2086" can be dropped.
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
tools/testing/selftests/net/mptcp/pm_netlink.sh | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testing/selftests/net/mptcp/pm_netlink.sh
index b48476d73e9e..e4f5f1f9ab95 100755
--- a/tools/testing/selftests/net/mptcp/pm_netlink.sh
+++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh
@@ -1,11 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
-# Double quotes to prevent globbing and word splitting is recommended in new
-# code but we accept it, especially because there were too many before having
-# address all other issues detected by shellcheck.
-#shellcheck disable=SC2086
-
. "$(dirname "${0}")/mptcp_lib.sh"
ret=0
@@ -20,14 +15,14 @@ optstring=hi
while getopts "$optstring" option;do
case "$option" in
"h")
- usage $0
+ usage "$0"
exit ${KSFT_PASS}
;;
"i")
mptcp_lib_set_ip_mptcp
;;
"?")
- usage $0
+ usage "$0"
exit ${KSFT_FAIL}
;;
esac
@@ -40,7 +35,7 @@ err=$(mktemp)
#shellcheck disable=SC2317
cleanup()
{
- rm -f $err
+ rm -f "${err}"
mptcp_lib_ns_exit "${ns1}"
}
--
2.40.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PATCH mptcp-next v3 00/12] add helpers and vars in mptcp_lib.sh, final
2024-03-17 0:57 [PATCH mptcp-next v3 00/12] add helpers and vars in mptcp_lib.sh, final Geliang Tang
` (11 preceding siblings ...)
2024-03-17 0:58 ` [PATCH mptcp-next v3 12/12] selftests: mptcp: netlink: drop disable=SC2086 Geliang Tang
@ 2024-03-17 1:49 ` MPTCP CI
2024-03-18 12:20 ` Matthieu Baerts
13 siblings, 0 replies; 22+ messages in thread
From: MPTCP CI @ 2024-03-17 1:49 UTC (permalink / raw)
To: Geliang Tang; +Cc: mptcp
Hi Geliang,
Thank you for your modifications, that's great!
Our CI did some validations and here is its report:
- KVM Validation: normal: Success! ✅
- KVM Validation: debug: Unstable: 1 failed test(s): packetdrill_mp_join 🔴
- KVM Validation: btf (only bpftest_all): Success! ✅
- Task: https://github.com/multipath-tcp/mptcp_net-next/actions/runs/8311895129
Initiator: Patchew Applier
Commits: https://github.com/multipath-tcp/mptcp_net-next/commits/e8e27b9f1f07
Patchwork: https://patchwork.kernel.org/project/mptcp/list/?series=835874
If there are some issues, you can reproduce them using the same environment as
the one used by the CI thanks to a docker image, e.g.:
$ cd [kernel source code]
$ docker run -v "${PWD}:${PWD}:rw" -w "${PWD}" --privileged --rm -it \
--pull always mptcp/mptcp-upstream-virtme-docker:latest \
auto-normal
For more details:
https://github.com/multipath-tcp/mptcp-upstream-virtme-docker
Please note that despite all the efforts that have been already done to have a
stable tests suite when executed on a public CI like here, it is possible some
reported issues are not due to your modifications. Still, do not hesitate to
help us improve that ;-)
Cheers,
MPTCP GH Action bot
Bot operated by Matthieu Baerts (NGI0 Core)
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH mptcp-net v3 01/12] selftests: mptcp: join: fix dev in check_endpoint
2024-03-17 0:58 ` [PATCH mptcp-net v3 01/12] selftests: mptcp: join: fix dev in check_endpoint Geliang Tang
@ 2024-03-18 11:03 ` Matthieu Baerts
0 siblings, 0 replies; 22+ messages in thread
From: Matthieu Baerts @ 2024-03-18 11:03 UTC (permalink / raw)
To: Geliang Tang, mptcp; +Cc: Geliang Tang
Hi Geliang,
On 17/03/2024 01:58, Geliang Tang wrote:
> From: Geliang Tang <tanggeliang@kylinos.cn>
>
> There's a bug in pm_nl_check_endpoint(), 'dev' didn't be parsed correctly.
> If calling it in the 2nd test of endpoint_tests() too, it fails with an
> error like this:
>
> creation [FAIL] expected '10.0.2.2 id 2 subflow dev dev' \
> found '10.0.2.2 id 2 subflow dev ns2eth2'
>
> The reason is '$2' should be set to 'dev', not '$1'. This patch fixes it.
Thank you for the fix.
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Now in our tree:
New patches for t/upstream:
- a17e802344ac: selftests: mptcp: join: fix dev in check_endpoint
- Results: 99c0f9c30cff..fb4fd270fb40 (export-net)
- Results: 73d1889e6078..f25339583887 (export)
Tests are now in progress:
- export-net:
https://github.com/multipath-tcp/mptcp_net-next/commit/86ab05597497b73a7c42c0bdbecb089c8dd30d73/checks
- export:
https://github.com/multipath-tcp/mptcp_net-next/commit/5e7deabc5e142114ef55e9ff014b2a4c6a22b96e/checks
Cheers,
Matt
--
Sponsored by the NGI0 Core fund.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH mptcp-next v3 00/12] add helpers and vars in mptcp_lib.sh, final
2024-03-17 0:57 [PATCH mptcp-next v3 00/12] add helpers and vars in mptcp_lib.sh, final Geliang Tang
` (12 preceding siblings ...)
2024-03-17 1:49 ` [PATCH mptcp-next v3 00/12] add helpers and vars in mptcp_lib.sh, final MPTCP CI
@ 2024-03-18 12:20 ` Matthieu Baerts
13 siblings, 0 replies; 22+ messages in thread
From: Matthieu Baerts @ 2024-03-18 12:20 UTC (permalink / raw)
To: Geliang Tang, mptcp; +Cc: Geliang Tang
Hi Geliang,
On 17/03/2024 01:57, Geliang Tang wrote:
> From: Geliang Tang <tanggeliang@kylinos.cn>
>
> v3:
> - use check_output in pm_nl_check_endpoint.
> - split #2 and #7 patches in v2.
> - put "selftests: mptcp: join: fix dev in check_endpoint" into this
> series too.
>
> v2:
> - address every Matt's commends in v1.
> - depends on "selftests: mptcp: join: fix dev in check_endpoint"
Thank you for the new version!
I already applied patch 1/12.
I have some suggestions, please see my other replies.
Cheers,
Matt
--
Sponsored by the NGI0 Core fund.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH mptcp-next v3 03/12] selftests: mptcp: format limits outputs
2024-03-17 0:58 ` [PATCH mptcp-next v3 03/12] selftests: mptcp: format limits outputs Geliang Tang
@ 2024-03-18 12:21 ` Matthieu Baerts
0 siblings, 0 replies; 22+ messages in thread
From: Matthieu Baerts @ 2024-03-18 12:21 UTC (permalink / raw)
To: Geliang Tang, mptcp; +Cc: Geliang Tang
Hi Geliang,
On 17/03/2024 01:58, Geliang Tang wrote:
> From: Geliang Tang <tanggeliang@kylinos.cn>
>
> The output format of 'ip mptcp limits' command is much different from
> that of 'pm_nl_ctl limits' command. This patch adds format_limits()
> helper to format the outputs of these two commands to hide the
> difference.
>
> Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
> ---
> tools/testing/selftests/net/mptcp/mptcp_lib.sh | 12 ++++++++++++
> tools/testing/selftests/net/mptcp/pm_netlink.sh | 8 ++++----
> 2 files changed, 16 insertions(+), 4 deletions(-)
>
> diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
> index ca01d949fad8..c402cc994902 100644
> --- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
> +++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
> @@ -520,3 +520,15 @@ mptcp_lib_set_ip_mptcp() {
> mptcp_lib_is_ip_mptcp() {
> [ "${MPTCP_LIB_IP_MPTCP}" = "1" ]
> }
> +
> +mptcp_lib_format_limits() {
Do you need it to be in the lib if it is only used in one selftest? Same
for the get_limits from patch 4/12. (Maybe you can even squash these 2
patches together.)
If it is only used in pm_netlink.sh, you can also have a shorter
function name:
check "get_limits ${ns1}" "$(format_limits 0 2)" "defaults limits"
And you don't even have to pass '${ns1}', as there is only one netns:
check "get_limits" "$(format_limits 0 2)" "defaults limits"
WDYT?
> + local accept="${1}"
> + local subflows="${2}"
> +
> + if mptcp_lib_is_ip_mptcp; then
> + # with a space at the end
> + printf "add_addr_accepted %d subflows %d \n" "${accept}" "${subflows}"
> + else
> + printf "accept %d\nsubflows %d\n" "${accept}" "${subflows}"
> + fi
> +}
Cheers,
Matt
--
Sponsored by the NGI0 Core fund.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH mptcp-next v3 04/12] selftests: mptcp: add get_limits helper
2024-03-17 0:58 ` [PATCH mptcp-next v3 04/12] selftests: mptcp: add get_limits helper Geliang Tang
@ 2024-03-18 12:22 ` Matthieu Baerts
0 siblings, 0 replies; 22+ messages in thread
From: Matthieu Baerts @ 2024-03-18 12:22 UTC (permalink / raw)
To: Geliang Tang, mptcp; +Cc: Geliang Tang
Hi Geliang,
On 17/03/2024 01:58, Geliang Tang wrote:
> From: Geliang Tang <tanggeliang@kylinos.cn>
>
> Just like set_limits() helper, this patch adds another one get_limits() to
> show the limits.
>
> Usage:
> Set limits - set_limits $ns $addrs $subflows
> Get limits - get_limits $ns
>
> Use this new helper in pm_netlink.sh to replace all 'pm_nl_ctl limits'
> commands.
>
> Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
> ---
> tools/testing/selftests/net/mptcp/mptcp_lib.sh | 10 ++++++++++
> tools/testing/selftests/net/mptcp/pm_netlink.sh | 10 +++++-----
> 2 files changed, 15 insertions(+), 5 deletions(-)
>
> diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
> index c402cc994902..813d6406ccc3 100644
> --- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
> +++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
> @@ -532,3 +532,13 @@ mptcp_lib_format_limits() {
> printf "accept %d\nsubflows %d\n" "${accept}" "${subflows}"
> fi
> }
> +
> +mptcp_lib_pm_nl_get_limits() {
See my comment from patch 3/12: could be kept in pm_netlink.sh with a
shorter name and without 'ns'.
check "get_limits" "${default_limits}" "rcv addrs above hard limit"
> + local ns=${1}
> +
> + if mptcp_lib_is_ip_mptcp; then
> + ip -n "${ns}" mptcp limits
> + else
> + ip netns exec "${ns}" ./pm_nl_ctl limits
> + fi
> +}
Cheers,
Matt
--
Sponsored by the NGI0 Core fund.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH mptcp-next v3 05/12] selftests: mptcp: export set_limits helper
2024-03-17 0:58 ` [PATCH mptcp-next v3 05/12] selftests: mptcp: export set_limits helper Geliang Tang
@ 2024-03-18 12:24 ` Matthieu Baerts
0 siblings, 0 replies; 22+ messages in thread
From: Matthieu Baerts @ 2024-03-18 12:24 UTC (permalink / raw)
To: Geliang Tang, mptcp; +Cc: Geliang Tang
Hi Geliang,
On 17/03/2024 01:58, Geliang Tang wrote:
> From: Geliang Tang <tanggeliang@kylinos.cn>
>
> This patch exports pm_nl_set_limits() helper into mptcp_lib.sh as a
> public function named mptcp_lib_pm_nl_set_limits(). Then pm_nl_set_limits()
> in mptcp_join.sh can be a wrapper of the public one.
>
> Use this newly added helper to replace all 'pm_nl_ctl limits' commands in
> scripts mptcp_sockopt.sh, pm_netlink.sh and simult_flows.sh.
Should this not be squashed with patch 10/12?
[PATCH mptcp-next v3 10/12] selftests: mptcp: export more endpoint ops
Which could be named:
selftests: mptcp: export pm_nl endpoint ops
WDYT?
Cheers,
Matt
--
Sponsored by the NGI0 Core fund.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH mptcp-next v3 06/12] selftests: mptcp: format endpoints outputs
2024-03-17 0:58 ` [PATCH mptcp-next v3 06/12] selftests: mptcp: format endpoints outputs Geliang Tang
@ 2024-03-18 12:26 ` Matthieu Baerts
0 siblings, 0 replies; 22+ messages in thread
From: Matthieu Baerts @ 2024-03-18 12:26 UTC (permalink / raw)
To: Geliang Tang, mptcp; +Cc: Geliang Tang
Hi Geliang,
On 17/03/2024 01:58, Geliang Tang wrote:
> From: Geliang Tang <tanggeliang@kylinos.cn>
>
> The output formats of 'ip mptcp' commands are much different from that
> of 'pm_nl_ctl' commands. This patch adds a new helper format_endpoints()
> to format the outputs of 'ip mptcp' and 'pm_nl_ctl' with 'endpoints'
> arguments to hide these differences.
>
> This is useful for exporting endpoint ops into mptcp_lib.sh
>
> Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
(...)
> diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
> index d16b82f7e35a..92b89f3a7605 100644
> --- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
> +++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
> @@ -554,3 +554,26 @@ mptcp_lib_pm_nl_set_limits() {
> ip netns exec "${ns}" ./pm_nl_ctl limits "${addrs}" "${subflows}"
> fi
> }
> +
> +# format: <id>,<ip>,<flags>,<dev>
> +mptcp_lib_format_endpoints() {
Maybe best to use the same "mptcp_lib_pm_nl_" prefix?
mptcp_lib_pm_nl_format_endpoints
> + local entry id ip flags dev port
> +
> + for entry in "${@}"; do
> + IFS=, read -r id ip flags dev port <<< "${entry}"
> + if mptcp_lib_is_ip_mptcp; then
> + echo -n "${ip}"
> + [ -n "${port}" ] && echo -n " port ${port}"
> + echo -n " id ${id}"
There is a mix of tabs and spaces on this line here above.
> + [ -n "${flags}" ] && echo -n " ${flags}"
> + [ -n "${dev}" ] && echo -n " dev ${dev}"
> + echo " " # always a space at the end
> + else
> + echo -n "id ${id}"
> + echo -n " flags ${flags//" "/","}"
> + [ -n "${dev}" ] && echo -n " dev ${dev}"
> + echo -n " ${ip}"
> + [ -n "${port}" ] && echo " ${port}" || echo ""
> + fi
> + done
> +}
> diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testing/selftests/net/mptcp/pm_netlink.sh
> index d369096d0df8..95e393c95017 100755
> --- a/tools/testing/selftests/net/mptcp/pm_netlink.sh
> +++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh
> @@ -78,29 +78,34 @@ fi
> ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1
> ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.2 flags subflow dev lo
> ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3 flags signal,backup
> -check "ip netns exec $ns1 ./pm_nl_ctl get 1" "id 1 flags 10.0.1.1" "simple add/get addr"
> +check "ip netns exec $ns1 ./pm_nl_ctl get 1" \
> + "$(mptcp_lib_format_endpoints "1,10.0.1.1")" "simple add/get addr"
If the name is too long, you can also add a simple helper:
format_endpoints() {
mptcp_lib_pm_nl_format_endpoints "${@}"
}
So it might be easier to read:
check "ip netns exec $ns1 ./pm_nl_ctl get 1" \
"$(format_endpoints "1,10.0.1.1")" "simple add/get addr"
Same for patch 7/12:
get_endpoint() {
mptcp_lib_pm_nl_get_endpoint "${@}"
}
I think you can squash patch 6 and 7 together, no?
(...)
Cheers,
Matt
--
Sponsored by the NGI0 Core fund.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH mptcp-next v3 07/12] selftests: mptcp: add get_endpoint helper
2024-03-17 0:58 ` [PATCH mptcp-next v3 07/12] selftests: mptcp: add get_endpoint helper Geliang Tang
@ 2024-03-18 12:27 ` Matthieu Baerts
0 siblings, 0 replies; 22+ messages in thread
From: Matthieu Baerts @ 2024-03-18 12:27 UTC (permalink / raw)
To: Geliang Tang, mptcp; +Cc: Geliang Tang
Hi Geliang,
On 17/03/2024 01:58, Geliang Tang wrote:
> From: Geliang Tang <tanggeliang@kylinos.cn>
>
> All endpoints are showed in show_endpoints(). This patch adds another
> helper named get_endpoint() to show a specofic endpoint identified by
> the given address ID.
>
> Usage:
> All endpoints - show_endpoints $ns
> One endpoint - get_endpoint $ns $id
>
> Use this new helper in mptcp_join.sh and pm_netlink.sh to replace all
> 'pm_nl_ctl get' commands.
(...)
> diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
> index 92b89f3a7605..d83a67922b17 100644
> --- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
> +++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
> @@ -577,3 +577,14 @@ mptcp_lib_format_endpoints() {
> fi
> done
> }
> +
> +mptcp_lib_pm_nl_get_endpoint() {
> + local ns=${1}
> + local id=${2}
> +
> + if mptcp_lib_is_ip_mptcp; then
> + ip -n "${ns}" mptcp endpoint show id "${id}"
> + else
> + ip netns exec "${ns}" ./pm_nl_ctl get "${id}"
> + fi
Spaces are used here in this function, instead of tabs.
> +}
> diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testing/selftests/net/mptcp/pm_netlink.sh
> index 95e393c95017..28c89b576d1f 100755
> --- a/tools/testing/selftests/net/mptcp/pm_netlink.sh
> +++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh
> @@ -78,7 +78,7 @@ fi
> ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1
> ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.2 flags subflow dev lo
> ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3 flags signal,backup
> -check "ip netns exec $ns1 ./pm_nl_ctl get 1" \
> +check "mptcp_lib_pm_nl_get_endpoint ${ns1} 1" \
> "$(mptcp_lib_format_endpoints "1,10.0.1.1")" "simple add/get addr"
See my comment from patch 6/12, we could have:
check "get_endpoint 1" "$(format_endpoints "1,10.0.1.1")" \
"simple add/get addr"
(and squashed with patch 6/12?)
(...)
Cheers,
Matt
--
Sponsored by the NGI0 Core fund.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH mptcp-next v3 08/12] selftests: mptcp: add change_address helper
2024-03-17 0:58 ` [PATCH mptcp-next v3 08/12] selftests: mptcp: add change_address helper Geliang Tang
@ 2024-03-18 12:28 ` Matthieu Baerts
0 siblings, 0 replies; 22+ messages in thread
From: Matthieu Baerts @ 2024-03-18 12:28 UTC (permalink / raw)
To: Geliang Tang, mptcp; +Cc: Geliang Tang
Hi Geliang,
On 17/03/2024 01:58, Geliang Tang wrote:
> From: Geliang Tang <tanggeliang@kylinos.cn>
>
> The address that needs to change flags can only be identified by an address
> ID in change_endpoint() helper. This patch adds another helper named
> change_address(), its 2nd parameter is an IP address.
>
> Usage:
> Address ID - change_endpoint $ns id $id $flags
> IP address - change_address $ns $addr $flags
>
> Use this new helper in pm_netlink.sh to replace all 'pm_nl_ctl set'
> commands.
>
> Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
> ---
> tools/testing/selftests/net/mptcp/mptcp_lib.sh | 13 +++++++++++++
> tools/testing/selftests/net/mptcp/pm_netlink.sh | 4 ++--
> 2 files changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
> index d83a67922b17..e26ef67e4ef1 100644
> --- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
> +++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
> @@ -588,3 +588,16 @@ mptcp_lib_pm_nl_get_endpoint() {
> ip netns exec "${ns}" ./pm_nl_ctl get "${id}"
> fi
> }
> +
> +mptcp_lib_pm_nl_change_address() {
Same here, if it is only used in pm_netlink.sh, keep it there, with a
shorter name, and without ns:
change_address 10.0.1.1 backup
no?
> + local ns=${1}
> + local addr=${2}
> + local flags=${3}
> +
> + if mptcp_lib_is_ip_mptcp; then
> + # shellcheck disable=SC2086 # blanks in flags, no double quote
> + ip -n "${ns}" mptcp endpoint change "${addr}" ${flags//","/" "}
It looks like this helper is only used with 'backup' or 'nobackup' flag,
you can then use "${flags}" without the "disable=SC2086", no?
> + else
> + ip netns exec "${ns}" ./pm_nl_ctl set "${addr}" flags "${flags}"
> + fi
> +}
(...)
Cheers,
Matt
--
Sponsored by the NGI0 Core fund.
^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2024-03-18 12:28 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-17 0:57 [PATCH mptcp-next v3 00/12] add helpers and vars in mptcp_lib.sh, final Geliang Tang
2024-03-17 0:58 ` [PATCH mptcp-net v3 01/12] selftests: mptcp: join: fix dev in check_endpoint Geliang Tang
2024-03-18 11:03 ` Matthieu Baerts
2024-03-17 0:58 ` [PATCH mptcp-next v3 02/12] selftests: mptcp: export ip_mptcp to mptcp_lib Geliang Tang
2024-03-17 0:58 ` [PATCH mptcp-next v3 03/12] selftests: mptcp: format limits outputs Geliang Tang
2024-03-18 12:21 ` Matthieu Baerts
2024-03-17 0:58 ` [PATCH mptcp-next v3 04/12] selftests: mptcp: add get_limits helper Geliang Tang
2024-03-18 12:22 ` Matthieu Baerts
2024-03-17 0:58 ` [PATCH mptcp-next v3 05/12] selftests: mptcp: export set_limits helper Geliang Tang
2024-03-18 12:24 ` Matthieu Baerts
2024-03-17 0:58 ` [PATCH mptcp-next v3 06/12] selftests: mptcp: format endpoints outputs Geliang Tang
2024-03-18 12:26 ` Matthieu Baerts
2024-03-17 0:58 ` [PATCH mptcp-next v3 07/12] selftests: mptcp: add get_endpoint helper Geliang Tang
2024-03-18 12:27 ` Matthieu Baerts
2024-03-17 0:58 ` [PATCH mptcp-next v3 08/12] selftests: mptcp: add change_address helper Geliang Tang
2024-03-18 12:28 ` Matthieu Baerts
2024-03-17 0:58 ` [PATCH mptcp-next v3 09/12] selftests: mptcp: join: update endpoint ops Geliang Tang
2024-03-17 0:58 ` [PATCH mptcp-next v3 10/12] selftests: mptcp: export more " Geliang Tang
2024-03-17 0:58 ` [PATCH mptcp-next v3 11/12] selftests: mptcp: ip_mptcp option for more scripts Geliang Tang
2024-03-17 0:58 ` [PATCH mptcp-next v3 12/12] selftests: mptcp: netlink: drop disable=SC2086 Geliang Tang
2024-03-17 1:49 ` [PATCH mptcp-next v3 00/12] add helpers and vars in mptcp_lib.sh, final MPTCP CI
2024-03-18 12:20 ` Matthieu Baerts
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.