Skip to content

Commit d3423ed

Browse files
committed
Merge branch 'selftests-mptcp-share-code-and-fix-shellcheck-warnings'
Matthieu Baerts says: ==================== selftests: mptcp: share code and fix shellcheck warnings This series cleans MPTCP selftests code. Patch 1 stops using 'iptables-legacy' if available, but uses 'iptables', which is likely 'iptables-nft' behind. Patches 2, 4 and 6 move duplicated code to mptcp_lib.sh. Patch 3 is a preparation for patch 4, and patch 5 adds generic actions at the creation and deletion of netns. Patches 7 to 11 disable a few shellcheck warnings, and fix the rest, so it is easy to spot real issues later. MPTCP CI is checking that now. Patch 12 avoids redoing some actions at init time twice, e.g. restarting the pm events tool. v1: https://lore.kernel.org/r/20240305-upstream-net-next-20240304-selftests-mptcp-shared-code-shellcheck-v1-0-66618ea5504e@kernel.org ==================== Link: https://lore.kernel.org/r/20240306-upstream-net-next-20240304-selftests-mptcp-shared-code-shellcheck-v2-0-bc79e6e5e6a0@kernel.org Signed-off-by: Jakub Kicinski <[email protected]>
2 parents c3874bb + c66fb48 commit d3423ed

File tree

8 files changed

+210
-244
lines changed

8 files changed

+210
-244
lines changed

tools/testing/selftests/net/mptcp/diag.sh

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
#!/bin/bash
22
# SPDX-License-Identifier: GPL-2.0
33

4+
# Double quotes to prevent globbing and word splitting is recommended in new
5+
# code but we accept it, especially because there were too many before having
6+
# address all other issues detected by shellcheck.
7+
#shellcheck disable=SC2086
8+
49
. "$(dirname "${0}")/mptcp_lib.sh"
510

6-
sec=$(date +%s)
7-
rndh=$(printf %x $sec)-$(mktemp -u XXXXXX)
8-
ns="ns1-$rndh"
9-
ksft_skip=4
11+
ns=""
1012
test_cnt=1
1113
timeout_poll=30
1214
timeout_test=$((timeout_poll * 2 + 1))
@@ -26,25 +28,17 @@ flush_pids()
2628
done
2729
}
2830

31+
# This function is used in the cleanup trap
32+
#shellcheck disable=SC2317
2933
cleanup()
3034
{
3135
ip netns pids "${ns}" | xargs --no-run-if-empty kill -SIGKILL &>/dev/null
3236

33-
ip netns del $ns
37+
mptcp_lib_ns_exit "${ns}"
3438
}
3539

3640
mptcp_lib_check_mptcp
37-
38-
ip -Version > /dev/null 2>&1
39-
if [ $? -ne 0 ];then
40-
echo "SKIP: Could not run test without ip tool"
41-
exit $ksft_skip
42-
fi
43-
ss -h | grep -q MPTCP
44-
if [ $? -ne 0 ];then
45-
echo "SKIP: ss tool does not support MPTCP"
46-
exit $ksft_skip
47-
fi
41+
mptcp_lib_check_tools ip ss
4842

4943
get_msk_inuse()
5044
{
@@ -186,7 +180,7 @@ chk_msk_inuse()
186180
expected=$((expected + listen_nr))
187181

188182
for _ in $(seq 10); do
189-
if [ $(get_msk_inuse) -eq $expected ];then
183+
if [ "$(get_msk_inuse)" -eq $expected ]; then
190184
break
191185
fi
192186
sleep 0.1
@@ -224,8 +218,7 @@ wait_connected()
224218
}
225219

226220
trap cleanup EXIT
227-
ip netns add $ns
228-
ip -n $ns link set dev lo up
221+
mptcp_lib_ns_init ns
229222

230223
echo "a" | \
231224
timeout ${timeout_test} \
@@ -273,7 +266,7 @@ chk_msk_inuse 0 "1->0"
273266
chk_msk_cestab 0 "1->0"
274267

275268
NR_CLIENTS=100
276-
for I in `seq 1 $NR_CLIENTS`; do
269+
for I in $(seq 1 $NR_CLIENTS); do
277270
echo "a" | \
278271
timeout ${timeout_test} \
279272
ip netns exec $ns \
@@ -282,7 +275,7 @@ for I in `seq 1 $NR_CLIENTS`; do
282275
done
283276
mptcp_lib_wait_local_port_listen $ns $((NR_CLIENTS + 10001))
284277

285-
for I in `seq 1 $NR_CLIENTS`; do
278+
for I in $(seq 1 $NR_CLIENTS); do
286279
echo "b" | \
287280
timeout ${timeout_test} \
288281
ip netns exec $ns \

tools/testing/selftests/net/mptcp/mptcp_connect.sh

Lines changed: 58 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
#!/bin/bash
22
# SPDX-License-Identifier: GPL-2.0
33

4+
# Double quotes to prevent globbing and word splitting is recommended in new
5+
# code but we accept it, especially because there were too many before having
6+
# address all other issues detected by shellcheck.
7+
#shellcheck disable=SC2086
8+
49
. "$(dirname "${0}")/mptcp_lib.sh"
510

611
time_start=$(date +%s)
@@ -13,7 +18,6 @@ sout=""
1318
cin_disconnect=""
1419
cin=""
1520
cout=""
16-
ksft_skip=4
1721
capture=false
1822
timeout_poll=30
1923
timeout_test=$((timeout_poll * 2 + 1))
@@ -121,38 +125,29 @@ while getopts "$optstring" option;do
121125
esac
122126
done
123127

124-
sec=$(date +%s)
125-
rndh=$(printf %x $sec)-$(mktemp -u XXXXXX)
126-
ns1="ns1-$rndh"
127-
ns2="ns2-$rndh"
128-
ns3="ns3-$rndh"
129-
ns4="ns4-$rndh"
128+
ns1=""
129+
ns2=""
130+
ns3=""
131+
ns4=""
130132

131133
TEST_COUNT=0
132134
TEST_GROUP=""
133135

136+
# This function is used in the cleanup trap
137+
#shellcheck disable=SC2317
134138
cleanup()
135139
{
136140
rm -f "$cin_disconnect" "$cout_disconnect"
137141
rm -f "$cin" "$cout"
138142
rm -f "$sin" "$sout"
139143
rm -f "$capout"
140144

141-
local netns
142-
for netns in "$ns1" "$ns2" "$ns3" "$ns4";do
143-
ip netns del $netns
144-
rm -f /tmp/$netns.{nstat,out}
145-
done
145+
mptcp_lib_ns_exit "${ns1}" "${ns2}" "${ns3}" "${ns4}"
146146
}
147147

148148
mptcp_lib_check_mptcp
149149
mptcp_lib_check_kallsyms
150-
151-
ip -Version > /dev/null 2>&1
152-
if [ $? -ne 0 ];then
153-
echo "SKIP: Could not run test without ip tool"
154-
exit $ksft_skip
155-
fi
150+
mptcp_lib_check_tools ip
156151

157152
sin=$(mktemp)
158153
sout=$(mktemp)
@@ -163,10 +158,7 @@ cin_disconnect="$cin".disconnect
163158
cout_disconnect="$cout".disconnect
164159
trap cleanup EXIT
165160

166-
for i in "$ns1" "$ns2" "$ns3" "$ns4";do
167-
ip netns add $i || exit $ksft_skip
168-
ip -net $i link set lo up
169-
done
161+
mptcp_lib_ns_init ns1 ns2 ns3 ns4
170162

171163
# "$ns1" ns2 ns3 ns4
172164
# ns1eth2 ns2eth1 ns2eth3 ns3eth2 ns3eth4 ns4eth3
@@ -225,8 +217,9 @@ set_ethtool_flags() {
225217
local dev="$2"
226218
local flags="$3"
227219

228-
ip netns exec $ns ethtool -K $dev $flags 2>/dev/null
229-
[ $? -eq 0 ] && echo "INFO: set $ns dev $dev: ethtool -K $flags"
220+
if ip netns exec $ns ethtool -K $dev $flags 2>/dev/null; then
221+
echo "INFO: set $ns dev $dev: ethtool -K $flags"
222+
fi
230223
}
231224

