From: Wander Lairson Costa <wander@redhat.com>
To: williams@redhat.com, jkacur@redhat.com, linux-rt-users@vger.kernel.org
Cc: juri.lelli@redhat.com, luffyluo@tencent.com,
davidlt@rivosinc.com, Wander Lairson Costa <wander@redhat.com>
Subject: [PATCH 02/11] tests: use fail() for error paths in helpers
Date: Fri, 10 Jul 2026 10:38:01 -0300 [thread overview]
Message-ID: <20260710133810.72398-3-wander@redhat.com> (raw)
In-Reply-To: <20260710133810.72398-1-wander@redhat.com>
Replace ad-hoc error reporting in test_helpers.sh with the
framework's fail() function. Twelve call sites previously used
echo/return 1, but callers never checked the return value, so
errors were silently ignored and tests continued in a broken
state. fail() calls end_test and exit 1, which terminates the
test immediately on error.
Switch log() from echo to echo -e so the ANSI escape sequences
in the color variables are actually interpreted. Where fail()
is preceded by cleanup actions (stop_stalld, signal delivery,
log dumps), move those actions before the fail call since it
does not return.
Signed-off-by: Wander Lairson Costa <wander@redhat.com>
---
tests/helpers/test_helpers.sh | 38 ++++++++++++-----------------------
1 file changed, 13 insertions(+), 25 deletions(-)
diff --git a/tests/helpers/test_helpers.sh b/tests/helpers/test_helpers.sh
index 53de276..12b548e 100755
--- a/tests/helpers/test_helpers.sh
+++ b/tests/helpers/test_helpers.sh
@@ -45,7 +45,7 @@ log() {
local message="$*"
# Echo to stdout with timestamp
- echo "${timestamp} ${message}"
+ echo -e "${timestamp} ${message}"
# Also send to journal with stalld tag for easy correlation
# Strip ANSI color codes before sending to journal
@@ -418,8 +418,7 @@ start_stalld() {
stalld_bin="../stalld"
fi
if [ ! -x "${stalld_bin}" ]; then
- echo -e "${RED}ERROR: stalld binary not found at ${stalld_bin}${NC}"
- return 1
+ fail "stalld binary not found at ${stalld_bin}"
fi
# Parse arguments to find pidfile if specified
@@ -485,12 +484,10 @@ start_stalld() {
if [ -f "$pidfile" ]; then
STALLD_PID=$(cat "$pidfile" 2>/dev/null)
if [ -z "${STALLD_PID}" ]; then
- echo -e "${RED}ERROR: pidfile exists but is empty${NC}"
- return 1
+ fail "pidfile exists but is empty"
fi
else
- echo -e "${RED}ERROR: pidfile was not created within ${timeout} seconds${NC}"
- return 1
+ fail "pidfile was not created within ${timeout} seconds"
fi
else
# No pidfile - use pgrep with retries
@@ -540,13 +537,11 @@ start_stalld() {
# Verify we found a PID and it's running
if [ -z "${STALLD_PID}" ]; then
- echo -e "${RED}ERROR: Could not determine stalld PID${NC}"
- return 1
+ fail "could not determine stalld PID"
fi
if ! process_alive ${STALLD_PID}; then
- echo -e "${RED}ERROR: stalld PID ${STALLD_PID} is not running${NC}"
- return 1
+ fail "stalld PID ${STALLD_PID} is not running"
fi
CLEANUP_PIDS+=("${STALLD_PID}")
@@ -676,8 +671,7 @@ wait_for_log_message() {
local log_file=$3
if [ -z "${log_file}" ]; then
- echo -e "${RED}ERROR: wait_for_log_message requires a log file${NC}"
- return 1
+ fail "wait_for_log_message requires a log file"
fi
# Process substitution runs tail in the background so bash
@@ -930,8 +924,7 @@ disable_dl_server() {
echo "Disabled DL-server for ${cpu_count} CPUs"
return 0
else
- echo -e "${RED}ERROR: Failed to disable DL-server${NC}"
- return 1
+ fail "failed to disable DL-server"
fi
}
@@ -980,8 +973,7 @@ disable_rt_throttling() {
echo "Disabled RT throttling"
return 0
else
- echo -e "${RED}ERROR: Failed to disable RT throttling (need root?)${NC}"
- return 1
+ fail "failed to disable RT throttling (need root?)"
fi
else
echo -e "${YELLOW}WARNING: /proc/sys/kernel/sched_rt_runtime_us not found${NC}"
@@ -1173,9 +1165,8 @@ start_stalld_with_log() {
CLEANUP_PIDS+=("${STALLD_PID}")
if ! wait_for_stalld_ready "${log_file}" 15; then
- echo -e "${RED}ERROR: stalld did not initialize within 15s${NC}"
stop_stalld
- return 1
+ fail "stalld did not initialize within 15s"
fi
}
@@ -1272,8 +1263,7 @@ init_functional_test() {
start_starvation_gen() {
local starve_bin="${TEST_ROOT}/helpers/starvation_gen"
if [ ! -x "${starve_bin}" ]; then
- echo -e "${RED}ERROR: starvation_gen not found at ${starve_bin}${NC}"
- return 1
+ fail "starvation_gen not found at ${starve_bin}"
fi
STARVE_LOG="/tmp/stalld_starvgen_$$.log"
@@ -1293,10 +1283,9 @@ start_starvation_gen() {
local elapsed=0
while [ $elapsed -lt $timeout ]; do
if ! process_alive ${STARVE_PID}; then
- echo -e "${RED}ERROR: starvation_gen exited prematurely${NC}"
echo " Log contents:"
cat "${STARVE_LOG}"
- return 1
+ fail "starvation_gen exited prematurely"
fi
if grep -q "Press Ctrl+C to stop early" "${STARVE_LOG}" 2>/dev/null; then
echo "starvation_gen ready (PID ${STARVE_PID})"
@@ -1306,7 +1295,6 @@ start_starvation_gen() {
elapsed=$((elapsed + 1))
done
- echo -e "${RED}ERROR: starvation_gen did not become ready within ${timeout}s${NC}"
echo " Log contents:"
cat "${STARVE_LOG}"
send_signal TERM ${STARVE_PID}
@@ -1314,7 +1302,7 @@ start_starvation_gen() {
if process_alive ${STARVE_PID}; then
send_signal KILL ${STARVE_PID}
fi
- return 1
+ fail "starvation_gen did not become ready within ${timeout}s"
}
# Export functions for use in tests
--
2.55.0
next prev parent reply other threads:[~2026-07-10 13:39 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-10 13:37 [PATCH 00/11] tests: harden functional test suite against flakiness Wander Lairson Costa
2026-07-10 13:38 ` [PATCH 01/11] stalld: add readiness log marker for tests Wander Lairson Costa
2026-07-10 13:38 ` Wander Lairson Costa [this message]
2026-07-10 13:38 ` [PATCH 03/11] tests: add --verbose flag for bash trace output Wander Lairson Costa
2026-07-10 13:38 ` [PATCH 04/11] tests: drop journal logging from test framework Wander Lairson Costa
2026-07-10 13:38 ` [PATCH 05/11] tests: fix intermittent starvation_gen readiness failure Wander Lairson Costa
2026-07-10 13:38 ` [PATCH 06/11] tests: add --fail-fast flag to stop on first failure Wander Lairson Costa
2026-07-10 13:38 ` [PATCH 07/11] tests: dump log contents on assert_log_contains failure Wander Lairson Costa
2026-07-10 13:38 ` [PATCH 08/11] tests: dump log on start_stalld_with_log failure Wander Lairson Costa
2026-07-10 13:38 ` [PATCH 09/11] tests: start stalld before starvation_gen in all tests Wander Lairson Costa
2026-07-10 13:38 ` [PATCH 10/11] tests: add startup timing to stalld launch helpers Wander Lairson Costa
2026-07-10 13:38 ` [PATCH 11/11] tests: increase stalld initialization timeout to 240s Wander Lairson Costa
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260710133810.72398-3-wander@redhat.com \
--to=wander@redhat.com \
--cc=davidlt@rivosinc.com \
--cc=jkacur@redhat.com \
--cc=juri.lelli@redhat.com \
--cc=linux-rt-users@vger.kernel.org \
--cc=luffyluo@tencent.com \
--cc=williams@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.