This series introduces a comprehensive test suite for the SCHED_DEADLINE
scheduler, providing coverage for core functionality, bandwidth admission
control, and the fair_server (dl-server) mechanism.

I've been playing with/using this set of tests for a while and they
helped me a little checking for regressions and corner cases. So, I
guess I've also now found the courage to share this with everyone and
see what happens. :P

Motivation
----------
SCHED_DEADLINE currently lacks dedicated test coverage in kselftest.
While the scheduler itself is well-tested in production, having automated
tests helps catch regressions during development and provides examples of
correct SCHED_DEADLINE usage for developers.

Development Process
-------------------
This series was developed using Claude Code (claude.ai/code), making it
both a testing improvement and an experiment in itself. The goal is to
explore what AI-assisted development can contribute to kernel testing
efforts - from framework design to test implementation to documentation.

All code has been reviewed and validated by the human maintainer, but the
bulk of the implementation, test design, and even this cover letter were
produced through iterative collaboration with Claude. This represents an
experiment in whether AI tools can help scale testing efforts while
maintaining code quality and kernel development standards.

Feedback on both the test suite itself and this development approach is
welcome.

Design
------
The test framework follows the pattern established by sched_ext selftests,
using ELF constructors for automatic test registration. This allows tests
to be self-contained and easily extensible - new tests are added simply by
defining a struct dl_test and calling REGISTER_DL_TEST().

The suite includes a utility library (dl_util) that provides reusable
helpers for common operations: setting SCHED_DEADLINE parameters, managing
bandwidth, controlling CPU topology, and process management.

Series Overview
---------------
Patch 1: Framework infrastructure with test discovery and structured output
Patch 2: Utility library and cpuhog helper program
Patch 3: Integration with kselftest build system
Patch 4: Basic functionality tests (scheduling, parameter validation)
Patch 5: Bandwidth admission control tests
Patch 6: fair_server (dl-server) tests
Patch 7: Regression test for ENQUEUE_REPLENISH bug

Testing
-------
All tests pass on x86_64 with both VM and bare-metal systems. The tests
adapt automatically to system configuration, detecting available bandwidth
and dl-server bandwidth allocations dynamically.

Tests can be run via:
  make -C tools/testing/selftests TARGETS=sched run_tests
  make -C tools/testing/selftests/sched/deadline run_tests

Or selectively:
  cd tools/testing/selftests/sched/deadline
  make
  ./runner -h

Current test results:
  PASSED:  7
  SKIPPED: 0
  FAILED:  0

Series also available at

[email protected]:jlelli/linux.git deadline-kselftests-rfc

Signed-off-by: Juri Lelli <[email protected]>
---
Juri Lelli (7):
      selftests/sched: Add SCHED_DEADLINE test framework infrastructure
      selftests/sched: Add SCHED_DEADLINE utility library
      selftests/sched: Integrate SCHED_DEADLINE tests into kselftest framework
      selftests/sched: Add basic SCHED_DEADLINE functionality tests
      selftests/sched: Add SCHED_DEADLINE bandwidth tests to kselftest
      selftests/sched: Add SCHED_DEADLINE fair_server tests to kselftest
      selftests/sched: Add SCHED_DEADLINE ENQUEUE_REPLENISH bug test

 tools/testing/selftests/sched/Makefile             |   8 +
 tools/testing/selftests/sched/deadline/.gitignore  |   3 +
 tools/testing/selftests/sched/deadline/Makefile    |  54 +++
 tools/testing/selftests/sched/deadline/bandwidth.c | 270 +++++++++++
 tools/testing/selftests/sched/deadline/basic.c     | 127 +++++
 tools/testing/selftests/sched/deadline/cpuhog.c    | 107 +++++
 tools/testing/selftests/sched/deadline/dl_test.h   | 238 +++++++++
 tools/testing/selftests/sched/deadline/dl_util.c   | 530 +++++++++++++++++++++
 tools/testing/selftests/sched/deadline/dl_util.h   | 294 ++++++++++++
 .../testing/selftests/sched/deadline/fair_server.c | 260 ++++++++++
 .../selftests/sched/deadline/replenish_bug.c       | 337 +++++++++++++
 tools/testing/selftests/sched/deadline/runner.c    | 219 +++++++++
 12 files changed, 2447 insertions(+)
---
base-commit: d658686a1331db3bb108ca079d76deb3208ed949
change-id: 20260306-upstream-deadline-kselftests-f7357ae20166

Best regards,
--  
Juri Lelli <[email protected]>


Reply via email to