On Tue, 3 Dec 2019, Theodore Y. Ts'o wrote:
On Tue, Dec 03, 2019 at 09:54:25AM -0800, Brendan Higgins wrote:
On Tue, Dec 3, 2019 at 4:08 AM Alan Maguire alan.maguire@oracle.com wrote:
As tests are added to kunit, it will become less feasible to execute all built tests together. By supporting modular tests we provide a simple way to do selective execution on a running system; specifying
CONFIG_KUNIT=y CONFIG_KUNIT_EXAMPLE_TEST=m
...means we can simply "insmod example-test.ko" to run the tests.
To achieve this we need to do the following:
o export the required symbols in kunit o string-stream tests utilize non-exported symbols so for now we skip building them when CONFIG_KUNIT_TEST=m. o support a new way of declaring test suites. Because a module cannot do multiple late_initcall()s, we provide a kunit_test_suites() macro to declare multiple suites within the same module at once. o some test module names would have been too general ("test-test" and "example-test" for kunit tests, "inode-test" for ext4 tests); rename these as appropriate ("kunit-test", "kunit-example-test" and "ext4-inode-test" respectively).
Co-developed-by: Knut Omang knut.omang@oracle.com Signed-off-by: Knut Omang knut.omang@oracle.com Signed-off-by: Alan Maguire alan.maguire@oracle.com
Reviewed-by: Brendan Higgins brendanhiggins@google.com
Acked-by: Theodore Ts'o tytso@mit.edu # for ext4 bits
Thanks for taking a look!
I do have one question, out of curiosity --- for people who aren't using UML to run Kunit tests, and are either running the kunit tests during boot, or when the module is loaded, is there the test framework to automatically extract the test reports out of dmesg?
I can boot a kernel with kunit tests enabled using kvm, and I see it splatted intermixed with the rest of the kernel boot messages. This is how I tested the 32-bit ext4 inode test fix. But I had to manually find the test output. Is that the expected way people are supposed to be using Kunit tests w/o using UML and the python runner?
Looks like Brendan's got something coming to resolve this; I've also got a patch that I was hoping to send out soon that might help. The idea is that each test suite would create a debugfs representation under /sys/kernel/debug/kunit; specifically:
/sys/kernel/debug/kunit/results/<suite> /sys/kernel/debug/kunit/results/<suite>-tests
...where cat'ing the former shows the full set of results, and the latter is a directory within which we can display individual test results in test-case-specific files.
This is all done by ensuring that when tests log information, they log to a per-test-case log buffer as well as to dmesg.
If the above sounds useful, I'll try and polish up the patch for submission. Thanks!
Alan
Thanks,
- Ted