[stalld PATCH 00/23] tests: Comprehensive suite hardening and fail-fast

Wander Lairson Costa <[email protected]> Mon, 27 Apr 2026 08:16:02 -0300
Newsgroups org.kernel.vger.linux-rt-users
Message-ID <[email protected]>
The stalld functional test suite has accumulated significant
reliability and maintainability issues over time. Several tests
were silently passing due to missing assertions, shell scoping
bugs that discarded subshell results, and grep substring matches
causing false positives on multi-digit CPU systems. Additionally,
massive boilerplate duplication existed across the suite, and a
daemon bug was discovered where --force_fifo combined with
single-threaded mode silently fell back to adaptive mode instead
of erroring out.

This series addresses these issues by overhauling the test
validation logic and execution flow. It fixes the daemon's
--force_fifo fallback behavior and introduces eight shared test
helpers to eliminate duplicated validation patterns. The existing
tests are then refactored to utilize these helpers, flattening
conditional blocks and replacing verbose wait loops. Finally, the
suite is transitioned to fail-fast semantics, where any failure
immediately aborts the test run to provide immediate feedback.

As a result, approximately seven silently passing tests now
correctly validate daemon behavior. The introduction of shared
helpers and the removal of legacy C unit test infrastructure,
stale documentation, and unreachable cleanup code yields a net
reduction of roughly 9,700 lines (+626/-10325).

Wander Lairson Costa (23):
  stalld: Reject --force_fifo in single-threaded mode
  tests: Introduce test_section() helper
  tests: Introduce cleanup_scenario() helper
  tests: Introduce starvation and boost asserts
  tests: Introduce find_starved_child() helper
  tests: Fix task exit timing in test_boost_restoration
  tests: Consolidate and adopt init_functional_test()
  tests: Introduce assert_stalld_rejects() helper
  tests: Fix boost verification in runtime and duration tests
  tests: Fix subshell swallowing test results
  tests: Fix repeated log match finding same line
  chore: Remove legacy test infrastructure and stale docs
  tests: Add assertions to SCHED_OTHER restoration test
  tests: Fix CPU selection grep substring matches
  tests: Add idle CPU skipping assertion
  tests: Remove redundant pkill from cleanup
  tests: Introduce and adopt assert_log_contains() helper
  tests: Remove weak, redundant, and assertion-free test blocks
  tests: Introduce and adopt assert_success() helper
  tests: Replace wait conditionals with asserts
  tests: Remove if-wrappers around assert calls
  tests: Abort immediately on test failure
  tests: Remove dead code after making fail() fatal

 .claude/CLAUDE.md                             |  585 ---------
 .claude/agents/agent-prompt-engineer.md       |  135 --
 .claude/agents/c-expert.md                    |   53 -
 .claude/agents/code-reviewer.md               |  104 --
 .claude/agents/get-agent-hash                 |   99 --
 .claude/agents/git-scm-master.md              | 1154 -----------------
 .claude/agents/kernel-hacker.md               |  231 ----
 .claude/agents/plan-validator.md              |  130 --
 .claude/agents/project-historian.md           |  285 ----
 .claude/agents/project-librarian.md           |  604 ---------
 .claude/agents/project-manager.md             |  388 ------
 .claude/agents/project-scope-guardian.md      |  326 -----
 .claude/agents/python-expert.md               |   57 -
 .claude/agents/test-specialist.md             |  656 ----------
 .claude/agents/update-agent-hashes            |   96 --
 .claude/context-snapshot.json                 |  103 --
 .claude/rules                                 |   42 -
 .gitignore                                    |    5 +-
 src/utils.c                                   |    9 +-
 tests/BACKEND_USAGE.md                        |  269 ----
 tests/CONTEXT_SNAPSHOT_2025-10-31.md          |  231 ----
 tests/Makefile                                |   29 +-
 tests/README.md                               |   29 +-
 tests/TODO.md                                 |  727 -----------
 tests/functional/test_affinity.sh             |  154 +--
 tests/functional/test_backend_selection.sh    |   24 +-
 tests/functional/test_boost_duration.sh       |  160 +--
 tests/functional/test_boost_period.sh         |  151 +--
 tests/functional/test_boost_restoration.sh    |  306 +----
 tests/functional/test_boost_runtime.sh        |  179 +--
 tests/functional/test_cpu_selection.sh        |   76 +-
 tests/functional/test_deadline_boosting.sh    |  256 +---
 tests/functional/test_fifo_boosting.sh        |  263 +---
 .../test_fifo_priority_starvation.sh          |  188 +--
 tests/functional/test_force_fifo.sh           |  196 +--
 tests/functional/test_foreground.sh           |   58 +-
 tests/functional/test_idle_detection.sh       |  195 +--
 tests/functional/test_log_only.sh             |   26 +-
 tests/functional/test_logging_destinations.sh |   37 +-
 tests/functional/test_pidfile.sh              |  151 +--
 tests/functional/test_runqueue_parsing.sh     |  417 ------
 tests/functional/test_starvation_detection.sh |  276 +---
 tests/functional/test_starvation_threshold.sh |  133 +-
 tests/functional/test_task_merging.sh         |  146 +--
 tests/helpers/test_helpers.sh                 |  233 +++-
 tests/legacy/README.md                        |  169 ---
 tests/legacy/test01.c                         |  506 --------
 tests/legacy/test01_wrapper.sh                |  161 ---
 tests/run_tests.sh                            |  143 +-
 49 files changed, 626 insertions(+), 10325 deletions(-)
 delete mode 100644 .claude/CLAUDE.md
 delete mode 100644 .claude/agents/agent-prompt-engineer.md
 delete mode 100644 .claude/agents/c-expert.md
 delete mode 100644 .claude/agents/code-reviewer.md
 delete mode 100755 .claude/agents/get-agent-hash
 delete mode 100644 .claude/agents/git-scm-master.md
 delete mode 100644 .claude/agents/kernel-hacker.md
 delete mode 100644 .claude/agents/plan-validator.md
 delete mode 100644 .claude/agents/project-historian.md
 delete mode 100644 .claude/agents/project-librarian.md
 delete mode 100644 .claude/agents/project-manager.md
 delete mode 100644 .claude/agents/project-scope-guardian.md
 delete mode 100644 .claude/agents/python-expert.md
 delete mode 100644 .claude/agents/test-specialist.md
 delete mode 100755 .claude/agents/update-agent-hashes
 delete mode 100644 .claude/context-snapshot.json
 delete mode 100644 .claude/rules
 delete mode 100644 tests/BACKEND_USAGE.md
 delete mode 100644 tests/CONTEXT_SNAPSHOT_2025-10-31.md
 delete mode 100644 tests/TODO.md
 delete mode 100755 tests/functional/test_runqueue_parsing.sh
 delete mode 100644 tests/legacy/README.md
 delete mode 100644 tests/legacy/test01.c
 delete mode 100755 tests/legacy/test01_wrapper.sh

-- 
2.53.0