Hi! Jiri Slaby <[email protected]> writes:
> 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 :)? > Not yet. But I am kinda excited about having fixture based tests which can be applied to different tty drivers and test things like race conditions, CVE-class vulnerabilities, edge cases among other things. One step at a time, I guess :) > > FWIW > Reviewed-by: Jiri Slaby <[email protected]> > > thanks, Thanks for the review! -Abhinav
