Commit 747ba878 authored by Geliang Tang's avatar Geliang Tang Committed by Jakub Kicinski

selftests: mptcp: print test results with colors

To unify the output formats of all test scripts, this patch adds
four more helpers:

	mptcp_lib_pr_ok()
	mptcp_lib_pr_skip()
	mptcp_lib_pr_fail()
	mptcp_lib_pr_info()

to print out [ OK ], [SKIP], [FAIL] and 'INFO: ' with colors. Use them
in all scripts to print the "ok/skip/fail/info' using the same 'format'.

Having colors helps to quickly identify issues when looking at a long
list of output logs and results.

Note that now all print the same keywords, which was not the case
before, but it is good to uniform that.
Signed-off-by: default avatarGeliang Tang <tanggeliang@kylinos.cn>
Reviewed-by: default avatarMatthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: default avatarMatthieu Baerts (NGI0) <matttbe@kernel.org>
Link: https://lore.kernel.org/r/20240308-upstream-net-next-20240308-selftests-mptcp-unification-v1-9-4f42c347b653@kernel.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent e7c42bf4
...@@ -57,15 +57,15 @@ __chk_nr() ...@@ -57,15 +57,15 @@ __chk_nr()
mptcp_lib_print_title "$msg" mptcp_lib_print_title "$msg"
if [ "$nr" != "$expected" ]; then if [ "$nr" != "$expected" ]; then
if [ "$nr" = "$skip" ] && ! mptcp_lib_expect_all_features; then if [ "$nr" = "$skip" ] && ! mptcp_lib_expect_all_features; then
echo "[ skip ] Feature probably not supported" mptcp_lib_pr_skip "Feature probably not supported"
mptcp_lib_result_skip "${msg}" mptcp_lib_result_skip "${msg}"
else else
echo "[ fail ] expected $expected found $nr" mptcp_lib_pr_fail "expected $expected found $nr"
mptcp_lib_result_fail "${msg}" mptcp_lib_result_fail "${msg}"
ret=${KSFT_FAIL} ret=${KSFT_FAIL}
fi fi
else else
echo "[ ok ]" mptcp_lib_pr_ok
mptcp_lib_result_pass "${msg}" mptcp_lib_result_pass "${msg}"
fi fi
} }
...@@ -114,15 +114,15 @@ wait_msk_nr() ...@@ -114,15 +114,15 @@ wait_msk_nr()
mptcp_lib_print_title "$msg" mptcp_lib_print_title "$msg"
if [ $i -ge $timeout ]; then if [ $i -ge $timeout ]; then
echo "[ fail ] timeout while expecting $expected max $max last $nr" mptcp_lib_pr_fail "timeout while expecting $expected max $max last $nr"
mptcp_lib_result_fail "${msg} # timeout" mptcp_lib_result_fail "${msg} # timeout"
ret=${KSFT_FAIL} ret=${KSFT_FAIL}
elif [ $nr != $expected ]; then elif [ $nr != $expected ]; then
echo "[ fail ] expected $expected found $nr" mptcp_lib_pr_fail "expected $expected found $nr"
mptcp_lib_result_fail "${msg} # unexpected result" mptcp_lib_result_fail "${msg} # unexpected result"
ret=${KSFT_FAIL} ret=${KSFT_FAIL}
else else
echo "[ ok ]" mptcp_lib_pr_ok
mptcp_lib_result_pass "${msg}" mptcp_lib_result_pass "${msg}"
fi fi
} }
......
...@@ -218,7 +218,7 @@ set_ethtool_flags() { ...@@ -218,7 +218,7 @@ set_ethtool_flags() {
local flags="$3" local flags="$3"
if ip netns exec $ns ethtool -K $dev $flags 2>/dev/null; then if ip netns exec $ns ethtool -K $dev $flags 2>/dev/null; then
echo "INFO: set $ns dev $dev: ethtool -K $flags" mptcp_lib_pr_info "set $ns dev $dev: ethtool -K $flags"
fi fi
} }
...@@ -261,7 +261,7 @@ check_mptcp_disabled() ...@@ -261,7 +261,7 @@ check_mptcp_disabled()
print_larger_title "New MPTCP socket can be blocked via sysctl" print_larger_title "New MPTCP socket can be blocked via sysctl"
# net.mptcp.enabled should be enabled by default # net.mptcp.enabled should be enabled by default
if [ "$(ip netns exec ${disabled_ns} sysctl net.mptcp.enabled | awk '{ print $3 }')" -ne 1 ]; then if [ "$(ip netns exec ${disabled_ns} sysctl net.mptcp.enabled | awk '{ print $3 }')" -ne 1 ]; then
echo -e "net.mptcp.enabled sysctl is not 1 by default\t\t[ FAIL ]" mptcp_lib_pr_fail "net.mptcp.enabled sysctl is not 1 by default"
mptcp_lib_result_fail "net.mptcp.enabled sysctl is not 1 by default" mptcp_lib_result_fail "net.mptcp.enabled sysctl is not 1 by default"
ret=1 ret=1
return 1 return 1
...@@ -274,13 +274,13 @@ check_mptcp_disabled() ...@@ -274,13 +274,13 @@ check_mptcp_disabled()
mptcp_lib_ns_exit "${disabled_ns}" mptcp_lib_ns_exit "${disabled_ns}"
if [ ${err} -eq 0 ]; then if [ ${err} -eq 0 ]; then
echo -e "New MPTCP socket cannot be blocked via sysctl\t\t[ FAIL ]" mptcp_lib_pr_fail "New MPTCP socket cannot be blocked via sysctl"
mptcp_lib_result_fail "New MPTCP socket cannot be blocked via sysctl" mptcp_lib_result_fail "New MPTCP socket cannot be blocked via sysctl"
ret=1 ret=1
return 1 return 1
fi fi
echo "[ OK ]" mptcp_lib_pr_ok
mptcp_lib_result_pass "New MPTCP socket can be blocked via sysctl" mptcp_lib_result_pass "New MPTCP socket can be blocked via sysctl"
return 0 return 0
} }
...@@ -301,7 +301,7 @@ do_ping() ...@@ -301,7 +301,7 @@ do_ping()
ip netns exec ${connector_ns} ping ${ping_args} $connect_addr >/dev/null || rc=1 ip netns exec ${connector_ns} ping ${ping_args} $connect_addr >/dev/null || rc=1
if [ $rc -ne 0 ] ; then if [ $rc -ne 0 ] ; then
echo "$listener_ns -> $connect_addr connectivity [ FAIL ]" mptcp_lib_pr_fail "$listener_ns -> $connect_addr connectivity"
ret=1 ret=1
return 1 return 1
...@@ -335,7 +335,7 @@ do_transfer() ...@@ -335,7 +335,7 @@ do_transfer()
fi fi
if [ -n "$extra_args" ] && $options_log; then if [ -n "$extra_args" ] && $options_log; then
echo "INFO: extra options: $extra_args" mptcp_lib_pr_info "extra options: $extra_args"
fi fi
options_log=false options_log=false
...@@ -432,7 +432,7 @@ do_transfer() ...@@ -432,7 +432,7 @@ do_transfer()
result_msg+=" # time=${duration}ms" result_msg+=" # time=${duration}ms"
printf "(duration %05sms) " "${duration}" printf "(duration %05sms) " "${duration}"
if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then
echo "[ FAIL ] client exit code $retc, server $rets" 1>&2 mptcp_lib_pr_fail "client exit code $retc, server $rets"
echo -e "\nnetns ${listener_ns} socket stat for ${port}:" 1>&2 echo -e "\nnetns ${listener_ns} socket stat for ${port}:" 1>&2
ip netns exec ${listener_ns} ss -Menita 1>&2 -o "sport = :$port" ip netns exec ${listener_ns} ss -Menita 1>&2 -o "sport = :$port"
cat /tmp/${listener_ns}.out cat /tmp/${listener_ns}.out
...@@ -475,14 +475,14 @@ do_transfer() ...@@ -475,14 +475,14 @@ do_transfer()
fi fi
if [ ${stat_synrx_now_l} -lt ${expect_synrx} ]; then if [ ${stat_synrx_now_l} -lt ${expect_synrx} ]; then
printf "[ FAIL ] lower MPC SYN rx (%d) than expected (%d)\n" \ mptcp_lib_pr_fail "lower MPC SYN rx (${stat_synrx_now_l})" \
"${stat_synrx_now_l}" "${expect_synrx}" "than expected (${expect_synrx})"
retc=1 retc=1
fi fi
if [ ${stat_ackrx_now_l} -lt ${expect_ackrx} ] && [ ${stat_ooo_now} -eq 0 ]; then if [ ${stat_ackrx_now_l} -lt ${expect_ackrx} ] && [ ${stat_ooo_now} -eq 0 ]; then
if [ ${stat_ooo_now} -eq 0 ]; then if [ ${stat_ooo_now} -eq 0 ]; then
printf "[ FAIL ] lower MPC ACK rx (%d) than expected (%d)\n" \ mptcp_lib_pr_fail "lower MPC ACK rx (${stat_ackrx_now_l})" \
"${stat_ackrx_now_l}" "${expect_ackrx}" "than expected (${expect_ackrx})"
rets=1 rets=1
else else
extra+=" [ Note ] fallback due to TCP OoO" extra+=" [ Note ] fallback due to TCP OoO"
...@@ -497,13 +497,13 @@ do_transfer() ...@@ -497,13 +497,13 @@ do_transfer()
local csum_err_s_nr=$((csum_err_s - stat_csum_err_s)) local csum_err_s_nr=$((csum_err_s - stat_csum_err_s))
if [ $csum_err_s_nr -gt 0 ]; then if [ $csum_err_s_nr -gt 0 ]; then
printf "[ FAIL ]\nserver got %d data checksum error[s]" ${csum_err_s_nr} mptcp_lib_pr_fail "server got ${csum_err_s_nr} data checksum error[s]"
rets=1 rets=1
fi fi
local csum_err_c_nr=$((csum_err_c - stat_csum_err_c)) local csum_err_c_nr=$((csum_err_c - stat_csum_err_c))
if [ $csum_err_c_nr -gt 0 ]; then if [ $csum_err_c_nr -gt 0 ]; then
printf "[ FAIL ]\nclient got %d data checksum error[s]" ${csum_err_c_nr} mptcp_lib_pr_fail "client got ${csum_err_c_nr} data checksum error[s]"
retc=1 retc=1
fi fi
fi fi
...@@ -534,11 +534,11 @@ do_transfer() ...@@ -534,11 +534,11 @@ do_transfer()
fi fi
if [ $retc -eq 0 ] && [ $rets -eq 0 ]; then if [ $retc -eq 0 ] && [ $rets -eq 0 ]; then
printf "[ OK ]%s\n" "${extra:1}" mptcp_lib_pr_ok "${extra:1}"
mptcp_lib_result_pass "${TEST_GROUP}: ${result_msg}" mptcp_lib_result_pass "${TEST_GROUP}: ${result_msg}"
else else
if [ -n "${extra}" ]; then if [ -n "${extra}" ]; then
printf "%s\n" "${extra:1}" mptcp_lib_print_warn "${extra:1}"
fi fi
mptcp_lib_result_fail "${TEST_GROUP}: ${result_msg}" mptcp_lib_result_fail "${TEST_GROUP}: ${result_msg}"
fi fi
...@@ -668,7 +668,7 @@ run_test_transparent() ...@@ -668,7 +668,7 @@ run_test_transparent()
# following function has been exported (T). Not great but better than # following function has been exported (T). Not great but better than
# checking for a specific kernel version. # checking for a specific kernel version.
if ! mptcp_lib_kallsyms_has "T __ip_sock_set_tos$"; then if ! mptcp_lib_kallsyms_has "T __ip_sock_set_tos$"; then
echo "INFO: ${msg} not supported by the kernel: SKIP" mptcp_lib_pr_skip "${msg} not supported by the kernel"
mptcp_lib_result_skip "${TEST_GROUP}" mptcp_lib_result_skip "${TEST_GROUP}"
return return
fi fi
...@@ -685,7 +685,7 @@ table inet mangle { ...@@ -685,7 +685,7 @@ table inet mangle {
} }
EOF EOF
then then
echo "SKIP: $msg, could not load nft ruleset" mptcp_lib_pr_skip "$msg, could not load nft ruleset"
mptcp_lib_fail_if_expected_feature "nft rules" mptcp_lib_fail_if_expected_feature "nft rules"
mptcp_lib_result_skip "${TEST_GROUP}" mptcp_lib_result_skip "${TEST_GROUP}"
return return
...@@ -701,7 +701,7 @@ EOF ...@@ -701,7 +701,7 @@ EOF
if ! ip -net "$listener_ns" $r6flag rule add fwmark 1 lookup 100; then if ! ip -net "$listener_ns" $r6flag rule add fwmark 1 lookup 100; then
ip netns exec "$listener_ns" nft flush ruleset ip netns exec "$listener_ns" nft flush ruleset
echo "SKIP: $msg, ip $r6flag rule failed" mptcp_lib_pr_skip "$msg, ip $r6flag rule failed"
mptcp_lib_fail_if_expected_feature "ip rule" mptcp_lib_fail_if_expected_feature "ip rule"
mptcp_lib_result_skip "${TEST_GROUP}" mptcp_lib_result_skip "${TEST_GROUP}"
return return
...@@ -710,13 +710,13 @@ EOF ...@@ -710,13 +710,13 @@ EOF
if ! ip -net "$listener_ns" route add local $local_addr/0 dev lo table 100; then if ! ip -net "$listener_ns" route add local $local_addr/0 dev lo table 100; then
ip netns exec "$listener_ns" nft flush ruleset ip netns exec "$listener_ns" nft flush ruleset
ip -net "$listener_ns" $r6flag rule del fwmark 1 lookup 100 ip -net "$listener_ns" $r6flag rule del fwmark 1 lookup 100
echo "SKIP: $msg, ip route add local $local_addr failed" mptcp_lib_pr_skip "$msg, ip route add local $local_addr failed"
mptcp_lib_fail_if_expected_feature "ip route" mptcp_lib_fail_if_expected_feature "ip route"
mptcp_lib_result_skip "${TEST_GROUP}" mptcp_lib_result_skip "${TEST_GROUP}"
return return
fi fi
echo "INFO: test $msg" mptcp_lib_pr_info "test $msg"
port=$((20000 - 1)) port=$((20000 - 1))
local extra_args="-o TRANSPARENT" local extra_args="-o TRANSPARENT"
...@@ -729,12 +729,12 @@ EOF ...@@ -729,12 +729,12 @@ EOF
ip -net "$listener_ns" route del local $local_addr/0 dev lo table 100 ip -net "$listener_ns" route del local $local_addr/0 dev lo table 100
if [ $lret -ne 0 ]; then if [ $lret -ne 0 ]; then
echo "FAIL: $msg, mptcp connection error" mptcp_lib_pr_fail "$msg, mptcp connection error"
ret=$lret ret=$lret
return 1 return 1
fi fi
echo "PASS: $msg" mptcp_lib_pr_info "$msg pass"
return 0 return 0
} }
...@@ -743,7 +743,7 @@ run_tests_peekmode() ...@@ -743,7 +743,7 @@ run_tests_peekmode()
local peekmode="$1" local peekmode="$1"
TEST_GROUP="peek mode: ${peekmode}" TEST_GROUP="peek mode: ${peekmode}"
echo "INFO: with peek mode: ${peekmode}" mptcp_lib_pr_info "with peek mode: ${peekmode}"
run_tests_lo "$ns1" "$ns1" 10.0.1.1 1 "-P ${peekmode}" run_tests_lo "$ns1" "$ns1" 10.0.1.1 1 "-P ${peekmode}"
run_tests_lo "$ns1" "$ns1" dead:beef:1::1 1 "-P ${peekmode}" run_tests_lo "$ns1" "$ns1" dead:beef:1::1 1 "-P ${peekmode}"
} }
...@@ -753,12 +753,12 @@ run_tests_mptfo() ...@@ -753,12 +753,12 @@ run_tests_mptfo()
TEST_GROUP="MPTFO" TEST_GROUP="MPTFO"
if ! mptcp_lib_kallsyms_has "mptcp_fastopen_"; then if ! mptcp_lib_kallsyms_has "mptcp_fastopen_"; then
echo "INFO: TFO not supported by the kernel: SKIP" mptcp_lib_pr_skip "TFO not supported by the kernel"
mptcp_lib_result_skip "${TEST_GROUP}" mptcp_lib_result_skip "${TEST_GROUP}"
return return
fi fi
echo "INFO: with MPTFO start" mptcp_lib_pr_info "with MPTFO start"
ip netns exec "$ns1" sysctl -q net.ipv4.tcp_fastopen=2 ip netns exec "$ns1" sysctl -q net.ipv4.tcp_fastopen=2
ip netns exec "$ns2" sysctl -q net.ipv4.tcp_fastopen=1 ip netns exec "$ns2" sysctl -q net.ipv4.tcp_fastopen=1
...@@ -770,7 +770,7 @@ run_tests_mptfo() ...@@ -770,7 +770,7 @@ run_tests_mptfo()
ip netns exec "$ns1" sysctl -q net.ipv4.tcp_fastopen=0 ip netns exec "$ns1" sysctl -q net.ipv4.tcp_fastopen=0
ip netns exec "$ns2" sysctl -q net.ipv4.tcp_fastopen=0 ip netns exec "$ns2" sysctl -q net.ipv4.tcp_fastopen=0
echo "INFO: with MPTFO end" mptcp_lib_pr_info "with MPTFO end"
} }
run_tests_disconnect() run_tests_disconnect()
...@@ -781,7 +781,7 @@ run_tests_disconnect() ...@@ -781,7 +781,7 @@ run_tests_disconnect()
TEST_GROUP="full disconnect" TEST_GROUP="full disconnect"
if ! mptcp_lib_kallsyms_has "mptcp_pm_data_reset$"; then if ! mptcp_lib_kallsyms_has "mptcp_pm_data_reset$"; then
echo "INFO: Full disconnect not supported: SKIP" mptcp_lib_pr_skip "Full disconnect not supported"
mptcp_lib_result_skip "${TEST_GROUP}" mptcp_lib_result_skip "${TEST_GROUP}"
return return
fi fi
...@@ -794,7 +794,7 @@ run_tests_disconnect() ...@@ -794,7 +794,7 @@ run_tests_disconnect()
cin_disconnect="$old_cin" cin_disconnect="$old_cin"
connect_per_transfer=3 connect_per_transfer=3
echo "INFO: disconnect" mptcp_lib_pr_info "disconnect"
run_tests_lo "$ns1" "$ns1" 10.0.1.1 1 "-I 3 -i $old_cin" run_tests_lo "$ns1" "$ns1" 10.0.1.1 1 "-I 3 -i $old_cin"
run_tests_lo "$ns1" "$ns1" dead:beef:1::1 1 "-I 3 -i $old_cin" run_tests_lo "$ns1" "$ns1" dead:beef:1::1 1 "-I 3 -i $old_cin"
...@@ -818,7 +818,7 @@ log_if_error() ...@@ -818,7 +818,7 @@ log_if_error()
local msg="$1" local msg="$1"
if [ ${ret} -ne 0 ]; then if [ ${ret} -ne 0 ]; then
echo "FAIL: ${msg}" mptcp_lib_pr_fail "${msg}"
final_ret=${ret} final_ret=${ret}
ret=0 ret=0
...@@ -865,7 +865,7 @@ done ...@@ -865,7 +865,7 @@ done
mptcp_lib_result_code "${ret}" "ping tests" mptcp_lib_result_code "${ret}" "ping tests"
stop_if_error "Could not even run ping tests" stop_if_error "Could not even run ping tests"
echo "[ OK ]" mptcp_lib_pr_ok
[ -n "$tc_loss" ] && tc -net "$ns2" qdisc add dev ns2eth3 root netem loss random $tc_loss delay ${tc_delay}ms [ -n "$tc_loss" ] && tc -net "$ns2" qdisc add dev ns2eth3 root netem loss random $tc_loss delay ${tc_delay}ms
tc_info="loss of $tc_loss " tc_info="loss of $tc_loss "
...@@ -890,7 +890,7 @@ elif [ "$reorder_delay" -gt 0 ];then ...@@ -890,7 +890,7 @@ elif [ "$reorder_delay" -gt 0 ];then
tc_info+="$tc_reorder with delay ${reorder_delay}ms " tc_info+="$tc_reorder with delay ${reorder_delay}ms "
fi fi
echo "INFO: Using ${tc_info}on ns3eth4" mptcp_lib_pr_info "Using ${tc_info}on ns3eth4"
tc -net "$ns3" qdisc add dev ns3eth4 root netem delay ${reorder_delay}ms $tc_reorder tc -net "$ns3" qdisc add dev ns3eth4 root netem delay ${reorder_delay}ms $tc_reorder
......
...@@ -185,17 +185,17 @@ print_info() ...@@ -185,17 +185,17 @@ print_info()
print_ok() print_ok()
{ {
mptcp_lib_print_ok "[ ok ]${1:+ ${*}}" mptcp_lib_pr_ok "${@}"
} }
print_fail() print_fail()
{ {
mptcp_lib_print_err "[fail]${1:+ ${*}}" mptcp_lib_pr_fail "${@}"
} }
print_skip() print_skip()
{ {
mptcp_lib_print_warn "[skip]${1:+ ${*}}" mptcp_lib_pr_skip "${@}"
} }
# [ $1: fail msg ] # [ $1: fail msg ]
......
...@@ -50,6 +50,23 @@ mptcp_lib_print_err() { ...@@ -50,6 +50,23 @@ mptcp_lib_print_err() {
mptcp_lib_print_color "${MPTCP_LIB_COLOR_RED}${*}" mptcp_lib_print_color "${MPTCP_LIB_COLOR_RED}${*}"
} }
# shellcheck disable=SC2120 # parameters are optional
mptcp_lib_pr_ok() {
mptcp_lib_print_ok "[ OK ]${1:+ ${*}}"
}
mptcp_lib_pr_skip() {
mptcp_lib_print_warn "[SKIP]${1:+ ${*}}"
}
mptcp_lib_pr_fail() {
mptcp_lib_print_err "[FAIL]${1:+ ${*}}"
}
mptcp_lib_pr_info() {
mptcp_lib_print_info "INFO: ${*}"
}
# SELFTESTS_MPTCP_LIB_EXPECT_ALL_FEATURES env var can be set when validating all # 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 # features using the last version of the kernel and the selftests to make sure
# a test is not being skipped by mistake. # a test is not being skipped by mistake.
...@@ -80,14 +97,14 @@ mptcp_lib_has_file() { ...@@ -80,14 +97,14 @@ mptcp_lib_has_file() {
mptcp_lib_check_mptcp() { mptcp_lib_check_mptcp() {
if ! mptcp_lib_has_file "/proc/sys/net/mptcp/enabled"; then if ! mptcp_lib_has_file "/proc/sys/net/mptcp/enabled"; then
echo "SKIP: MPTCP support is not available" mptcp_lib_pr_skip "MPTCP support is not available"
exit ${KSFT_SKIP} exit ${KSFT_SKIP}
fi fi
} }
mptcp_lib_check_kallsyms() { mptcp_lib_check_kallsyms() {
if ! mptcp_lib_has_file "/proc/kallsyms"; then if ! mptcp_lib_has_file "/proc/kallsyms"; then
echo "SKIP: CONFIG_KALLSYMS is missing" mptcp_lib_pr_skip "CONFIG_KALLSYMS is missing"
exit ${KSFT_SKIP} exit ${KSFT_SKIP}
fi fi
} }
...@@ -294,7 +311,7 @@ mptcp_lib_check_transfer() { ...@@ -294,7 +311,7 @@ mptcp_lib_check_transfer() {
local what="${3}" local what="${3}"
if ! cmp "$in" "$out" > /dev/null 2>&1; then if ! cmp "$in" "$out" > /dev/null 2>&1; then
echo "[ FAIL ] $what does not match (in, out):" mptcp_lib_pr_fail "$what does not match (in, out):"
mptcp_lib_print_file_err "$in" mptcp_lib_print_file_err "$in"
mptcp_lib_print_file_err "$out" mptcp_lib_print_file_err "$out"
...@@ -334,13 +351,13 @@ mptcp_lib_check_output() { ...@@ -334,13 +351,13 @@ mptcp_lib_check_output() {
fi fi
if [ ${cmd_ret} -ne 0 ]; then if [ ${cmd_ret} -ne 0 ]; then
mptcp_lib_print_err "[FAIL] command execution '${cmd}' stderr" mptcp_lib_pr_fail "command execution '${cmd}' stderr"
cat "${err}" cat "${err}"
return 2 return 2
elif [ "${out}" = "${expected}" ]; then elif [ "${out}" = "${expected}" ]; then
return 0 return 0
else else
mptcp_lib_print_err "[FAIL] expected '${expected}' got '${out}'" mptcp_lib_pr_fail "expected '${expected}' got '${out}'"
return 1 return 1
fi fi
} }
...@@ -352,29 +369,30 @@ mptcp_lib_check_tools() { ...@@ -352,29 +369,30 @@ mptcp_lib_check_tools() {
case "${tool}" in case "${tool}" in
"ip") "ip")
if ! ip -Version &> /dev/null; then if ! ip -Version &> /dev/null; then
mptcp_lib_print_warn "SKIP: Could not run test without ip tool" mptcp_lib_pr_skip "Could not run test without ip tool"
exit ${KSFT_SKIP} exit ${KSFT_SKIP}
fi fi
;; ;;
"ss") "ss")
if ! ss -h | grep -q MPTCP; then if ! ss -h | grep -q MPTCP; then
mptcp_lib_print_warn "SKIP: ss tool does not support MPTCP" mptcp_lib_pr_skip "ss tool does not support MPTCP"
exit ${KSFT_SKIP} exit ${KSFT_SKIP}
fi fi
;; ;;
"iptables"* | "ip6tables"*) "iptables"* | "ip6tables"*)
if ! "${tool}" -V &> /dev/null; then if ! "${tool}" -V &> /dev/null; then
mptcp_lib_print_warn "SKIP: Could not run all tests without ${tool}" mptcp_lib_pr_skip "Could not run all tests without ${tool}"
exit ${KSFT_SKIP} exit ${KSFT_SKIP}
fi fi
;; ;;
*) *)
mptcp_lib_print_err "Internal error: unsupported tool: ${tool}" mptcp_lib_pr_fail "Internal error: unsupported tool: ${tool}"
exit ${KSFT_FAIL} exit ${KSFT_FAIL}
;; ;;
esac esac
done done
} }
mptcp_lib_ns_init() { mptcp_lib_ns_init() {
local sec rndh local sec rndh
......
...@@ -103,7 +103,7 @@ check_mark() ...@@ -103,7 +103,7 @@ check_mark()
local v local v
for v in $values; do for v in $values; do
if [ $v -ne 0 ]; then if [ $v -ne 0 ]; then
echo "FAIL: got $tables $values in ns $ns," \ mptcp_lib_pr_fail "got $tables $values in ns $ns," \
"not 0 - not all expected packets marked" "not 0 - not all expected packets marked"
ret=1 ret=1
return 1 return 1
...@@ -169,7 +169,7 @@ do_transfer() ...@@ -169,7 +169,7 @@ do_transfer()
print_title "Transfer ${ip:2}" print_title "Transfer ${ip:2}"
if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then
echo "[FAIL] client exit code $retc, server $rets" mptcp_lib_pr_fail "client exit code $retc, server $rets"
echo -e "\nnetns ${listener_ns} socket stat for ${port}:" 1>&2 echo -e "\nnetns ${listener_ns} socket stat for ${port}:" 1>&2
ip netns exec ${listener_ns} ss -Menita 1>&2 -o "sport = :$port" ip netns exec ${listener_ns} ss -Menita 1>&2 -o "sport = :$port"
...@@ -184,7 +184,7 @@ do_transfer() ...@@ -184,7 +184,7 @@ do_transfer()
if ! mptcp_lib_check_transfer $cin $sout "file received by server"; then if ! mptcp_lib_check_transfer $cin $sout "file received by server"; then
rets=1 rets=1
else else
echo "[ OK ]" mptcp_lib_pr_ok
fi fi
mptcp_lib_result_code "${rets}" "transfer ${ip}" mptcp_lib_result_code "${rets}" "transfer ${ip}"
...@@ -200,10 +200,10 @@ do_transfer() ...@@ -200,10 +200,10 @@ do_transfer()
mptcp_lib_result_code "${retc}" "mark ${ip}" mptcp_lib_result_code "${retc}" "mark ${ip}"
if [ $retc -eq 0 ] && [ $rets -eq 0 ];then if [ $retc -eq 0 ] && [ $rets -eq 0 ];then
echo "[ OK ]" mptcp_lib_pr_ok
return 0 return 0
fi fi
echo "[FAIL]" mptcp_lib_pr_fail
return 1 return 1
} }
...@@ -224,7 +224,7 @@ do_mptcp_sockopt_tests() ...@@ -224,7 +224,7 @@ do_mptcp_sockopt_tests()
local lret=0 local lret=0
if ! mptcp_lib_kallsyms_has "mptcp_diag_fill_info$"; then if ! mptcp_lib_kallsyms_has "mptcp_diag_fill_info$"; then
echo "INFO: MPTCP sockopt not supported: SKIP" mptcp_lib_pr_skip "MPTCP sockopt not supported"
mptcp_lib_result_skip "sockopt" mptcp_lib_result_skip "sockopt"
return return
fi fi
...@@ -234,12 +234,12 @@ do_mptcp_sockopt_tests() ...@@ -234,12 +234,12 @@ do_mptcp_sockopt_tests()
print_title "SOL_MPTCP sockopt v4" print_title "SOL_MPTCP sockopt v4"
if [ $lret -ne 0 ]; then if [ $lret -ne 0 ]; then
echo "[FAIL]" mptcp_lib_pr_fail
mptcp_lib_result_fail "sockopt v4" mptcp_lib_result_fail "sockopt v4"
ret=$lret ret=$lret
return return
fi fi
echo "[ OK ]" mptcp_lib_pr_ok
mptcp_lib_result_pass "sockopt v4" mptcp_lib_result_pass "sockopt v4"
ip netns exec "$ns_sbox" ./mptcp_sockopt -6 ip netns exec "$ns_sbox" ./mptcp_sockopt -6
...@@ -247,12 +247,12 @@ do_mptcp_sockopt_tests() ...@@ -247,12 +247,12 @@ do_mptcp_sockopt_tests()
print_title "SOL_MPTCP sockopt v6" print_title "SOL_MPTCP sockopt v6"
if [ $lret -ne 0 ]; then if [ $lret -ne 0 ]; then
echo "[FAIL]" mptcp_lib_pr_fail
mptcp_lib_result_fail "sockopt v6" mptcp_lib_result_fail "sockopt v6"
ret=$lret ret=$lret
return return
fi fi
echo "[ OK ]" mptcp_lib_pr_ok
mptcp_lib_result_pass "sockopt v6" mptcp_lib_result_pass "sockopt v6"
} }
...@@ -280,12 +280,12 @@ do_tcpinq_test() ...@@ -280,12 +280,12 @@ do_tcpinq_test()
local lret=$? local lret=$?
if [ $lret -ne 0 ];then if [ $lret -ne 0 ];then
ret=$lret ret=$lret
echo "[FAIL]" mptcp_lib_pr_fail
mptcp_lib_result_fail "TCP_INQ: $*" mptcp_lib_result_fail "TCP_INQ: $*"
return $lret return $lret
fi fi
echo "[ OK ]" mptcp_lib_pr_ok
mptcp_lib_result_pass "TCP_INQ: $*" mptcp_lib_result_pass "TCP_INQ: $*"
return $lret return $lret
} }
...@@ -295,7 +295,7 @@ do_tcpinq_tests() ...@@ -295,7 +295,7 @@ do_tcpinq_tests()
local lret=0 local lret=0
if ! mptcp_lib_kallsyms_has "mptcp_ioctl$"; then if ! mptcp_lib_kallsyms_has "mptcp_ioctl$"; then
echo "INFO: TCP_INQ not supported: SKIP" mptcp_lib_pr_skip "TCP_INQ not supported"
mptcp_lib_result_skip "TCP_INQ" mptcp_lib_result_skip "TCP_INQ"
return return
fi fi
......
...@@ -190,7 +190,7 @@ else ...@@ -190,7 +190,7 @@ else
for st in fullmesh nofullmesh backup,fullmesh; do for st in fullmesh nofullmesh backup,fullmesh; do
st=" (${st})" st=" (${st})"
mptcp_lib_print_title "${st}" mptcp_lib_print_title "${st}"
echo "[SKIP]" mptcp_lib_pr_skip
mptcp_lib_result_skip "${st}" mptcp_lib_result_skip "${st}"
done done
fi fi
......
...@@ -187,12 +187,12 @@ do_transfer() ...@@ -187,12 +187,12 @@ do_transfer()
printf "%-16s" " max $max_time " printf "%-16s" " max $max_time "
if [ $retc -eq 0 ] && [ $rets -eq 0 ] && \ if [ $retc -eq 0 ] && [ $rets -eq 0 ] && \
[ $cmpc -eq 0 ] && [ $cmps -eq 0 ]; then [ $cmpc -eq 0 ] && [ $cmps -eq 0 ]; then
echo "[ OK ]" mptcp_lib_pr_ok
cat "$capout" cat "$capout"
return 0 return 0
fi fi
echo " [ fail ]" mptcp_lib_pr_fail
echo "client exit code $retc, server $rets" 1>&2 echo "client exit code $retc, server $rets" 1>&2
echo -e "\nnetns ${ns3} socket stat for $port:" 1>&2 echo -e "\nnetns ${ns3} socket stat for $port:" 1>&2
ip netns exec ${ns3} ss -nita 1>&2 -o "sport = :$port" ip netns exec ${ns3} ss -nita 1>&2 -o "sport = :$port"
......
...@@ -57,13 +57,9 @@ test_name="" ...@@ -57,13 +57,9 @@ test_name=""
# a bit more space: because we have more to display # a bit more space: because we have more to display
MPTCP_LIB_TEST_FORMAT="%02u %-68s" MPTCP_LIB_TEST_FORMAT="%02u %-68s"
_printf() {
stdbuf -o0 -e0 printf "${@}"
}
print_title() print_title()
{ {
_printf "INFO: %s\n" "${1}" mptcp_lib_pr_info "${1}"
} }
# $1: test name # $1: test name
...@@ -74,33 +70,23 @@ print_test() ...@@ -74,33 +70,23 @@ print_test()
mptcp_lib_print_title "${test_name}" mptcp_lib_print_title "${test_name}"
} }
print_results()
{
_printf "[%s]\n" "${1}"
}
test_pass() test_pass()
{ {
print_results " OK " mptcp_lib_pr_ok
mptcp_lib_result_pass "${test_name}" mptcp_lib_result_pass "${test_name}"
} }
test_skip() test_skip()
{ {
print_results "SKIP" mptcp_lib_pr_skip
mptcp_lib_result_skip "${test_name}" mptcp_lib_result_skip "${test_name}"
} }
# $1: msg # $1: msg
test_fail() test_fail()
{ {
print_results "FAIL" mptcp_lib_pr_fail "${@}"
ret=1 ret=1
if [ -n "${1}" ]; then
_printf "\t%s\n" "${1}"
fi
mptcp_lib_result_fail "${test_name}" mptcp_lib_result_fail "${test_name}"
} }
...@@ -122,7 +108,7 @@ cleanup() ...@@ -122,7 +108,7 @@ cleanup()
rm -rf $file $client_evts $server_evts rm -rf $file $client_evts $server_evts
_printf "Done\n" mptcp_lib_pr_info "Done"
} }
trap cleanup EXIT trap cleanup EXIT
...@@ -256,8 +242,7 @@ check_expected_one() ...@@ -256,8 +242,7 @@ check_expected_one()
test_fail test_fail
fi fi
_printf "\tExpected value for '%s': '%s', got '%s'.\n" \ mptcp_lib_print_err "\tExpected value for '${var}': '${!exp}', got '${!var}'."
"${var}" "${!exp}" "${!var}"
return 1 return 1
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment