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
fs/ext4/Kconfig | 2 +- fs/ext4/Makefile | 5 ++++ fs/ext4/inode-test.c | 4 ++- include/kunit/test.h | 35 +++++++++++++++------- kernel/sysctl-test.c | 4 ++- lib/Kconfig.debug | 4 +-- lib/kunit/Kconfig | 4 +-- lib/kunit/Makefile | 10 +++++-- lib/kunit/assert.c | 8 +++++ lib/kunit/{example-test.c => kunit-example-test.c} | 4 ++- lib/kunit/{test-test.c => kunit-test.c} | 5 ++-- lib/kunit/string-stream-test.c | 2 +- lib/kunit/test.c | 8 +++++ lib/kunit/try-catch.c | 2 ++ lib/list-test.c | 4 ++- 15 files changed, 76 insertions(+), 25 deletions(-) rename lib/kunit/{example-test.c => kunit-example-test.c} (97%) rename lib/kunit/{test-test.c => kunit-test.c} (98%)
Ted, David, and Iurii, can you each review/ack for the bits that each of you own?
Thanks for all your hard work on this Alan!