On 27. 08. 25, 0:51, Abhinav Saxena wrote:
This patch series introduces a KUnit testing framework for the TTY
subsystem, enabling deterministic, automated testing of TTY drivers and
core functionality without requiring hardware or userspace interaction.

On an x86_64 build with CONFIG_GCOV enabled, these tests increased
TTY subsystem coverage to approximately 10.6% line coverage and
14.7% function coverage [1].

Problem Statement
-----------------
Testing TTY drivers today requires:
- User-space interaction through device nodes
- Complex setup with ptys or real hardware
- Limited ability to test error paths reliably and deterministically

This series solves these issues by providing in-kernel KUnit tests that
exercise real TTY core paths under controlled, deterministic conditions.

What This Series Provides
-------------------------
1. Reusable test helpers (`tty_test_helpers.h`):
    - Minimal (~150 LOC) infrastructure that any TTY driver should be
    able to use
    - Automatic resource management
    - Integrated into core files under KUnit guard, with
      `EXPORT_SYMBOL_IF_KUNIT()` to keep the production symbol table
      clean

2. Mock TTY driver:
    - Demonstrates how drivers can leverage the helpers
    - Enables deterministic scenarios without hardware

3. Core TTY tests:
    - Validate open/close/read/write/termios paths
    - Exercise hangup, resize, and error handling
    - Ensure real kernel paths are tested, not mocked stubs

4. ttynull driver tests:
    - Validate data sink behavior of the null driver
    - Provide a minimal driver contract baseline

5. Optional coverage support:
    - GCOV integration for test coverage analysis

Future Work
-----------
With this foundation merged, follow-up work can:
- Add more coverage of TTY core functions
- Enable each TTY driver to maintain its own KUnit suite
- Introduce stress tests and race detection
- Extend to include more tests for other tty drivers:
   - UART drivers: test interrupt handling without hardware
   - USB serial: validate disconnect and reconnect sequences
   - PTY drivers: test resize, flow control, and hangups
   - Virtual consoles: test Unicode and input handling
Testing
-------
- All patches pass `checkpatch.pl`
- Verified on x86_64 with:
     ./tools/testing/kunit/kunit.py run \
         --kunitconfig=.kunit/ \
         --kunitconfig=drivers/tty/tests/.kunitconfig \
         --arch=x86_64
- All tests pass (working around tty_read wrapper in progress)

Feedback welcome! :)

Wow, looks good. Has it found something yet :)?


FWIW
Reviewed-by: Jiri Slaby <[email protected]>

thanks,
--
js
suse labs

Reply via email to