selftests: mptcp: join: make it shellcheck compliant

This fixes a few issues reported by ShellCheck:

- SC2068: Double quote array expansions to avoid re-splitting elements.
- SC2206: Quote to prevent word splitting/globbing, or split robustly
          with mapfile or read -a.
- SC2166: Prefer [ p ] && [ q ] as [ p -a q ] is not well defined.
- SC2155: Declare and assign separately to avoid masking return values.
- SC2162: read without -r will mangle backslashes.
- SC2219: Instead of 'let expr', prefer (( expr )) .
- SC2181: Check exit code directly with e.g. 'if mycmd;', not indirectly
          with $?.
- SC2236: Use -n instead of ! -z.
- SC2004: $/${} is unnecessary on arithmetic variables.
- SC2012: Use find instead of ls to better handle non-alphanumeric
          filenames.
- SC2002: Useless cat. Consider 'cmd < file | ..' or 'cmd file | ..'
          instead.

SC2086 (Double quotes to prevent globbing and word splitting) is ignored
because it is controlled for the moment and there are too many to
change.

While at it, also fixed the alignment in one comment.

Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Matthieu Baerts 2022-03-09 11:16:36 -08:00 committed by Jakub Kicinski
parent 4bfadd7120
commit d8d0830205

View File

@ -1,6 +1,11 @@
#!/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
ret=0
sin=""
sinfail=""
@ -76,7 +81,7 @@ init_partial()
validate_checksum=$checksum
FAILING_LINKS=""
# ns1 ns2
# ns1 ns2
# ns1eth1 ns2eth1
# ns1eth2 ns2eth2
# ns1eth3 ns2eth3
@ -288,12 +293,11 @@ check_transfer()
local in=$1
local out=$2
local what=$3
local i a b
local line
cmp -l "$in" "$out" | while read line; do
local arr=($line)
let sum=0${arr[1]}+0${arr[2]}
cmp -l "$in" "$out" | while read -r i a b; do
local sum=$((0${a} + 0${b}))
if [ $check_invert -eq 0 ] || [ $sum -ne $((0xff)) ]; then
echo "[ FAIL ] $what does not match (in, out):"
print_file_err "$in"
@ -302,7 +306,7 @@ check_transfer()
return 1
else
echo "$what has inverted byte at ${arr[0]}"
echo "$what has inverted byte at ${i}"
fi
done
@ -315,8 +319,7 @@ do_ping()
local connector_ns="$2"
local connect_addr="$3"
ip netns exec ${connector_ns} ping -q -c 1 $connect_addr >/dev/null
if [ $? -ne 0 ] ; then
if ! ip netns exec ${connector_ns} ping -q -c 1 $connect_addr >/dev/null; then
echo "$listener_ns -> $connect_addr connectivity [ FAIL ]" 1>&2
fail_test
fi
@ -423,26 +426,26 @@ pm_nl_add_endpoint()
local nr=2
local p
for p in $@
for p in "${@}"
do
if [ $p = "flags" ]; then
eval _flags=\$"$nr"
[ ! -z $_flags ]; flags="flags $_flags"
[ -n "$_flags" ]; flags="flags $_flags"
fi
if [ $p = "dev" ]; then
eval _dev=\$"$nr"
[ ! -z $_dev ]; dev="dev $_dev"
[ -n "$_dev" ]; dev="dev $_dev"
fi
if [ $p = "id" ]; then
eval _id=\$"$nr"
[ ! -z $_id ]; id="id $_id"
[ -n "$_id" ]; id="id $_id"
fi
if [ $p = "port" ]; then
eval _port=\$"$nr"
[ ! -z $_port ]; port="port $_port"
[ -n "$_port" ]; port="port $_port"
fi
let nr+=1
nr=$((nr + 1))
done
if [ $ip_mptcp -eq 1 ]; then
@ -525,18 +528,18 @@ pm_nl_check_endpoint()
while [ -n "$1" ]; do
if [ $1 = "flags" ]; then
_flags=$2
[ ! -z $_flags ]; flags="flags $_flags"
[ -n "$_flags" ]; flags="flags $_flags"
shift
elif [ $1 = "dev" ]; then
[ ! -z $2 ]; dev="dev $1"
[ -n "$2" ]; dev="dev $1"
shift
elif [ $1 = "id" ]; then
_id=$2
[ ! -z $_id ]; id="id $_id"
[ -n "$_id" ]; id="id $_id"
shift
elif [ $1 = "port" ]; then
_port=$2
[ ! -z $_port ]; port=" port $_port"
[ -n "$_port" ]; port=" port $_port"
shift
fi
@ -675,7 +678,7 @@ do_transfer()
./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \
$extra_args $connect_addr > "$cout" &
else
cat "$cinfail" | tee "$cinsent" | \
tee "$cinsent" < "$cinfail" | \
timeout ${timeout_test} \
ip netns exec ${connector_ns} \
./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \
@ -685,12 +688,13 @@ do_transfer()
# let the mptcp subflow be established in background before
# do endpoint manipulation
[ $addr_nr_ns1 = "0" -a $addr_nr_ns2 = "0" ] || sleep 1
if [ $addr_nr_ns1 != "0" ] || [ $addr_nr_ns2 != "0" ]; then
sleep 1
fi
if [ $addr_nr_ns1 -gt 0 ]; then
local counter=2
local add_nr_ns1
let add_nr_ns1=addr_nr_ns1
local add_nr_ns1=${addr_nr_ns1}
while [ $add_nr_ns1 -gt 0 ]; do
local addr
if is_v6 "${connect_addr}"; then
@ -699,21 +703,21 @@ do_transfer()
addr="10.0.$counter.1"
fi
pm_nl_add_endpoint $ns1 $addr flags signal
let counter+=1
let add_nr_ns1-=1
counter=$((counter + 1))
add_nr_ns1=$((add_nr_ns1 - 1))
done
elif [ $addr_nr_ns1 -lt 0 ]; then
local rm_nr_ns1
let rm_nr_ns1=-addr_nr_ns1
local rm_nr_ns1=$((-addr_nr_ns1))
if [ $rm_nr_ns1 -lt 8 ]; then
local counter=0
local line
pm_nl_show_endpoints ${listener_ns} | while read line; do
pm_nl_show_endpoints ${listener_ns} | while read -r line; do
# shellcheck disable=SC2206 # we do want to split per word
local arr=($line)
local nr=0
local i
for i in ${arr[@]}; do
for i in "${arr[@]}"; do
if [ $i = "id" ]; then
if [ $counter -eq $rm_nr_ns1 ]; then
break
@ -722,9 +726,9 @@ do_transfer()
rm_addr=$(rm_addr_count ${connector_ns})
pm_nl_del_endpoint ${listener_ns} $id
wait_rm_addr ${connector_ns} ${rm_addr}
let counter+=1
counter=$((counter + 1))
fi
let nr+=1
nr=$((nr + 1))
done
done
elif [ $rm_nr_ns1 -eq 8 ]; then
@ -742,11 +746,10 @@ do_transfer()
# if newly added endpoints must be deleted, give the background msk
# some time to created them
[ $addr_nr_ns1 -gt 0 -a $addr_nr_ns2 -lt 0 ] && sleep 1
[ $addr_nr_ns1 -gt 0 ] && [ $addr_nr_ns2 -lt 0 ] && sleep 1
if [ $addr_nr_ns2 -gt 0 ]; then
local add_nr_ns2
let add_nr_ns2=addr_nr_ns2
local add_nr_ns2=${addr_nr_ns2}
local counter=3
while [ $add_nr_ns2 -gt 0 ]; do
local addr
@ -756,20 +759,21 @@ do_transfer()
addr="10.0.$counter.2"
fi
pm_nl_add_endpoint $ns2 $addr flags $flags
let counter+=1
let add_nr_ns2-=1
counter=$((counter + 1))
add_nr_ns2=$((add_nr_ns2 - 1))
done
elif [ $addr_nr_ns2 -lt 0 ]; then
local rm_nr_ns2
local rm_nr_ns2=$((-addr_nr_ns2))
if [ $rm_nr_ns2 -lt 8 ]; then
local counter=0
local line
pm_nl_show_endpoints ${connector_ns} | while read line; do
pm_nl_show_endpoints ${connector_ns} | while read -r line; do
# shellcheck disable=SC2206 # we do want to split per word
local arr=($line)
local nr=0
local i
for i in ${arr[@]}; do
for i in "${arr[@]}"; do
if [ $i = "id" ]; then
if [ $counter -eq $rm_nr_ns2 ]; then
break
@ -781,9 +785,9 @@ do_transfer()
rm_addr=$(rm_addr_count ${listener_ns})
pm_nl_del_endpoint ${connector_ns} $id
wait_rm_addr ${listener_ns} ${rm_addr}
let counter+=1
counter=$((counter + 1))
fi
let nr+=1
nr=$((nr + 1))
done
done
elif [ $rm_nr_ns2 -eq 8 ]; then
@ -799,23 +803,24 @@ do_transfer()
fi
fi
if [ ! -z $sflags ]; then
if [ -n "${sflags}" ]; then
sleep 1
local netns
for netns in "$ns1" "$ns2"; do
local line
pm_nl_show_endpoints $netns | while read line; do
pm_nl_show_endpoints $netns | while read -r line; do
# shellcheck disable=SC2206 # we do want to split per word
local arr=($line)
local nr=0
local id
local i
for i in ${arr[@]}; do
for i in "${arr[@]}"; do
if [ $i = "id" ]; then
id=${arr[$nr+1]}
fi
let nr+=1
nr=$((nr + 1))
done
pm_nl_change_endpoint $netns $id $sflags
done
@ -909,14 +914,14 @@ run_tests()
make_file "$cinfail" "client" $size
# create the input file for the failure test when
# the first failure test run
elif [ "$test_linkfail" -ne 0 -a -z "$cinfail" ]; then
elif [ "$test_linkfail" -ne 0 ] && [ -z "$cinfail" ]; then
# the client file must be considerably larger
# of the maximum expected cwin value, or the
# link utilization will be not predicable
size=$((RANDOM%2))
size=$((size+1))
size=$((size*8192))
size=$((size + ( $RANDOM % 8192) ))
size=$((size + ( RANDOM % 8192) ))
cinfail=$(mktemp)
make_file "$cinfail" "client" $size
@ -929,7 +934,7 @@ run_tests()
sinfail=$(mktemp)
fi
make_file "$sinfail" "server" $size
elif [ "$test_linkfail" -eq 2 -a -z "$sinfail" ]; then
elif [ "$test_linkfail" -eq 2 ] && [ -z "$sinfail" ]; then
size=$((RANDOM%16))
size=$((size+1))
size=$((size*2048))
@ -971,8 +976,8 @@ chk_csum_nr()
printf "%-${nr_blank}s %s" " " "sum"
count=$(ip netns exec $ns1 nstat -as | grep MPTcpExtDataCsumErr | awk '{print $2}')
[ -z "$count" ] && count=0
if [ "$count" != $csum_ns1 -a $allow_multi_errors_ns1 -eq 0 ] ||
[ "$count" -lt $csum_ns1 -a $allow_multi_errors_ns1 -eq 1 ]; then
if { [ "$count" != $csum_ns1 ] && [ $allow_multi_errors_ns1 -eq 0 ]; } ||
{ [ "$count" -lt $csum_ns1 ] && [ $allow_multi_errors_ns1 -eq 1 ]; }; then
echo "[fail] got $count data checksum error[s] expected $csum_ns1"
fail_test
dump_stats=1
@ -982,8 +987,8 @@ chk_csum_nr()
echo -n " - csum "
count=$(ip netns exec $ns2 nstat -as | grep MPTcpExtDataCsumErr | awk '{print $2}')
[ -z "$count" ] && count=0
if [ "$count" != $csum_ns2 -a $allow_multi_errors_ns2 -eq 0 ] ||
[ "$count" -lt $csum_ns2 -a $allow_multi_errors_ns2 -eq 1 ]; then
if { [ "$count" != $csum_ns2 ] && [ $allow_multi_errors_ns2 -eq 0 ]; } ||
{ [ "$count" -lt $csum_ns2 ] && [ $allow_multi_errors_ns2 -eq 1 ]; }; then
echo "[fail] got $count data checksum error[s] expected $csum_ns2"
fail_test
dump_stats=1
@ -1190,8 +1195,8 @@ chk_stale_nr()
[ -z "$recover_nr" ] && recover_nr=0
if [ $stale_nr -lt $stale_min ] ||
[ $stale_max -gt 0 -a $stale_nr -gt $stale_max ] ||
[ $((stale_nr - $recover_nr)) -ne $stale_delta ]; then
{ [ $stale_max -gt 0 ] && [ $stale_nr -gt $stale_max ]; } ||
[ $((stale_nr - recover_nr)) -ne $stale_delta ]; then
echo "[fail] got $stale_nr stale[s] $recover_nr recover[s], " \
" expected stale in range [$stale_min..$stale_max]," \
" stale-recover delta $stale_delta "
@ -1230,7 +1235,7 @@ chk_add_nr()
# if the test configured a short timeout tolerate greater then expected
# add addrs options, due to retransmissions
if [ "$count" != "$add_nr" ] && [ "$timeout" -gt 1 -o "$count" -lt "$add_nr" ]; then
if [ "$count" != "$add_nr" ] && { [ "$timeout" -gt 1 ] || [ "$count" -lt "$add_nr" ]; }; then
echo "[fail] got $count ADD_ADDR[s] expected $add_nr"
fail_test
dump_stats=1
@ -1375,8 +1380,9 @@ chk_rm_nr()
count=$(ip netns exec $subflow_ns nstat -as | grep MPTcpExtRmSubflow | awk '{print $2}')
[ -z "$count" ] && count=0
if [ -n "$simult" ]; then
local cnt=$(ip netns exec $addr_ns nstat -as | grep MPTcpExtRmSubflow | awk '{print $2}')
local suffix
local cnt suffix
cnt=$(ip netns exec $addr_ns nstat -as | grep MPTcpExtRmSubflow | awk '{print $2}')
# in case of simult flush, the subflow removal count on each side is
# unreliable
@ -1447,13 +1453,13 @@ chk_link_usage()
local tx_link tx_total
tx_link=$(ip netns exec $ns cat /sys/class/net/$link/statistics/tx_bytes)
tx_total=$(ls -l $out | awk '{print $5}')
local tx_rate=$((tx_link * 100 / $tx_total))
tx_total=$(stat --format=%s $out)
local tx_rate=$((tx_link * 100 / tx_total))
local tolerance=5
printf "%-${nr_blank}s %-18s" " " "link usage"
if [ $tx_rate -lt $((expected_rate - $tolerance)) -o \
$tx_rate -gt $((expected_rate + $tolerance)) ]; then
if [ $tx_rate -lt $((expected_rate - tolerance)) ] || \
[ $tx_rate -gt $((expected_rate + tolerance)) ]; then
echo "[fail] got $tx_rate% usage, expected $expected_rate%"
fail_test
else