Re: [PATCH v4 linux-kselftest-test 3/6] kunit: allow kunit tests to be loaded as a module

From: Brendan Higgins
Date: Tue Nov 19 2019 - 14:16:28 EST


On Fri, Nov 15, 2019 at 2:16 AM Alan Maguire <alan.maguire@xxxxxxxxxx> 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).

Hmm...should we maybe apply this naming scheme to all the tests then?
I think Kees might have suggested this. I am actually not sure whether
or not we should and would like to get other people's input.

It is a valid point that test-test or example-test are too general of
names for modules, but if this is the case, I think that inode-test is
probably too general as well. But if we are going that far, maybe we
should rename everything *-kunit-test.c.

> Signed-off-by: Alan Maguire <alan.maguire@xxxxxxxxxx>
> Signed-off-by: Knut Omang <knut.omang@xxxxxxxxxx>
> ---
> 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 | 88 -----------
> lib/kunit/kunit-example-test.c | 90 +++++++++++
> lib/kunit/kunit-test.c | 334 +++++++++++++++++++++++++++++++++++++++++
> lib/kunit/string-stream-test.c | 2 +-
> lib/kunit/test-test.c | 333 ----------------------------------------
> lib/kunit/test.c | 8 +
> lib/kunit/try-catch.c | 2 +
> lib/list-test.c | 4 +-
> 17 files changed, 494 insertions(+), 443 deletions(-)
> delete mode 100644 lib/kunit/example-test.c
> create mode 100644 lib/kunit/kunit-example-test.c
> create mode 100644 lib/kunit/kunit-test.c
> delete mode 100644 lib/kunit/test-test.c