232225
set_random_ethtool_flags() {
@@ -256,8 +249,8 @@ fi
256249

257250
check_mptcp_disabled()
258251
{
259-
local disabled_ns="ns_disabled-$rndh"
260-
ip netns add ${disabled_ns} || exit $ksft_skip
252+
local disabled_ns
253+
mptcp_lib_ns_init disabled_ns
261254

262255
# net.mptcp.enabled should be enabled by default
263256
if [ "$(ip netns exec ${disabled_ns} sysctl net.mptcp.enabled | awk '{ print $3 }')" -ne 1 ]; then
@@ -271,7 +264,7 @@ check_mptcp_disabled()
271264
local err=0
272265
LC_ALL=C ip netns exec ${disabled_ns} ./mptcp_connect -p 10000 -s MPTCP 127.0.0.1 < "$cin" 2>&1 | \
273266
grep -q "^socket: Protocol not available$" && err=1
274-
ip netns delete ${disabled_ns}
267+
mptcp_lib_ns_exit "${disabled_ns}"
275268

276269
if [ ${err} -eq 0 ]; then
277270
echo -e "New MPTCP socket cannot be blocked via sysctl\t\t[ FAIL ]"
@@ -321,7 +314,7 @@ do_transfer()
321314
local extra_args="$7"
322315

323316
local port
324-
port=$((10000+$TEST_COUNT))
317+
port=$((10000+TEST_COUNT))
325318
TEST_COUNT=$((TEST_COUNT+1))
326319

327320
if [ "$rcvbuf" -gt 0 ]; then
@@ -353,6 +346,7 @@ do_transfer()
353346

354347
if $capture; then
355348
local capuser
349+
local rndh="${connector_ns:4}"
356350
if [ -z $SUDO_USER ] ; then
357351
capuser=""
358352
else
@@ -378,12 +372,18 @@ do_transfer()
378372
nstat -n
379373
fi
380374

381-
local stat_synrx_last_l=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableSYNRX")
382-
local stat_ackrx_last_l=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableACKRX")
383-
local stat_cookietx_last=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSyncookiesSent")
384-
local stat_cookierx_last=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSyncookiesRecv")
385-
local stat_csum_err_s=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtDataCsumErr")
386-
local stat_csum_err_c=$(mptcp_lib_get_counter "${connector_ns}" "MPTcpExtDataCsumErr")
375+
local stat_synrx_last_l
376+
local stat_ackrx_last_l
377+
local stat_cookietx_last
378+
local stat_cookierx_last
379+
local stat_csum_err_s
380+
local stat_csum_err_c
381+
stat_synrx_last_l=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableSYNRX")
382+
stat_ackrx_last_l=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableACKRX")
383+
stat_cookietx_last=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSyncookiesSent")
384+
stat_cookierx_last=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSyncookiesRecv")
385+
stat_csum_err_s=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtDataCsumErr")
386+
stat_csum_err_c=$(mptcp_lib_get_counter "${connector_ns}" "MPTcpExtDataCsumErr")
387387

388388
timeout ${timeout_test} \
389389
ip netns exec ${listener_ns} \
@@ -446,11 +446,16 @@ do_transfer()
446446
mptcp_lib_check_transfer $cin $sout "file received by server"
447447
rets=$?
448448

449-
local stat_synrx_now_l=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableSYNRX")
450-
local stat_ackrx_now_l=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableACKRX")
451-
local stat_cookietx_now=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSyncookiesSent")
452-
local stat_cookierx_now=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSyncookiesRecv")
453-
local stat_ooo_now=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtTCPOFOQueue")
449+
local stat_synrx_now_l
450+
local stat_ackrx_now_l
451+
local stat_cookietx_now
452+
local stat_cookierx_now
453+
local stat_ooo_now
454+
stat_synrx_now_l=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableSYNRX")
455+
stat_ackrx_now_l=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableACKRX")
456+
stat_cookietx_now=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSyncookiesSent")
457+
stat_cookierx_now=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSyncookiesRecv")
458+
stat_ooo_now=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtTCPOFOQueue")
454459

455460
expect_synrx=$((stat_synrx_last_l))
456461
expect_ackrx=$((stat_ackrx_last_l))
@@ -459,16 +464,16 @@ do_transfer()
459464
cookies=${cookies##*=}
460465

461466
if [ ${cl_proto} = "MPTCP" ] && [ ${srv_proto} = "MPTCP" ]; then
462-
expect_synrx=$((stat_synrx_last_l+$connect_per_transfer))
463-
expect_ackrx=$((stat_ackrx_last_l+$connect_per_transfer))
467+
expect_synrx=$((stat_synrx_last_l+connect_per_transfer))
468+
expect_ackrx=$((stat_ackrx_last_l+connect_per_transfer))
464469
fi
465470

466471
if [ ${stat_synrx_now_l} -lt ${expect_synrx} ]; then
467472
printf "[ FAIL ] lower MPC SYN rx (%d) than expected (%d)\n" \
468473
"${stat_synrx_now_l}" "${expect_synrx}" 1>&2
469474
retc=1
470475
fi
471-
if [ ${stat_ackrx_now_l} -lt ${expect_ackrx} -a ${stat_ooo_now} -eq 0 ]; then
476+
if [ ${stat_ackrx_now_l} -lt ${expect_ackrx} ] && [ ${stat_ooo_now} -eq 0 ]; then
472477
if [ ${stat_ooo_now} -eq 0 ]; then
473478
printf "[ FAIL ] lower MPC ACK rx (%d) than expected (%d)\n" \
474479
"${stat_ackrx_now_l}" "${expect_ackrx}" 1>&2
@@ -479,18 +484,20 @@ do_transfer()
479484
fi
480485

481486
if $checksum; then
482-
local csum_err_s=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtDataCsumErr")
483-
local csum_err_c=$(mptcp_lib_get_counter "${connector_ns}" "MPTcpExtDataCsumErr")
487+
local csum_err_s
488+
local csum_err_c
489+
csum_err_s=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtDataCsumErr")
490+
csum_err_c=$(mptcp_lib_get_counter "${connector_ns}" "MPTcpExtDataCsumErr")
484491

485492
local csum_err_s_nr=$((csum_err_s - stat_csum_err_s))
486493
if [ $csum_err_s_nr -gt 0 ]; then
487-
printf "[ FAIL ]\nserver got $csum_err_s_nr data checksum error[s]"
494+
printf "[ FAIL ]\nserver got %d data checksum error[s]" ${csum_err_s_nr}
488495
rets=1
489496
fi
490497

491498
local csum_err_c_nr=$((csum_err_c - stat_csum_err_c))
492499
if [ $csum_err_c_nr -gt 0 ]; then
493-
printf "[ FAIL ]\nclient got $csum_err_c_nr data checksum error[s]"
500+
printf "[ FAIL ]\nclient got %d data checksum error[s]" ${csum_err_c_nr}
494501
retc=1
495502
fi
496503
fi
@@ -658,7 +665,7 @@ run_test_transparent()
658665
return
659666
fi
660667

661-
ip netns exec "$listener_ns" nft -f /dev/stdin <<"EOF"
668+
if ! ip netns exec "$listener_ns" nft -f /dev/stdin <<"EOF"
662669
flush ruleset
663670
table inet mangle {
664671
chain divert {
@@ -669,7 +676,7 @@ table inet mangle {
669676
}
670677
}
671678
EOF
672-
if [ $? -ne 0 ]; then
679+
then
673680
echo "SKIP: $msg, could not load nft ruleset"
674681
mptcp_lib_fail_if_expected_feature "nft rules"
675682
mptcp_lib_result_skip "${TEST_GROUP}"
@@ -684,17 +691,15 @@ EOF
684691
local_addr="0.0.0.0"
685692
fi
686693

687-
ip -net "$listener_ns" $r6flag rule add fwmark 1 lookup 100
688-
if [ $? -ne 0 ]; then
694+
if ! ip -net "$listener_ns" $r6flag rule add fwmark 1 lookup 100; then
689695
ip netns exec "$listener_ns" nft flush ruleset
690696
echo "SKIP: $msg, ip $r6flag rule failed"
691697
mptcp_lib_fail_if_expected_feature "ip rule"
692698
mptcp_lib_result_skip "${TEST_GROUP}"
693699
return
694700
fi
695701

696-
ip -net "$listener_ns" route add local $local_addr/0 dev lo table 100
697-
if [ $? -ne 0 ]; then
702+
if ! ip -net "$listener_ns" route add local $local_addr/0 dev lo table 100; then
698703
ip netns exec "$listener_ns" nft flush ruleset
699704
ip -net "$listener_ns" $r6flag rule del fwmark 1 lookup 100
700705
echo "SKIP: $msg, ip route add local $local_addr failed"
@@ -857,7 +862,7 @@ stop_if_error "Could not even run ping tests"
857862
echo -n "INFO: Using loss of $tc_loss "
858863
test "$tc_delay" -gt 0 && echo -n "delay $tc_delay ms "
859864

860-
reorder_delay=$(($tc_delay / 4))
865+
reorder_delay=$((tc_delay / 4))
861866

862867
if [ -z "${tc_reorder}" ]; then
863868
reorder1=$((RANDOM%10))

0 commit comments

Comments
 (0)