On Thu, May 09, 2019 at 04:20:05PM -0600, Logan Gunthorpe wrote:
The second item, arguably, does have significant overlap with kselftest.
Whether you are running short tests in a light weight UML environment or
higher level tests in an heavier VM the two could be using the same
framework for writing or defining in-kernel tests. It *may* also be valuable
for some people to be able to run all the UML tests in the heavy VM
environment along side other higher level tests.
Looking at the selftests tree in the repo, we already have similar items to
what Kunit is adding as I described in point (2) above. kselftest_harness.h
contains macros like EXPECT_* and ASSERT_* with very similar intentions to
the new KUNIT_EXECPT_* and KUNIT_ASSERT_* macros.
However, the number of users of this harness appears to be quite small. Most
of the code in the selftests tree seems to be a random mismash of scripts
and userspace code so it's not hard to see it as something completely
different from the new Kunit:
$ git grep --files-with-matches kselftest_harness.h *
To the extent that we can unify how tests are written, I agree that
this would be a good thing. However, you should note that
kselftest_harness.h is currently assums that it will be included in
userspace programs. This is most obviously seen if you look closely
at the functions defined in the header files which makes calls to
fork(), abort() and fprintf().
So Kunit can't reuse kselftest_harness.h unmodified. And whether or
not the actual implementation of the header file can be reused or
refactored, making the unit tests use the same or similar syntax would
be a good thing.