[PATCH stalld 00/36] tests: Replace timing-dependent synchronization with event-driven helpers

Wander Lairson Costa <[email protected]>
Newsgroups org.kernel.vger.linux-rt-users
Message-ID <[email protected]>
The stalld test suite relies heavily on hardcoded sleep calls for
synchronization: waiting for stalld to initialize, for starvation
to be detected, and for boosting to occur. These fixed delays make
the tests both slow (sleeping the full duration even when the event
happens instantly) and unreliable (too short on slow systems, too
long on fast ones).

This series replaces approximately 120 sleep calls across 20 test
files with event-driven helpers that return as soon as the expected
event occurs. The core mechanism is wait_for_log_message(), which
uses process substitution with tail -f to detect log patterns
instantly rather than polling. On top of this, domain-specific
helpers like wait_for_starvation_detected(), wait_for_boost_detected(),
start_starvation_gen(), and start_stalld_with_log() encapsulate
common synchronization patterns into reusable functions with proper
readiness detection and cleanup.

The series also introduces pass() and fail() helpers to standardize
test result reporting, replaces duplicated stalld invocation
boilerplate with shared helpers, and fixes several pre-existing test
bugs exposed by the tighter synchronization: invalid argument tests
that never actually failed, a multi-CPU detection grep that was too
restrictive, and FIFO fallback behavior that was incorrectly treated
as an error. A stalld source fix is included to die on invalid CPU
affinity, which was silently ignored.

Clark Williams (1):
  tests: Add pre-test and post-test cleanup of stalld processes

Wander Lairson Costa (35):
  tests/helpers: Fix stalld daemon detection in start_stalld()
  tests/helpers: Remove duplicate log() function
  tests: Add per-test runtime measurement to run_tests.sh
  tests/functional: Fix and refactor test_backend_selection.sh
  tests/functional: Fix test_logging_destinations.sh path and backend
  tests/helpers: Replace sleep with poll in start_stalld_with_log()
  tests/helpers: Fix stop_stalld() timeout and shutdown logic
  tests/helpers: Fix relative path in backend detection functions
  tests/functional: Remove redundant post-stop_stalld sleeps
  tests/functional: Fix false positive log matching in
    test_logging_destinations
  tests/helpers: Rewrite wait_for_log_message() with process
    substitution
  tests/helpers: Add wait_for_stalld_ready() and use in
    start_stalld_with_log()
  tests/helpers: Fix fractional sleep timeout bugs
  tests/helpers: Flush stdout after starvation_gen startup messages
  tests/helpers: Add start_starvation_gen() helper function
  tests/helpers: Add wait_for_starvation_detected() and
    wait_for_boost_detected()
  tests/functional: Use start_starvation_gen() helper
  tests/functional: Replace detection sleeps with event-driven helpers
  tests/functional: Remove duplicated -a flag in
    test_fifo_priority_starvation
  tests/functional: Add missing -a flag in test_starvation_detection
  tests/functional: Use start_stalld_with_log() in test_log_only
  tests/functional: Use start_stalld_with_log() in
    test_logging_destinations
  tests/functional: Use start_stalld_with_log() in test_cpu_selection
  tests/functional: Use wait_for_stalld_ready() in
    test_backend_selection
  tests/functional: Use timeout for error path in test_force_fifo
  tests/functional: Use timeout for invalid argument tests
  tests: Add pass() helper and replace assert_equals hack
  tests/functional: Use pass() for all test pass reporting
  tests: Add fail() helper and use for all test failures
  tests/helpers: Use pass()/fail() in assert functions
  tests/functional: Fix multi-CPU detection in test_starvation_detection
  tests/functional: Accept FIFO fallback in test_fifo_boosting
  tests/functional: Fix readiness detection and FIFO fallback in
    test_force_fifo
  tests/functional: Fix invalid pidfile test in test_pidfile
  stalld: die on invalid CPU affinity

 src/stalld.c                                  |   6 +-
 tests/functional/test_affinity.sh             |  43 +--
 tests/functional/test_backend_selection.sh    | 193 +++-------
 tests/functional/test_boost_duration.sh       | 118 ++----
 tests/functional/test_boost_period.sh         | 116 ++----
 tests/functional/test_boost_restoration.sh    |  79 ++--
 tests/functional/test_boost_runtime.sh        | 132 ++-----
 tests/functional/test_cpu_selection.sh        |  79 +---
 tests/functional/test_deadline_boosting.sh    | 116 +++---
 tests/functional/test_fifo_boosting.sh        | 133 +++----
 .../test_fifo_priority_starvation.sh          | 106 ++----
 tests/functional/test_force_fifo.sh           | 101 ++---
 tests/functional/test_foreground.sh           |  18 +-
 tests/functional/test_idle_detection.sh       |  40 +-
 tests/functional/test_log_only.sh             |  46 +--
 tests/functional/test_logging_destinations.sh |  51 ++-
 tests/functional/test_pidfile.sh              |  75 ++--
 tests/functional/test_runqueue_parsing.sh     | 118 +++---
 tests/functional/test_starvation_detection.sh | 136 +++----
 tests/functional/test_starvation_threshold.sh |  98 ++---
 tests/functional/test_task_merging.sh         |  69 ++--
 tests/helpers/starvation_gen.c                |   1 +
 tests/helpers/test_helpers.sh                 | 351 ++++++++++++------
 tests/run_tests.sh                            |  61 ++-
 24 files changed, 905 insertions(+), 1381 deletions(-)

-- 
2.53.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.