[PATCH 0/9] rteval: Fix measurement module hangs and improve test infrastructure

John Kacur <[email protected]> Tue, 5 May 2026 13:43:44 -0400
Newsgroups org.kernel.vger.linux-rt-users
Message-ID <[email protected]>
This series addresses critical bug fixes in measurement module error handling
and significantly improves rteval's test infrastructure.

Patches 1-2: Critical bug fixes for measurement modules
  Fix hangs in timerlat and cyclictest when measurement tools crash or produce
  malformed output. Both modules now properly handle partial output, limit
  SIGINT retries, and ensure cleanup always completes.

Patches 3-5: Testing and configuration improvements
  Add comprehensive regression tests to verify error handling fixes, update
  config files for clarity, and fix e2e test patterns to match current output.

Patches 6-9: Test infrastructure organization
  Refactor and consolidate all tests under tests/ directory with consistent
  naming (unit-tests, e2e-tests, regression-tests, cpuset-tests). Move cpuset
  tests from local/ to tests/cpusets/ with comprehensive documentation.

Key improvements:
- Prevents rteval hangs when measurement tools crash (RHEL-140898, RHEL-172903)
- Adds regression tests with mocked failure scenarios
- Consolidates test infrastructure under tests/ directory
- Provides consistent Makefile targets for all test types
- Includes comprehensive test documentation


John Kacur (9):
  rteval: Fix timerlat error handling to prevent hangs
  rteval: Fix cyclictest error handling to prevent hangs
  rteval: Update config files to clarify measurement module selection
  rteval: Add regression tests for measurement module error handling
  rteval: Fix e2e test patterns for current rteval behavior
  rteval: Refactor core sharing validation test into proper unittest
  rteval: Rename unittest target to unit-tests for consistency
  rteval: Organize cpuset tests and make core sharing tests skip
    gracefully
  rteval: Move run_tests.sh to tests/ and remove obsolete test scripts

 Makefile                                      |  54 +-
 rteval.conf                                   |   5 +-
 rteval/modules/measurement/cyclictest.py      | 124 +--
 rteval/modules/measurement/timerlat.py        | 318 ++++----
 rteval/rteval.conf                            |  12 +
 test_full_validation.py                       | 151 ----
 tests/cpusets/README.md                       | 199 +++++
 tests/cpusets/test-cpusets.sh                 | 732 ++++++++++++++++++
 tests/e2e/loads.t                             |   6 +-
 tests/e2e/measurement.t                       |   4 +-
 tests/regression/README.md                    | 155 ++++
 .../mock-cyclictest-partial-output.py         | 165 ++++
 .../mock-rtla-timerlat-partial-output.py      | 138 ++++
 .../test-cyclictest-error-handling.sh         | 225 ++++++
 .../test-timerlat-error-handling.sh           | 228 ++++++
 run_tests.sh => tests/run_tests.sh            |  10 +-
 tests/test_core_sharing_validation.py         | 155 ++++
 17 files changed, 2318 insertions(+), 363 deletions(-)
 delete mode 100644 test_full_validation.py
 create mode 100644 tests/cpusets/README.md
 create mode 100755 tests/cpusets/test-cpusets.sh
 create mode 100644 tests/regression/README.md
 create mode 100755 tests/regression/mock-cyclictest-partial-output.py
 create mode 100755 tests/regression/mock-rtla-timerlat-partial-output.py
 create mode 100755 tests/regression/test-cyclictest-error-handling.sh
 create mode 100755 tests/regression/test-timerlat-error-handling.sh
 rename run_tests.sh => tests/run_tests.sh (87%)
 create mode 100755 tests/test_core_sharing_validation.py

--
2.54.0