Merge branch 'log-clean-up-and-tap-follow-ups'

Allison Henderson says:

====================
Log clean up and TAP follow ups

This is a follow up series to the  "Log collection, TAP compliance and
cleanups" set.  The sashiko report had made some points that I thought
was worth addressing.  This patch set fixes a few more TAP compliance
prints in the check_gcov* routines.  Also since the user must now pass
in the log folder to collect logs, log clean up is tightened to only
remove rds* prefixed artifacts instead of the entire folder.  Lastly a
the signal handler alarm should be disarmed after the completes to
avoid multiple calls to the stop_pcaps routine.
====================

Link: https://patch.msgid.link/20260507233213.556182-1-achender@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Jakub Kicinski 2026-05-10 10:20:23 -07:00
commit a932458165
2 changed files with 25 additions and 13 deletions

View File

@ -35,7 +35,7 @@ GCOV_CMD=gcov
check_gcov_env()
{
if ! which "$GCOV_CMD" > /dev/null 2>&1; then
echo "Warning: Could not find gcov. "
echo "# Warning: Could not find gcov. "
GENERATE_GCOV_REPORT=0
return
fi
@ -48,7 +48,7 @@ check_gcov_env()
GCOV_CMD=gcov-$(gcc -dumpversion)
if ! which "$GCOV_CMD" > /dev/null 2>&1; then
echo "Warning: Could not find an appropriate gcov installation. \
echo "# Warning: Could not find an appropriate gcov installation. \
gcov version must match gcc version"
GENERATE_GCOV_REPORT=0
return
@ -58,11 +58,11 @@ check_gcov_env()
GCOV_VER=$($GCOV_CMD -v | grep gcov | awk '{print $3}'| \
awk 'BEGIN {FS="-"}{print $1}')
if [ "$GCOV_VER" != "$GCC_VER" ]; then
echo "Warning: Could not find an appropriate gcov installation. \
echo "# Warning: Could not find an appropriate gcov installation. \
gcov version must match gcc version"
GENERATE_GCOV_REPORT=0
else
echo "Warning: Mismatched gcc and gcov detected. Using $GCOV_CMD"
echo "# Warning: Mismatched gcc and gcov detected. Using $GCOV_CMD"
fi
fi
}
@ -71,20 +71,20 @@ check_gcov_env()
check_gcov_conf()
{
if ! grep -x "CONFIG_GCOV_PROFILE_RDS=y" "$kconfig" > /dev/null 2>&1; then
echo "INFO: CONFIG_GCOV_PROFILE_RDS should be enabled for coverage reports"
echo "# INFO: CONFIG_GCOV_PROFILE_RDS should be enabled for coverage reports"
GENERATE_GCOV_REPORT=0
fi
if ! grep -x "CONFIG_GCOV_KERNEL=y" "$kconfig" > /dev/null 2>&1; then
echo "INFO: CONFIG_GCOV_KERNEL should be enabled for coverage reports"
echo "# INFO: CONFIG_GCOV_KERNEL should be enabled for coverage reports"
GENERATE_GCOV_REPORT=0
fi
if grep -x "CONFIG_GCOV_PROFILE_ALL=y" "$kconfig" > /dev/null 2>&1; then
echo "INFO: CONFIG_GCOV_PROFILE_ALL should be disabled for coverage reports"
echo "# INFO: CONFIG_GCOV_PROFILE_ALL should be disabled for coverage reports"
GENERATE_GCOV_REPORT=0
fi
if [ "$GENERATE_GCOV_REPORT" -eq 0 ]; then
echo "To enable gcov reports, please run "\
echo "# To enable gcov reports, please run "\
"\"tools/testing/selftests/net/rds/config.sh -g\" and rebuild the kernel"
else
# if we have the required kernel configs, proceed to check the environment to
@ -189,28 +189,32 @@ check_gcov_conf
TRACE_CMD=()
if [[ -n "$LOG_DIR" ]]; then
rm -fr "$LOG_DIR"
FLAGS+=("-d" "$LOG_DIR")
TRACE_FILE="${LOG_DIR}/rds-strace.txt"
COVR_DIR="${LOG_DIR}/coverage/"
DMESG_FILE="${LOG_DIR}/rds-dmesg.out"
mkdir -p "$LOG_DIR"
mkdir -p "$COVR_DIR"
echo "#Traces will be logged to ${TRACE_FILE}"
rm -f "$TRACE_FILE"
rm -f "$DMESG_FILE"
rm -f "$LOG_DIR"/rds-*.pcap
rm -f "$COVR_DIR"/gcovr*
echo "# Traces will be logged to ${TRACE_FILE}"
TRACE_CMD=(strace -T -tt -o "${TRACE_FILE}")
fi
set +e
echo "#running RDS tests..."
echo "# running RDS tests..."
"${TRACE_CMD[@]}" python3 "$(dirname "$0")/test.py" "${FLAGS[@]}" -t "$TIMEOUT"
test_rc=$?
if [[ -n "$LOG_DIR" ]]; then
dmesg > "${LOG_DIR}/dmesg.out"
dmesg > "${DMESG_FILE}"
fi
if [[ -n "$LOG_DIR" ]] && [ "$GENERATE_GCOV_REPORT" -eq 1 ]; then

View File

@ -77,6 +77,10 @@ def stop_pcaps():
completes after the signal handler is fired. List will be empty
if logdir is not set
"""
if not tcpdump_procs:
return
ksft_pr("Stopping network packet captures")
while tcpdump_procs:
proc = tcpdump_procs.pop()
@ -151,7 +155,7 @@ tcpdump_procs = []
# Start a packet capture on each network
if logdir is not None:
for net in [NET0, NET1]:
pcap = logdir+'/'+net+'.pcap'
pcap = logdir+'/rds-'+net+'.pcap'
tcpdump_cmd = ['ip', 'netns', 'exec', net, '/usr/sbin/tcpdump']
sudo_user = os.environ.get('SUDO_USER')
@ -279,6 +283,10 @@ for s in sockets:
pass
ksft_pr(f"getsockopt(): {nr_success}/{nr_error}")
# cancel timeout
signal.alarm(0)
stop_pcaps()
# We're done sending and receiving stuff, now let's check if what