Merge branch 'mptcp-selftests-more-debug-in-case-of-errors'
Matthieu Baerts says: ==================== mptcp: selftests: more debug in case of errors Here are just a bunch of small improvements for the MPTCP selftests: Patch 1: Unify errors messages in simult_flows: print MIB and 'ss -Me'. Patch 2: Unify errors messages in sockopt: print MIB. Patch 3: Move common code to print debug info to mptcp_lib.sh. Patch 4: Use 'ss' with '-m' in case of errors. Patch 5: Remove an unused variable. Patch 6: Print only the size instead of size + filename again. ==================== Link: https://patch.msgid.link/20250114-net-next-mptcp-st-more-debug-err-v1-0-2ffb16a6cf35@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -137,7 +137,7 @@ TEST_GROUP=""
|
||||
#shellcheck disable=SC2317
|
||||
cleanup()
|
||||
{
|
||||
rm -f "$cin_disconnect" "$cout_disconnect"
|
||||
rm -f "$cin_disconnect"
|
||||
rm -f "$cin" "$cout"
|
||||
rm -f "$sin" "$sout"
|
||||
rm -f "$capout"
|
||||
@@ -155,7 +155,6 @@ cin=$(mktemp)
|
||||
cout=$(mktemp)
|
||||
capout=$(mktemp)
|
||||
cin_disconnect="$cin".disconnect
|
||||
cout_disconnect="$cout".disconnect
|
||||
trap cleanup EXIT
|
||||
|
||||
mptcp_lib_ns_init ns1 ns2 ns3 ns4
|
||||
@@ -445,12 +444,8 @@ do_transfer()
|
||||
printf "(duration %05sms) " "${duration}"
|
||||
if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then
|
||||
mptcp_lib_pr_fail "client exit code $retc, server $rets"
|
||||
echo -e "\nnetns ${listener_ns} socket stat for ${port}:" 1>&2
|
||||
ip netns exec ${listener_ns} ss -Menita 1>&2 -o "sport = :$port"
|
||||
cat /tmp/${listener_ns}.out
|
||||
echo -e "\nnetns ${connector_ns} socket stat for ${port}:" 1>&2
|
||||
ip netns exec ${connector_ns} ss -Menita 1>&2 -o "dport = :$port"
|
||||
[ ${listener_ns} != ${connector_ns} ] && cat /tmp/${connector_ns}.out
|
||||
mptcp_lib_pr_err_stats "${listener_ns}" "${connector_ns}" "${port}" \
|
||||
"/tmp/${listener_ns}.out" "/tmp/${connector_ns}.out"
|
||||
|
||||
echo
|
||||
cat "$capout"
|
||||
@@ -587,7 +582,7 @@ make_file()
|
||||
mptcp_lib_make_file $name 1024 $ksize
|
||||
dd if=/dev/urandom conv=notrunc of="$name" oflag=append bs=1 count=$rem 2> /dev/null
|
||||
|
||||
echo "Created $name (size $(du -b "$name")) containing data sent by $who"
|
||||
echo "Created $name (size $(stat -c "%s" "$name") B) containing data sent by $who"
|
||||
}
|
||||
|
||||
run_tests_lo()
|
||||
|
||||
@@ -1039,13 +1039,8 @@ do_transfer()
|
||||
|
||||
if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then
|
||||
fail_test "client exit code $retc, server $rets"
|
||||
echo -e "\nnetns ${listener_ns} socket stat for ${port}:" 1>&2
|
||||
ip netns exec ${listener_ns} ss -Menita 1>&2 -o "sport = :$port"
|
||||
cat /tmp/${listener_ns}.out
|
||||
echo -e "\nnetns ${connector_ns} socket stat for ${port}:" 1>&2
|
||||
ip netns exec ${connector_ns} ss -Menita 1>&2 -o "dport = :$port"
|
||||
cat /tmp/${connector_ns}.out
|
||||
|
||||
mptcp_lib_pr_err_stats "${listener_ns}" "${connector_ns}" "${port}" \
|
||||
"/tmp/${listener_ns}.out" "/tmp/${connector_ns}.out"
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
||||
@@ -107,6 +107,27 @@ mptcp_lib_pr_info() {
|
||||
mptcp_lib_print_info "INFO: ${*}"
|
||||
}
|
||||
|
||||
# $1-2: listener/connector ns ; $3 port ; $4-5 listener/connector stat file
|
||||
mptcp_lib_pr_err_stats() {
|
||||
local lns="${1}"
|
||||
local cns="${2}"
|
||||
local port="${3}"
|
||||
local lstat="${4}"
|
||||
local cstat="${5}"
|
||||
|
||||
echo -en "${MPTCP_LIB_COLOR_RED}"
|
||||
{
|
||||
printf "\nnetns %s (listener) socket stat for %d:\n" "${lns}" "${port}"
|
||||
ip netns exec "${lns}" ss -Menitam -o "sport = :${port}"
|
||||
cat "${lstat}"
|
||||
|
||||
printf "\nnetns %s (connector) socket stat for %d:\n" "${cns}" "${port}"
|
||||
ip netns exec "${cns}" ss -Menitam -o "dport = :${port}"
|
||||
[ "${lstat}" != "${cstat}" ] && cat "${cstat}"
|
||||
} 1>&2
|
||||
echo -en "${MPTCP_LIB_COLOR_RESET}"
|
||||
}
|
||||
|
||||
# SELFTESTS_MPTCP_LIB_EXPECT_ALL_FEATURES env var can be set when validating all
|
||||
# features using the last version of the kernel and the selftests to make sure
|
||||
# a test is not being skipped by mistake.
|
||||
|
||||
@@ -169,6 +169,11 @@ do_transfer()
|
||||
cmsg+=",TCPINQ"
|
||||
fi
|
||||
|
||||
NSTAT_HISTORY=/tmp/${listener_ns}.nstat ip netns exec ${listener_ns} \
|
||||
nstat -n
|
||||
NSTAT_HISTORY=/tmp/${connector_ns}.nstat ip netns exec ${connector_ns} \
|
||||
nstat -n
|
||||
|
||||
timeout ${timeout_test} \
|
||||
ip netns exec ${listener_ns} \
|
||||
$mptcp_connect -t ${timeout_poll} -l -M 1 -p $port -s ${srv_proto} -c "${cmsg}" \
|
||||
@@ -189,14 +194,16 @@ do_transfer()
|
||||
wait $spid
|
||||
local rets=$?
|
||||
|
||||
NSTAT_HISTORY=/tmp/${listener_ns}.nstat ip netns exec ${listener_ns} \
|
||||
nstat | grep Tcp > /tmp/${listener_ns}.out
|
||||
NSTAT_HISTORY=/tmp/${connector_ns}.nstat ip netns exec ${connector_ns} \
|
||||
nstat | grep Tcp > /tmp/${connector_ns}.out
|
||||
|
||||
print_title "Transfer ${ip:2}"
|
||||
if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then
|
||||
mptcp_lib_pr_fail "client exit code $retc, server $rets"
|
||||
echo -e "\nnetns ${listener_ns} socket stat for ${port}:" 1>&2
|
||||
ip netns exec ${listener_ns} ss -Menita 1>&2 -o "sport = :$port"
|
||||
|
||||
echo -e "\nnetns ${connector_ns} socket stat for ${port}:" 1>&2
|
||||
ip netns exec ${connector_ns} ss -Menita 1>&2 -o "dport = :$port"
|
||||
mptcp_lib_pr_err_stats "${listener_ns}" "${connector_ns}" "${port}" \
|
||||
"/tmp/${listener_ns}.out" "/tmp/${connector_ns}.out"
|
||||
|
||||
mptcp_lib_result_fail "transfer ${ip}"
|
||||
|
||||
|
||||
@@ -155,6 +155,11 @@ do_transfer()
|
||||
sleep 1
|
||||
fi
|
||||
|
||||
NSTAT_HISTORY=/tmp/${ns3}.nstat ip netns exec ${ns3} \
|
||||
nstat -n
|
||||
NSTAT_HISTORY=/tmp/${ns1}.nstat ip netns exec ${ns1} \
|
||||
nstat -n
|
||||
|
||||
timeout ${timeout_test} \
|
||||
ip netns exec ${ns3} \
|
||||
./mptcp_connect -jt ${timeout_poll} -l -p $port -T $max_time \
|
||||
@@ -180,25 +185,27 @@ do_transfer()
|
||||
kill ${cappid_connector}
|
||||
fi
|
||||
|
||||
NSTAT_HISTORY=/tmp/${ns3}.nstat ip netns exec ${ns3} \
|
||||
nstat | grep Tcp > /tmp/${ns3}.out
|
||||
NSTAT_HISTORY=/tmp/${ns1}.nstat ip netns exec ${ns1} \
|
||||
nstat | grep Tcp > /tmp/${ns1}.out
|
||||
|
||||
cmp $sin $cout > /dev/null 2>&1
|
||||
local cmps=$?
|
||||
cmp $cin $sout > /dev/null 2>&1
|
||||
local cmpc=$?
|
||||
|
||||
printf "%-16s" " max $max_time "
|
||||
if [ $retc -eq 0 ] && [ $rets -eq 0 ] && \
|
||||
[ $cmpc -eq 0 ] && [ $cmps -eq 0 ]; then
|
||||
printf "%-16s" " max $max_time "
|
||||
mptcp_lib_pr_ok
|
||||
cat "$capout"
|
||||
return 0
|
||||
fi
|
||||
|
||||
mptcp_lib_pr_fail
|
||||
echo "client exit code $retc, server $rets" 1>&2
|
||||
echo -e "\nnetns ${ns3} socket stat for $port:" 1>&2
|
||||
ip netns exec ${ns3} ss -nita 1>&2 -o "sport = :$port"
|
||||
echo -e "\nnetns ${ns1} socket stat for $port:" 1>&2
|
||||
ip netns exec ${ns1} ss -nita 1>&2 -o "dport = :$port"
|
||||
mptcp_lib_pr_fail "client exit code $retc, server $rets"
|
||||
mptcp_lib_pr_err_stats "${ns3}" "${ns1}" "${port}" \
|
||||
"/tmp/${ns3}.out" "/tmp/${ns1}.out"
|
||||
ls -l $sin $cout
|
||||
ls -l $cin $sout
|
||||
|
||||
|
||||
Reference in New Issue
Block a user