Test driven development (TDD) in the kernel

*

One Line Summary

Test driven development is a proven concept for user land
projects, and is as far as I have seen to some extent used for kernel development,
but is currently limited to what can be tested from user land, either via system call interfaces
or by creating mock environments to compile selected kernel code in user land.
Testing for instance kernel internal algorithms or usage of them, such as rbtrees, radix trees or sg lists cannot easily be
done this way. Also, once the test is in kernel code, there are some very interesting low hanging
opportunities such as for instance error injection and simple code coverage.
I'd like to demonstrate a tool I created for this purpose, and that we develop and use
internally in Oracle. It will be made available on Github for people to look at ahead of this
unconference. I submitted a talk proposal for this, but it did not reach up, but I modestly think
it is such a simple and good idea that I simply cannot wait yet another year without talking about it!

Abstract

Test driven development is a proven concept for user land
projects, and is as far as I have seen to some extent used for kernel development,
but is currently limited to what can be tested from user land, either via system call interfaces
or by creating mock environments to compile selected kernel code in user land.
Testing for instance kernel internal algorithms or usage of them, such as rbtrees, radix trees or sg lists cannot easily be
done this way. Also, once the test is in kernel code, there are some very interesting low hanging
opportunities such as for instance error injection and simple code coverage.
I’d like to demonstrate a tool I created for this purpose, and that we develop and use
internally in Oracle. It will be made available on Github for people to look at ahead of this
unconference. I submitted a talk proposal for this, but it did not reach up, but I modestly think
it is such a simple and good idea that I simply cannot wait yet another year without talking about it!

Speaker

  • Biography

    Knut Omang has had a relationship with Unix and Linux since the mid-eighties. He wrote a Ph.D and collaborated on a driver for SCI (Scalable Coherent Interface) based I/O adapters, an early predecessor of today’s RDMA devices. For the last years he was the lead developer for the driver for an Infiniband HCA developed by Oracle.
    He currently works for the Oracle Linux Kernel networking group.