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 handlingTesting------- - 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
